SQL常用命令
常用 SQL 语句用法清单。
查询语句
SELECT
# 基本信息 命令名称: SELECT 功能描述: SELECT语句用于从数据库表中查询数据 分类: 查询语句 标签: 查询, 检索, 数据, 基础 # 语法格式 `SELECT column1, column2, ... FROM table_name [WHERE condition] [ORDER BY column] [LIMIT n];` # 常用选项 | :-- | :-- | | 参数 | 描述 | | * | 选择所有列 | | DISTINCT | 去除重复记录 | | AS | 为列或表指定别名 | # 注意事项 SELECT是SQL最基本的查询语句 支持各种条件过滤和排序 可以与JOIN、WHERE、GROUP BY等子句组合 使用*会查询所有列,生产环境建议指定列名
WHERE
# 基本信息 命令名称: WHERE 功能描述: WHERE子句用于筛选满足特定条件的记录 分类: 查询语句 标签: 筛选, 条件, 过滤, 基础 # 语法格式 `SELECT column1, column2, ... FROM table_name WHERE condition;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | = | 等于 | | != 或 <> | 不等于 | | > | 大于 | | < | 小于 | | >= | 大于等于 | | <= | 小于等于 | | LIKE | 模式匹配 | | IN | 指定范围内的值 | | BETWEEN | 指定范围 | | IS NULL | 判断是否为空值 | # 注意事项 WHERE子句用于限制查询结果的条件 通常与SELECT、UPDATE、DELETE语句一起使用 WHERE子句中的条件可以使用AND、OR、NOT逻辑运算符连接 字符串比较时注意大小写敏感性
JOIN
# 基本信息 命令名称: JOIN 功能描述: JOIN子句用于连接多个表的数据 分类: 查询语句 标签: 连接, 关联, 多表, 基础 # 语法格式 `SELECT column1, column2, ... FROM table1 JOIN table2 ON table1.column = table2.column;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | INNER JOIN | 内连接,返回两个表中都有的记录 | | LEFT JOIN | 左外连接,返回左表的所有记录 | | RIGHT JOIN | 右外连接,返回右表的所有记录 | | FULL OUTER JOIN | 全外连接,返回两个表中的所有记录 | # 注意事项 JOIN是处理多表关联查询的重要方式 INNER JOIN是最常用的连接类型 LEFT JOIN会包含左表的所有记录,即使右表没有对应记录 连接条件必须在ON子句中明确指定
GROUP BY
# 基本信息 命令名称: GROUP BY 功能描述: GROUP BY子句用于对查询结果进行分组 分类: 查询语句 标签: 分组, 统计, 聚合, 基础 # 语法格式 `SELECT column1, aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1, column2;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | 一个或多个列 | 按指定列进行分组 | | 聚合函数 | COUNT(), SUM(), AVG(), MAX(), MIN()等 | # 注意事项 GROUP BY常与聚合函数一起使用 GROUP BY子句必须包含SELECT子句中非聚合函数的所有列 通常在WHERE子句之后,在ORDER BY子句之前 分组后每组只返回一行结果
ORDER BY
# 基本信息 命令名称: ORDER BY 功能描述: ORDER BY子句用于对查询结果进行排序 分类: 查询语句 标签: 排序, 升序, 降序, 基础 # 语法格式 `SELECT column1, column2, ... FROM table_name [WHERE condition] [ORDER BY column] LIMIT n [OFFSET m];` # 常用选项 | :-- | :-- | | 参数 | 描述 | | ASC | 升序排列(默认) | | DESC | 降序排列 | | 一个或多个列 | 按指定列进行排序 | # 注意事项 ORDER BY子句用于对查询结果进行排序 ASC表示升序,DESC表示降序 可以按多个列进行排序,优先级从前到后 排序会影响查询性能,大数据量时需谨慎使用
LIMIT
# 基本信息 命令名称: LIMIT 功能描述: LIMIT子句用于限制查询结果的数量 分类: 查询语句 标签: 限制, 分页, 性能, 优化 # 语法格式 `SELECT column1, column2, ... FROM table_name [WHERE condition] [ORDER BY column] LIMIT n [OFFSET m];` # 常用选项 | :-- | :-- | | 参数 | 描述 | | n | 返回前n条记录 | | OFFSET m | 跳过m条记录开始返回 | # 注意事项 LIMIT用于控制返回结果的数量 常用于实现分页功能 与ORDER BY结合使用可确保结果的一致性 不同数据库系统语法可能略有差异(如SQL Server使用TOP)
DISTINCT
# 基本信息 命令名称: DISTINCT 功能描述: DISTINCT关键字用于去除查询结果中的重复记录 分类: 查询语句 标签: 去重, 唯一, 重复, 过滤 # 语法格式 `SELECT DISTINCT column1, column2, ... FROM table_name WHERE condition;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | 单个列 | 根据该列去重 | | 多个列 | 根据多个列的组合去重 | # 注意事项 DISTINCT会返回唯一不重复的记录 对多个列使用时,是基于这些列的组合值进行去重 DISTINCT会影响查询性能,大数据量时需谨慎使用 NULL值在去重时会被视为相同值
UNION
# 基本信息 命令名称: UNION 功能描述: UNION操作符用于合并两个或多个SELECT语句的结果集 分类: 查询语句 标签: 合并, 结果集, 联合, 去重 # 语法格式 `SELECT column1, column2 FROM table1 UNION SELECT column1, column2 FROM table2;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | UNION | 合并结果并去除重复行 | | UNION ALL | 合并结果保留所有行(包括重复行) | # 注意事项 UNION要求参与合并的SELECT语句列数必须相同 对应列的数据类型必须兼容 UNION会自动去除重复记录,UNION ALL保留所有记录 各SELECT语句中的列名以第一个SELECT语句为准
数据操作
INSERT
# 基本信息 命令名称: INSERT 功能描述: INSERT语句用于向数据库表中插入新记录 分类: 数据操作语句 标签: 插入, 添加, 新增, 数据修改 # 语法格式 `INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);` # 常用选项 | :-- | :-- | | 参数 | 描述 | | INSERT INTO | 指定要插入数据的表 | | VALUES | 指定要插入的具体值 | | SELECT | 从其他表中查询数据并插入 | # 注意事项 INSERT语句必须与表结构保持一致 VALUES的数量和顺序必须与指定的列匹配 如果省略列名,则需要为表中所有列提供值 可以使用INSERT INTO ... SELECT语句从其他表复制数据
UPDATE
# 基本信息 命令名称: UPDATE 功能描述: UPDATE语句用于更新数据库表中的现有记录 分类: 数据操作语句 标签: 更新, 修改, 编辑, 数据修改 # 语法格式 `UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | SET | 指定要更新的列和新值 | | WHERE | 指定更新哪些记录的条件 | | SET 多列 | 使用逗号分隔多个列的更新 | # 注意事项 务必在UPDATE语句中使用WHERE子句,否则会更新表中的所有记录 can一次更新多个列的值 更新时需要注意数据类型的匹配 在执行更新操作前,建议先用SELECT验证WHERE条件
DELETE
# 基本信息 命令名称: DELETE 功能描述: DELETE语句用于删除数据库表中的记录 分类: 数据操作语句 标签: 删除, 移除, 清除, 数据修改 # 语法格式 `DELETE FROM table_name WHERE condition;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | DELETE FROM | 指定要删除数据的表 | | WHERE | 指定删除哪些记录的条件 | | TRUNCATE | 清空整个表(另一种方法) | # 注意事项 务必在DELETE语句中使用WHERE子句,否则会删除表中的所有记录 DELETE只删除记录,不删除表结构 删除操作不可逆,请谨慎操作 在执行删除操作前,建议先用SELECT验证WHERE条件
表操作
CREATE TABLE
# 基本信息 命令名称: CREATE TABLE 功能描述: CREATE TABLE语句用于创建新的数据库表 分类: 表操作语句 标签: 创建, 表, 定义, 结构 # 语法格式 `CREATE TABLE table_name (column1 datatype constraints, column2 datatype constraints, ...);` # 常用选项 | :-- | :-- | | 参数 | 描述 | | 数据类型 | 如INT, VARCHAR(n), DATE, TEXT等 | | 主键约束 | PRIMARY KEY | | 非空约束 | NOT NULL | | 默认值 | DEFAULT value | | 唯一约束 | UNIQUE | # 注意事项 定义表结构时应考虑数据完整性约束 VARCHAR类型需要指定最大长度 主键字段不能有重复值且不能为NULL 创建表前应检查表是否已存在
ALTER TABLE
# 基本信息 命令名称: ALTER TABLE 功能描述: ALTER TABLE语句用于修改现有表的结构 分类: 表操作语句 标签: 修改, 表结构, 扩展, 维护 # 语法格式 `ALTER TABLE table_name ADD|DROP|MODIFY column_name datatype constraints;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | ADD | 添加新列 | | DROP COLUMN | 删除列 | | MODIFY/ALTER | 修改列定义 | | RENAME | 重命名表或列 | # 注意事项 ALTER TABLE操作可能影响正在使用的应用程序 某些数据库系统不支持直接删除列 修改表结构前备份数据是良好的习惯 修改大表结构可能需要较长时间
DROP TABLE
# 基本信息 命令名称: DROP TABLE 功能描述: DROP TABLE语句用于删除整个数据库表及其结构 分类: 表操作语句 标签: 删除, 表, 清空, 结构移除 # 语法格式 `DROP TABLE table_name;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | DROP TABLE | 删除表及其结构 | | IF EXISTS | 如果表存在则删除(防止错误) | # 注意事项 DROP TABLE会删除表及其中的所有数据 此操作不可逆,请谨慎执行 删除表前确认没有其他表依赖该表(如外键关系) 某些数据库系统可能需要特殊权限
TRUNCATE
# 基本信息 命令名称: TRUNCATE 功能描述: TRUNCATE语句用于清空表中的所有数据但保留表结构 分类: 表操作语句 标签: 清空, 数据删除, 重置, 快速删除 # 语法格式 `TRUNCATE TABLE table_name;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | TRUNCATE TABLE | 清空表中所有数据 | | RESTART IDENTITY | 重置自增计数器(某些数据库) | # 注意事项 TRUNCATE比DELETE更快,因为它不记录单行删除 TRUNCATE保留表结构和约束 此操作通常不可回滚 TRUNCATE可能会重置自增ID计数器
索引操作
CREATE INDEX
# 基本信息 命令名称: CREATE INDEX 功能描述: CREATE INDEX语句用于在表上创建索引以提高查询性能 分类: 索引操作语句 标签: 索引, 性能, 查询优化, 加速 # 语法格式 `CREATE INDEX index_name ON table_name (column1, column2, ...);` # 常用选项 | :-- | :-- | | 参数 | 描述 | | INDEX | 创建普通索引 | | UNIQUE INDEX | 创建唯一索引 | | CLUSTERED | 创建聚集索引 | | NONCLUSTERED | 创建非聚集索引 | # 注意事项 索引可以显著提高查询速度 过多的索引会影响插入、更新和删除性能 应在经常用于查询条件的列上创建索引 唯一索引可以保证数据的唯一性
DROP INDEX
# 基本信息 命令名称: DROP INDEX 功能描述: DROP INDEX语句用于删除数据库中的索引 分类: 索引操作语句 标签: 删除, 索引移除, 性能调整, 维护 # 语法格式 `DROP INDEX index_name ON table_name;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | DROP INDEX | 删除指定索引 | | CASCADE | 自动删除相关依赖项(某些数据库) | # 注意事项 删除索引会影响依赖该索引的查询性能 删除索引会立即生效,无法恢复 删除索引前应评估对查询性能的影响 某些主键或唯一约束相关的索引可能无法直接删除
聚合函数
COUNT
# 基本信息 命令名称: COUNT 功能描述: COUNT函数用于计算行数 分类: 聚合函数 标签: 计数, 统计, 聚合, 行数 # 语法格式 `SELECT COUNT(*) | COUNT(column) | COUNT(DISTINCT column) FROM table_name WHERE condition;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | COUNT(*) | 计算所有行(包括NULL) | | COUNT(column) | 计算指定列非NULL值的行数 | | COUNT(DISTINCT column) | 计算指定列不同值的数量 | # 注意事项 COUNT(*)计算所有行,无论是否有NULL值 COUNT(column)忽略NULL值 COUNT可以与其他子句如GROUP BY结合使用 对于大表,COUNT(*)可能执行较慢
SUM
# 基本信息 命令名称: SUM 功能描述: SUM函数用于计算数值列的总和 分类: 聚合函数 标签: 求和, 总计, 数值计算, 聚合 # 语法格式 `SELECT SUM(column) FROM table_name WHERE condition;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | SUM(column) | 计算指定列的总和 | | SUM(DISTINCT column) | 计算指定列不同值的总和 | # 注意事项 SUM函数只能用于数值类型的列 SUM函数会忽略NULL值 当没有符合条件的行时,返回NULL SUM可以与GROUP BY结合使用
AVG
# 基本信息 命令名称: AVG 功能描述: AVG函数用于计算数值列的平均值 分类: 聚合函数 标签: 平均值, 统计, 数值计算, 聚合 # 语法格式 `SELECT AVG(column) FROM table_name WHERE condition;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | AVG(column) | 计算指定列的平均值 | | AVG(DISTINCT column) | 计算指定列不同值的平均值 | # 注意事项 AVG函数只能用于数值类型的列 AVG函数会忽略NULL值 当没有符合条件的行时,返回NULL AVG可以与GROUP BY结合使用
MAX/MIN
# 基本信息 命令名称: MAX/MIN 功能描述: MAX函数返回最大值,MIN函数返回最小值 分类: 聚合函数 标签: 最大值, 最小值, 极值, 聚合 # 语法格式 `SELECT MAX(column) | MIN(column) FROM table_name WHERE condition;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | MAX(column) | 返回指定列的最大值 | | MIN(column) | 返回指定列的最小值 | # 注意事项 MAX/MIN函数可用于数值、日期和字符串类型 这些函数会忽略NULL值 当没有符合条件的行时,返回NULL 可以与GROUP BY结合使用获取各组的极值
字符串函数
CONCAT
# 基本信息 命令名称: CONCAT 功能描述: CONCAT函数用于连接两个或多个字符串 分类: 字符串函数 标签: 连接, 拼接, 字符串, 合并 # 语法格式 `SELECT CONCAT(string1, string2, ...) FROM table_name;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | string1, string2, ... | 要连接的字符串或列 | | CONCAT_WS | 带分隔符的连接函数 | # 注意事项 CONCAT函数会忽略NULL值(某些数据库会将整个结果变为NULL) 可以连接列与固定字符串 不同数据库系统可能有不同的连接操作符(如||) 使用CONCAT_WS可指定分隔符进行连接
SUBSTRING
# 基本信息 命令名称: SUBSTRING 功能描述: SUBSTRING函数用于提取字符串的一部分 分类: 字符串函数 标签: 截取, 子串, 提取, 字符串 # 语法格式 `SELECT SUBSTRING(column, start, length) FROM table_name;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | column | 要提取的字符串或列 | | start | 开始位置(从1开始) | | length | 提取长度(可选) | # 注意事项 起始位置从1开始计数 如果省略长度,则返回从开始位置到字符串末尾的所有字符 当开始位置超出字符串长度时返回空字符串 负数位置在某些数据库中表示从字符串末尾开始计算
UPPER/LOWER
# 基本信息 命令名称: UPPER/LOWER 功能描述: UPPER函数将字符串转换为大写,LOWER函数将字符串转换为小写 分类: 字符串函数 标签: 大小写, 转换, 格式化, 字符串 # 语法格式 `SELECT UPPER(column) | LOWER(column) FROM table_name;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | UPPER | 转换为大写 | | LOWER | 转换为小写 | # 注意事项 大小写转换对索引性能可能有影响 不适用于二进制数据 在WHERE条件中使用时注意大小写敏感性设置 可用于规范化数据进行比较
TRIM
# 基本信息 命令名称: TRIM 功能描述: TRIM函数用于去除字符串首尾的空白字符 分类: 字符串函数 标签: 去除, 空格, 清理, 字符串 # 语法格式 `SELECT TRIM([LEADING|TRAILING|BOTH] [characters] FROM column) FROM table_name;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | TRIM() | 去除两端空白 | | LTRIM() | 去除左侧空白 | | RTRIM() | 去除右侧空白 | | 自定义字符 | 可指定要去除的特定字符 | # 注意事项 默认去除空格,但也可指定其他字符 有助于清理用户输入数据 在比较字符串前建议使用TRIM避免意外 不同数据库系统的TRIM实现可能略有差异
日期函数
NOW
# 基本信息 命令名称: NOW 功能描述: NOW函数返回当前的日期和时间 分类: 日期函数 标签: 当前, 时间, 日期, 实时 # 语法格式 `SELECT NOW() | CURRENT_TIMESTAMP FROM table_name;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | NOW() | 返回当前日期时间 | | CURDATE() | 仅返回当前日期 | | CURTIME() | 仅返回当前时间 | # 注意事项 返回的日期时间基于服务器时区 可用于记录创建或更新时间戳 在插入语句中常作为默认值使用 不同数据库系统可能有不同的函数名称
DATE_FORMAT
# 基本信息 命令名称: DATE_FORMAT 功能描述: DATE_FORMAT函数用于格式化日期为指定的字符串格式 分类: 日期函数 标签: 格式化, 显示, 转换, 日期 # 语法格式 `SELECT DATE_FORMAT(date_column, format) FROM table_name;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | %Y | 4位数年份 | | %y | 2位数年份 | | %m | 月份(01-12) | | %d | 日期(01-31) | | %H | 小时(00-23) | | %i | 分钟(00-59) | | %s | 秒(00-59) | # 注意事项 格式化模式在不同数据库系统中可能不同 有助于生成报表友好的日期显示 在GROUP BY中可用于按年月分组统计 注意时区转换问题
DATE_ADD
# 基本信息 命令名称: DATE_ADD 功能描述: DATE_ADD函数用于在日期上添加指定的时间间隔 分类: 日期函数 标签: 增加, 计算, 间隔, 日期 # 语法格式 `SELECT DATE_ADD(date, INTERVAL expr unit) FROM table_name;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | INTERVAL | 表示时间间隔 | | expr | 数值表达式 | | unit | 单位(DAY, MONTH, YEAR等) | # 注意事项 可用于计算到期日、截止日期等 支持多种时间单位:SECOND, MINUTE, HOUR, DAY, MONTH, YEAR等 减法操作可使用负数值或DATE_SUB函数 注意闰年和月份天数变化的影响
条件函数
CASE WHEN
# 基本信息 命令名称: CASE WHEN 功能描述: CASE WHEN语句用于实现条件逻辑判断 分类: 条件函数 标签: 条件, 判断, 分支, 逻辑 # 语法格式
-- 简单CASE SELECT CASE column WHEN value1 THEN result1 WHEN value2 THEN result2 ELSE default_result END FROM table_name;
-- 搜索CASE SELECT CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE default_result END FROM table_name;
# 常用选项 | :-- | :-- | | 参数 | 描述 | | CASE WHEN | 条件判断 | | THEN | 满足条件的结果 | | ELSE | 默认结果 | | END | 结束标记 | # 注意事项 CASE是SQL标准的条件表达式 可以在SELECT、ORDER BY、HAVING等子句中使用 ELSE子句是可选的,但建议包含以处理未预期情况 性能上优于多次查询
IF
# 基本信息 命令名称: IF 功能描述: IF函数用于简单的条件判断(某些数据库特有) 分类: 条件函数 标签: 条件, 判断, 简单, 快速 # 语法格式 `SELECT IF(condition, value_if_true, value_if_false) FROM table_name;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | condition | 要评估的条件 | | value_if_true | 条件为真时的值 | | value_if_false | 条件为假时的值 | # 注意事项 并非所有数据库都支持IF函数(如MySQL支持,但PostgreSQL不支持) 对于复杂条件建议使用CASE WHEN 可用于在查询中动态生成值 嵌套IF可能导致代码难以维护
COALESCE
# 基本信息 命令名称: COALESCE 功能描述: COALESCE函数返回参数列表中第一个非NULL的值 分类: 条件函数 标签: 空值, 替代, 默认, 处理 # 语法格式 `SELECT COALESCE(column1, column2, ..., default_value) FROM table_name;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | column1, column2, ... | 按优先级检查的列 | | default_value | 最终默认值 | # 注意事项 COALESCE是SQL标准函数,广泛支持 常用于处理可能为NULL的字段 所有参数必须是兼容的数据类型 可用于提供备用值或默认值
约束
PRIMARY KEY
# 基本信息 命令名称: PRIMARY KEY 功能描述: 主键约束用于唯一标识表中的每一行记录 分类: 约束 标签: 主键, 唯一, 标识, 完整性 # 语法格式
-- 创建时定义 CREATE TABLE table_name ( id INT PRIMARY KEY, name VARCHAR(50) );
-- 添加主键 ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY (column);
# 常用选项 | :-- | :-- | | 参数 | 描述 | | PRIMARY KEY | 定义主键 | | AUTO_INCREMENT | 自动递增(MySQL) | | IDENTITY | 自动递增(SQL Server) | # 注意事项 每个表只能有一个主键 主键列不能包含NULL值 主键值必须唯一 主键会自动创建唯一索引
FOREIGN KEY
# 基本信息 命令名称: FOREIGN KEY 功能描述: 外键约束用于建立和加强两个表数据之间的链接 分类: 约束 标签: 外键, 关联, 引用, 完整性 # 语法格式
-- 创建时定义 CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, FOREIGN KEY (customer_id) REFERENCES customers(id) );
-- 添加外键 ALTER TABLE table_name ADD CONSTRAINT fk_name FOREIGN KEY (column) REFERENCES parent_table(column);
# 常用选项 | :-- | :-- | | 参数 | 描述 | | REFERENCES | 指定引用的表和列 | | ON DELETE CASCADE | 删除父记录时级联删除子记录 | | ON UPDATE CASCADE | 更新父记录时级联更新子记录 | # 注意事项 外键必须引用另一个表的主键或唯一键 确保引用完整性,防止孤立记录 级联操作需谨慎使用,避免意外删除大量数据 可能影响插入和删除性能
UNIQUE
# 基本信息 命令名称: UNIQUE 功能描述: 唯一约束确保列中的所有值都是唯一的 分类: 约束 标签: 唯一, 重复, 验证, 完整性 # 语法格式
-- 创建时定义 CREATE TABLE users ( id INT PRIMARY KEY, email VARCHAR(100) UNIQUE );
-- 添加唯一约束 ALTER TABLE table_name ADD CONSTRAINT uk_name UNIQUE (column);
# 常用选项 | :-- | :-- | | 参数 | 描述 | | UNIQUE | 定义唯一约束 | | 多列组合 | 可在多个列上定义唯一约束 | # 注意事项 与主键不同,唯一约束允许NULL值(但只允许一个NULL) 可在非主键列上创建,如邮箱、身份证号等 会自动创建唯一索引 每个表可以有多个唯一约束
NOT NULL
# 基本信息 命令名称: NOT NULL 功能描述: 非空约束确保列中不能包含NULL值 分类: 约束 标签: 非空, 必填, 验证, 完整性 # 语法格式
-- 创建时定义 CREATE TABLE table_name ( column1 datatype NOT NULL, column2 datatype );
-- 修改列添加约束 ALTER TABLE table_name ALTER COLUMN column SET NOT NULL;
# 常用选项 | :-- | :-- | | 参数 | 描述 | | NOT NULL | 定义非空约束 | | DEFAULT | 通常与默认值一起使用 | # 注意事项 强制要求该列必须有值 在INSERT或UPDATE时必须提供值 NULL与空字符串不同 建议对重要业务字段设置此约束
子查询
IN
# 基本信息 命令名称: IN 功能描述: IN操作符用于在WHERE子句中匹配子查询返回的结果集 分类: 子查询 标签: 包含, 列表, 匹配, 查询 # 语法格式 `SELECT column1, column2, ... FROM table_name WHERE column IN (SELECT column FROM table_name2 WHERE condition);` # 常用选项 | :-- | :-- | | 参数 | 描述 | | IN | 匹配任意一个值 | | NOT IN | 排除结果集中的值 | # 注意事项 子查询必须返回单列结果 IN比多个OR条件更简洁高效 NOT IN在包含NULL值时需特别注意(结果可能为UNKNOWN) 性能取决于子查询结果集大小
EXISTS
# 基本信息 命令名称: EXISTS 功能描述: EXISTS操作符用于检查子查询是否返回任何行 分类: 子查询 标签: 存在, 检查, 验证, 查询 # 语法格式 `SELECT column1, column2, ... FROM table_name t1 WHERE EXISTS (SELECT 1 FROM table_name2 t2 WHERE t2.column = t1.column);` # 常用选项 | :-- | :-- | | 参数 | 描述 | | EXISTS | 检查是否存在行 | | NOT EXISTS | 检查是否不存在行 | # 注意事项 EXISTS是半连接,只要找到一行就停止搜索 通常比IN更高效,特别是大数据集时 子查询中SELECT的列名不重要,常用SELECT 1 可用于相关子查询,实现复杂的逻辑判断
视图
CREATE VIEW
# 基本信息 命令名称: CREATE VIEW 功能描述: CREATE VIEW语句用于创建虚拟表,基于SELECT查询结果 分类: 视图 标签: 视图, 虚拟表, 封装, 简化 # 语法格式 `CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | CREATE VIEW | 创建新视图 | | OR REPLACE | 替换已存在的视图 | | WITH CHECK OPTION | 确保通过视图修改的数据符合视图定义 | # 注意事项 视图不存储数据,只是保存查询定义 可以像普通表一样进行查询 简化复杂查询,提高重用性 可通过视图更新数据,但有限制
DROP VIEW
# 基本信息 命令名称: DROP VIEW 功能描述: DROP VIEW语句用于删除已存在的视图 分类: 视图 标签: 删除, 移除, 清理, 维护 # 语法格式 `DROP VIEW view_name;` # 常用选项 | :-- | :-- | | 参数 | 描述 | | DROP VIEW | 删除视图 | | IF EXISTS | 如果存在则删除(防止错误) | # 注意事项 DROP VIEW只删除视图定义,不影响基础表数据 删除视图后,依赖该视图的查询将失败 建议在删除前确认没有应用程序依赖该视图 某些数据库系统需要特定权限才能删除视图
