SQL语言学习记录-SELECT语句基础
2025-07-23

SQL 语言分类与查询语法详解

SQL 语言分类

1. DDL (数据定义语言)

  • CREATE - 创建数据库对象
  • DROP - 删除数据库对象
  • ALTER - 修改数据库对象
  • RENAME - 重命名数据库对象

2. DML (数据操作语言)

  • INSERT - 插入数据
  • DELETE - 删除数据
  • UPDATE - 更新数据
  • SELECT - 查询数据

3. DCL (数据控制语言)

  • COMMIT - 提交事务
  • ROLLBACK - 回滚事务
  • SAVEPOINT - 设置保存点
  • GRANT - 授予权限
  • REVOKE - 撤销权限

SELECT 语句详解

设置结果集别名

-- 方式1:直接跟在列名后
SELECT employee_id empid FROM employees;

-- 方式2:使用AS关键字
SELECT employee_id AS empid FROM employees;

-- 方式3:使用双引号包裹别名(可包含空格)
SELECT employee_id "empid" FROM employees;

去除重复行

-- 单列去重
SELECT DISTINCT department_id dpid FROM employees;

-- 多列组合去重
SELECT DISTINCT department_id, salary FROM employees;

空值(NULL)处理

-- NULL参与运算结果为NULL
SELECT department_id, salary*12*(1+commission_pct) "年工资" FROM employees;

-- 使用IFNULL处理NULL值
SELECT department_id, salary*12*(1+IFNULL(commission_pct,0)) "年工资" FROM employees;

特殊语法

-- 使用着重号处理关键字冲突
SELECT * FROM `ORDER`;

-- 查询常数(添加固定列)
SELECT '尚硅谷', employee_id FROM employees;

表结构查询

-- 查看表结构
DESCRIBE employees;
-- 简写形式
DESC employees;

数据过滤(WHERE子句)

-- 数值条件过滤
SELECT * FROM employees WHERE department_id = 90;

-- 字符串条件过滤
SELECT * FROM employees WHERE last_name = 'King';
/*
注意:标准SQL区分大小写,但MySQL默认不区分
小写'king'也能匹配到'King'
*/

关键点总结

  1. NULL特性

    • 任何与NULL的运算结果都是NULL
    • NULL不是0也不是空字符串''
    • 使用IFNULL()函数处理NULL值
  2. 别名使用

    • 三种别名设置方式
    • 双引号允许别名包含空格
  3. 数据过滤

    • WHERE子句用于条件筛选
    • MySQL字符串比较默认不区分大小写
  4. 特殊符号

    • 着重号``用于处理关键字冲突
    • 单引号''用于字符串值
    • 双引号""用于包含特殊字符的别名