第二十二次博客打卡
今天学习的内容是SQL常见表的查询语句。
1. 基本查询
查询所有列
SELECT * FROM 表名;
查询指定列
SELECT 列1, 列2, 列3 FROM 表名;
去重查询(DISTINCT)
SELECT DISTINCT 列名 FROM 表名;
限制返回行数(LIMIT / TOP / FETCH)
-- MySQL/PostgreSQL/SQLite
SELECT * FROM 表名 LIMIT 10;-- SQL Server
SELECT TOP 10 * FROM 表名;-- Oracle (12c+)
SELECT * FROM 表名 FETCH FIRST 10 ROWS ONLY;
2. 条件筛选(WHERE)
基本条件
SELECT * FROM 表名 WHERE 列名 = '值';
比较运算符(=, <>, >, <, >=, <=)
SELECT * FROM 表名 WHERE 列名 > 100;
逻辑运算符(AND, OR, NOT)
SELECT * FROM 表名 WHERE 条件1 AND 条件2;
模糊匹配(LIKE)
-- 以 "张" 开头
SELECT * FROM 表名 WHERE 列名 LIKE '张%';-- 包含 "abc"
SELECT * FROM 表名 WHERE 列名 LIKE '%abc%';-- 第二个字符是 "a"
SELECT * FROM 表名 WHERE 列名 LIKE '_a%';
范围查询(IN, BETWEEN)
-- 在某个集合内
SELECT * FROM 表名 WHERE 列名 IN ('值1', '值2', '值3');-- 在某个范围内
SELECT * FROM 表名 WHERE 列名 BETWEEN 10 AND 20;
空值判断(IS NULL / IS NOT NULL)
SELECT * FROM 表名 WHERE 列名 IS NULL;
3. 排序(ORDER BY)
-- 升序(默认)
SELECT * FROM 表名 ORDER BY 列名 ASC;-- 降序
SELECT * FROM 表名 ORDER BY 列名 DESC;-- 多列排序
SELECT * FROM 表名 ORDER BY 列1 ASC, 列2 DESC;
4. 子查询
WHERE 子查询
SELECT * FROM 表A
WHERE 列名 IN (SELECT 列名 FROM 表B WHERE 条件);
FROM 子查询
SELECT *
FROM (SELECT 列1, 列2 FROM 表名 WHERE 条件) AS 子查询表;
EXISTS 子查询
SELECT * FROM 表A
WHERE EXISTS (SELECT 1 FROM 表B WHERE 表B.列 = 表A.列);
掌握这些查询语句可以适应大多数数据库的查询。