SQL DEFAULT 约束
在 SQL 中,DEFAULT 约束用于为列指定默认值。如果在插入新行时未提供该列的值,将使用指定的默认值。以下是使用 DEFAULT 约束的一些示例:在创建表时使用 DEFAULT:CREATE TABLE employees ( employee_id INT PRIMARY KEY, employee_name VARCHAR(255) DEFAULT 'Unknown', employee_salary DECIMAL(10, 2) DEFAULT 0.00);在这个例子中,employee_name 列的默认值是 'Unknown',employee_salary 列的默认值是 0.00。如果在插入新行时未提供这两列的值,将使用默认值。在修改表时添加 DEFAULT 约束:-- 在已有的表中添加 DEFAULT 约束ALTER TABLE employeesALTER COLUMN employee_name SET DEFAULT 'Unknown';这里使用 ALTER TABLE 语句为已有的表 employees 添加 DEFAULT 约束。默认值的...
SQL FOREIGN KEY 约束
在 SQL 中,FOREIGN KEY 约束用于定义表与表之间的关系,确保一个表中的外键与另一个表中的主键相匹配。这样的关系通常用于建立表之间的连接。以下是使用 FOREIGN KEY 约束的一些示例:在创建表时使用 FOREIGN KEY:CREATE TABLE orders ( order_id INT PRIMARY KEY, product_id INT, customer_id INT, FOREIGN KEY (product_id) REFERENCES products(product_id), FOREIGN KEY (customer_id) REFERENCES customers(customer_id));在这个例子中,orders 表包含两个外键:product_id 参考自 products 表的 product_id 主键,customer_id 参考自 customers 表的 customer_id 主键。这表示 orders 表中的每个订单必须与 products 表中的产品和 customers 表中的客户相关联。...
SQL PRIMARY KEY 约束
在 SQL 中,PRIMARY KEY 约束用于唯一标识表中的每一行,并确保该列中的值不包含 NULL。PRIMARY KEY 约束可以是单一列,也可以是多列的组合。以下是使用 PRIMARY KEY 约束的一些示例:在创建表时使用 PRIMARY KEY:CREATE TABLE students ( student_id INT PRIMARY KEY, student_name VARCHAR(255), student_age INT);在这个例子中,student_id 列被定义为 PRIMARY KEY,表示它将唯一标识 students 表中的每一行。在修改表时添加 PRIMARY KEY 约束:-- 在已有的表中添加 PRIMARY KEY 约束ALTER TABLE studentsADD CONSTRAINT pk_students PRIMARY KEY (student_id);这里使用 ALTER TABLE 语句为已有的表 students 添加 PRIMARY KEY 约束。在多列上使用 PRIMARY KEY 约束:CREATE TAB...
SQL UNIQUE 约束
在 SQL 中,UNIQUE 约束用于确保表中某列或一组列的值是唯一的,即不允许重复值。这样可以确保表中的数据保持一定的完整性。以下是使用 UNIQUE 约束的一些示例:在创建表时使用 UNIQUE:CREATE TABLE products ( product_id INT PRIMARY KEY, product_name VARCHAR(255) UNIQUE, supplier_id INT, -- 其他列...);在这个例子中,product_name 列被定义为 UNIQUE,这意味着表中的每个产品名称必须是唯一的。在修改表时添加 UNIQUE 约束:-- 在已有的表中添加 UNIQUE 约束ALTER TABLE productsADD CONSTRAINT unique_product_name UNIQUE (product_name);这里使用 ALTER TABLE 语句来为已有的表 products 添加 UNIQUE 约束,确保 product_name 列的值是唯一的。在多列上使用 UNIQUE 约束:CREATE TABLE ord...
SQL NOT NULL 约束
在 SQL 中,NOT NULL 约束是一种用于确保表中特定列不包含 NULL 值的约束。NOT NULL 约束在列的定义中使用,以防止在插入或更新数据时将 NULL 值插入到这列中。以下是使用 NOT NULL 约束的示例:在创建表时使用 NOT NULL:CREATE TABLE employees ( employee_id INT PRIMARY KEY, employee_name VARCHAR(255) NOT NULL, employee_salary DECIMAL(10, 2) NOT NULL);在这个例子中,employee_name 和 employee_salary 列都被定义为 NOT NULL,这意味着在插入新行时,这两列必须包含有效的值,而不能为 NULL。在修改表时添加 NOT NULL 约束:-- 在已有的表中添加 NOT NULL 约束ALTER TABLE employeesALTER COLUMN employee_name VARCHAR(255) NOT NULL;-- 或者在同时添加新列的情况下ALTER TABLE ...
SQL 约束
在 SQL 中,约束(Constraints)是用于定义表中数据的规则的规范。这些规则帮助确保数据库的数据完整性,防止不符合预期的数据插入或更新。以下是几种常见的 SQL 约束类型:1. 主键约束(Primary Key Constraint): - 用于唯一标识表中的每一行数据。 - 主键列不能包含 NULL 值。 - 一个表只能有一个主键。 CREATE TABLE students ( student_id INT PRIMARY KEY, student_name VARCHAR(255) );2. 外键约束(Foreign Key Constraint): - 用于确保两个表之间的关系。 - 外键通常是另一表的主键。 - 外键可以包含 NULL 值,表示未知的关联。 CREATE TABLE orders ( order_id INT PRIMARY KEY, product_id INT, FOREIGN KEY (product_id) REFERENCES products(...
SQL Aliases 别名
在SQL中,别名(Alias)用于为表名或列名指定临时的名称,以使 SQL 语句更易读或简化。别名可以在查询中使用,使得结果集的列名更清晰或减少输入的字符数。以下是在 SQL 中使用别名的示例:表别名:-- 使用表别名SELECT e.employee_id, e.employee_name, d.department_nameFROM employees AS eJOIN departments AS d ON e.department_id = d.department_id;在这个例子中,employees 表被赋予了别名 e,departments 表被赋予了别名 d。在查询中,我们使用这些别名来引用表,使 SQL 语句更简洁。列别名:-- 使用列别名SELECT employee_id AS ID, employee_name AS Name, salary * 12 AS AnnualSalaryFROM employees;在这个例子中,employee_id 列被赋予了别名 ID,employee_name 列被赋予了别名 Name,salary * 12 表达式的结果...
SQL NULL 值 – IS NULL 和 IS NOT NULL
在SQL中,NULL 用于表示缺少值或未知值。要检查一个列是否包含 NULL 值,可以使用 IS NULL 或 IS NOT NULL 条件。以下是它们的使用示例:IS NULL:IS NULL 用于检查列是否包含 NULL 值。-- 查询包含 NULL 值的记录SELECT column1, column2FROM your_tableWHERE column1 IS NULL;在这个例子中,column1 列包含 NULL 值的记录将被检索出来。IS NOT NULL:IS NOT NULL 用于检查列是否不包含 NULL 值。-- 查询不包含 NULL 值的记录SELECT column1, column2FROM your_tableWHERE column1 IS NOT NULL;这将检索出 column1 列不包含 NULL 值的记录。示例:假设有一个表 employees,其中有一个 salary 列,你想找到具有空薪水值的员工以及具有非空薪水值的员工。你可以使用以下查询:-- 查询薪水值为 NULL 的员工SELECT employee_id, employee_na...
SQL Server 和 MySQL 中的 Date 函数
在SQL Server 和 MySQL 中,都提供了一系列用于处理日期和时间的内置函数。以下是在两个数据库系统中常用的日期函数的一些示例:SQL Server Date Functions:1. GETDATE(): 获取当前日期和时间。 SELECT GETDATE() AS CurrentDateTime;2. DATEADD(): 在日期上添加或减去指定的时间间隔。 SELECT DATEADD(DAY, 7, GETDATE()) AS OneWeekLater;3. DATEDIFF(): 计算两个日期之间的时间间隔。 SELECT DATEDIFF(MONTH, '2022-01-01', '2023-01-01') AS MonthsDifference;4. FORMAT(): 格式化日期。 SELECT FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm:ss') AS FormattedDateTime;MySQL Date Functions:1. NOW(): 获取当前日期和时间。 SELECT NOW...
SQL CREATE VIEW、REPLACE VIEW、 DROP VIEW 语句
在SQL中,CREATE VIEW、REPLACE VIEW和DROP VIEW是用于处理视图(View)的语句。以下是它们的简要说明:1. CREATE VIEW: CREATE VIEW语句用于创建一个视图,视图是一个虚拟表,它是基于一个或多个表的查询结果。视图本身并不包含实际的数据,而是动态地从基表中检索数据。 CREATE VIEW view_name AS SELECT column1, column2, ... FROM table1 WHERE condition; 例如: CREATE VIEW employee_view AS SELECT emp_id, emp_name, emp_salary FROM employees WHERE emp_department = 'IT';2. REPLACE VIEW: REPLACE VIEW语句用于替换已经存在的视图。它的语法与CREATE VIEW类似,但是如果视图已经存在,REPLACE VIEW将替换掉原有的定义。 CREATE OR REPLACE VIEW vi...
SQL AUTO INCREMENT 字段
在SQL中,AUTO_INCREMENT 是一种用于创建自增长字段(通常是主键)的属性。这个属性通常与整数数据类型一起使用,以确保每次插入新记录时,该字段的值会自动递增。在不同的数据库管理系统中,AUTO_INCREMENT 的用法可能有所不同。以下是在一些流行的数据库系统中使用 AUTO_INCREMENT 的示例:1. MySQL / MariaDB: 在MySQL和MariaDB中,使用 AUTO_INCREMENT 属性来创建自增长字段。例如: CREATE TABLE example_table ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) ); 在这个例子中,id 字段被定义为自增长字段,每次插入新记录时,该字段的值将自动递增。2. SQL Server: 在SQL Server中,可以使用 IDENTITY 属性来实现类似的功能: CREATE TABLE example_table ( id INT IDENTITY(1,1) PRIMARY...
SQL ALTER TABLE 语句
ALTER TABLE 语句用于修改已经存在的表的结构。你可以使用 ALTER TABLE 语句进行多种操作,如添加列、删除列、修改列的数据类型,以及定义约束等。以下是一些常见的 ALTER TABLE 操作:1. 添加列:ALTER TABLE table_nameADD column_name datatype;2. 删除列:ALTER TABLE table_nameDROP COLUMN column_name;3. 修改列的数据类型:ALTER TABLE table_nameALTER COLUMN column_name new_datatype;4. 修改列名:ALTER TABLE table_nameRENAME COLUMN old_column_name TO new_column_name;5. 添加主键:ALTER TABLE table_nameADD PRIMARY KEY (column_name);6. 删除主键:ALTER TABLE table_nameDROP CONSTRAINT constraint_name;7. 添加外键:ALTER T...
SQL CREATE TABLE 语句
CREATE TABLE 语句用于在数据库中创建一个新的表。具体的语法可能有所不同,因为不同的数据库管理系统(如 MySQL、PostgreSQL、SQL Server 等)可能有不同的实现。以下是通用的 CREATE TABLE 语法:CREATE TABLE table_name ( column1 datatype1, column2 datatype2, ...);其中: table_name 是要创建的表的名称。 column1, column2, ... 是表中的列。 datatype1, datatype2, ... 是每列的数据类型。示例:1. 在 MySQL 中创建表:CREATE TABLE employees ( employee_id INT, employee_name VARCHAR(100), department_id INT, hire_date DATE);2. 在 PostgreSQL 中创建表:CREATE TABLE employees ( employee_id INT, employee...
SQL CREATE DATABASE 语句
CREATE DATABASE 语句用于在数据库管理系统中创建一个新的数据库。具体的语法可能有所不同,因为不同的数据库管理系统(如 MySQL、PostgreSQL、SQL Server 等)可能有不同的实现。以下是通用的 CREATE DATABASE 语法:CREATE DATABASE database_name;其中: database_name 是要创建的数据库的名称。示例:1. 在 MySQL 中创建数据库:CREATE DATABASE mydatabase;2. 在 PostgreSQL 中创建数据库:CREATE DATABASE mydatabase;3. 在 SQL Server 中创建数据库:CREATE DATABASE mydatabase;请注意,这只是基本的语法示例。在实际使用中,你可能还需要指定其他参数,例如字符集、校对规则等,具体取决于你使用的数据库管理系统。在执行 CREATE DATABASE 语句之前,请确保你有足够的权限来创建数据库,并且选择一个唯一的数据库名称,以避免与现有的数据库冲突。
SQL 撤销索引、表以及数据库
在 SQL 中,撤销索引、表以及数据库通常涉及使用 DROP 语句。请注意,在执行这些操作之前,请确保你真的希望永久删除这些对象,因为它们的删除是不可逆的。撤销索引:要删除表上的索引,你可以使用 DROP INDEX 语句。例如:-- 删除名为 index_name 的索引DROP INDEX index_name ON table_name;撤销表:要删除表,你可以使用 DROP TABLE 语句。例如:-- 删除名为 table_name 的表DROP TABLE table_name;撤销数据库:要删除整个数据库,你可以使用 DROP DATABASE 语句。请注意,这将删除数据库及其所有相关的表、视图、存储过程等。-- 删除名为 database_name 的数据库DROP DATABASE database_name;在执行这些语句之前,请确保你真的希望删除这些对象,并且已经备份了重要的数据,以防不小心删除了不应该删除的内容。注意:具体的 SQL 语法可能会有所不同,具体取决于你使用的数据库管理系统。上述示例是通用的语法,如果你使用的是特定的数据库系统(如 MySQL、Pos...
SQL INSERT INTO SELECT 语句
INSERT INTO SELECT 语句用于从一个表中选择数据,并将其插入到另一个表中。它可以用于将一个表中的特定数据复制到另一个表,也可以用于在同一表中进行数据复制或移动。以下是其基本语法:INSERT INTO destination_table (column1, column2, ...)SELECT column1, column2, ...FROM source_tableWHERE condition;其中: destination_table: 目标表,即数据将要插入的表。 column1, column2, ...: 目标表中的列,用于指定将要插入数据的列。 source_table: 源表,即数据的来源。 condition: 用于筛选源表中数据的条件。示例:1. 将一个表中的数据插入到另一个表:-- 将 "employees" 表中部门编号为 10 的员工数据插入到 "new_employees" 表中INSERT INTO new_employees (employee_id, employee_name, department_id)SELECT emplo...
SQL SELECT INTO 语句
在 SQL 中,SELECT INTO 语句通常用于创建新表并将查询结果插入该表。它的语法可以用于从一个表中选择数据并将其插入到新表中,也可以用于在同一表中进行选择和插入。需要注意的是,具体的实现方式可能因数据库管理系统而异。创建新表并插入数据:SELECT column1, column2, ...INTO new_tableFROM old_tableWHERE condition; column1, column2, ...: 要选择的列。 new_table: 要创建的新表。 old_table: 要从中选择数据的旧表。 condition: 用于过滤数据的条件。在同一表中进行选择和插入:SELECT column1, column2, ...INTO new_tableFROM old_tableWHERE condition;在这种情况下,new_table 和 old_table 可以是同一个表。示例:1. 创建新表并插入数据:-- 创建新表 "new_employees",并将 "employees" 表中满足条件的数据插入SELECT employee_id, emp...
SQL UNION 运算符
UNION 运算符用于合并两个或多个 SELECT 语句的结果集,并返回唯一的行。它会自动去重,确保结果集中没有重复的行。UNION 运算符的基本语法如下:SELECT columns FROM table1UNIONSELECT columns FROM table2;其中: columns 是你要选择的列。 table1 和 table2 是要合并结果的两个或多个表,它们的列数和列的数据类型必须一致。示例:假设有两个表 employees1 和 employees2,包含相同结构的员工信息。我们可以使用 UNION 将它们的结果合并:-- 注意:两个 SELECT 语句的列数和数据类型必须一致SELECT employee_id, employee_name FROM employees1UNIONSELECT employee_id, employee_name FROM employees2;在这个例子中,UNION 合并了两个表的结果,确保最终的结果集中不包含重复的员工信息。要注意的是,UNION 运算符会自动执行去重操作,如果你希望保留所有行(包括重复行),可以使用 UNI...
SQL 自连接
自连接(Self Join)是指在单个表内进行连接,连接表的两个实例,即将表与自身进行连接。为了在自连接中区分两个表的实例,通常使用别名(alias)来指定不同的表名。自连接通常用于在同一表中查找相关的数据关系。基本的自连接语法如下:SELECT t1.column1, t1.column2, ..., t2.column1, t2.column2, ...FROM table_name t1JOIN table_name t2 ON t1.related_column = t2.related_column;其中: table_name 是要连接的表。 t1 和 t2 是表的别名,用于区分两个表的实例。 related_column 是连接的条件,表示两个表中用于匹配的列。示例:假设有一个表 employees 包含员工的信息,其中有一列 manager_id 表示员工的直接经理。我们可以使用自连接查找每个员工及其直接经理的信息:SELECT e.employee_id, e.employee_name, e.manager_id, m.employee_name AS manage...
SQL 完整外部连接
完整外部连接(Full Outer Join),也称为全连接(Full Join),是 SQL 中的一种连接类型,它返回两个表中的所有行,无论是否有匹配的行。如果某个表中没有匹配的行,将会显示 NULL 值。完整外部连接的基本语法如下:SELECT columnsFROM table1FULL JOIN table2 ON table1.column = table2.column;其中: columns 是你要选择的列。 table1 和 table2 是要连接的表。 column 是连接的条件,表示两个表中用于匹配的列。示例:假设有两个表 employees 和 departments,我们可以使用完整外部连接查找每个雇员所在的部门,以及任何没有匹配的雇员或部门:SELECT employees.employee_id, employees.employee_name, departments.department_nameFROM employeesFULL JOIN departments ON employees.department_id = departments.dep...