SQL 学习笔记:从基础查询到高级操作
·
一、基础查询语法
1. 基本 SELECT 查询
SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column ASC/DESC
LIMIT num_limit OFFSET num_offset;
2. 多表 INNER JOIN 查询
SELECT t1.column, t2.column, ...
FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.id
WHERE condition
ORDER BY column ASC/DESC;
3. 多表外连接查询
SELECT t1.column, t2.column, ...
FROM table1 t1
LEFT/RIGHT/FULL JOIN table2 t2
ON t1.id = t2.matching_id
WHERE condition;
4. 处理 NULL 值的查询
SELECT column1, column2, ...
FROM table_name
WHERE column IS NULL
OR column IS NOT NULL;
5. 使用别名的查询
SELECT column AS alias_name, ...
FROM long_table_name AS alias
INNER JOIN other_table
ON alias.id = other_table.foreign_id;
二、聚合函数与分组查询
1. 常用聚合函数
| 函数 | 描述 |
|---|---|
COUNT(*), COUNT(column) | 统计行数,COUNT(column)忽略NULL值 |
MIN(column) | 找最小值 |
MAX(column) | 找最大值 |
AVG(column) | 求平均值 |
SUM(column) | 求和 |
2. 基础聚合查询
SELECT AGG_FUNC(column) AS result
FROM table_name
WHERE condition;
3. 分组聚合查询
SELECT column, AGG_FUNC(column)
FROM table_name
WHERE condition
GROUP BY column;
4. 使用 HAVING 筛选分组
SELECT column, AGG_FUNC(column) AS agg_result
FROM table_name
WHERE condition
GROUP BY column
HAVING agg_condition;
三、完整查询语句结构
SELECT DISTINCT column, AGG_FUNC(expression)
FROM table1
JOIN table2 ON table1.column = table2.column
WHERE condition
GROUP BY column
HAVING group_condition
ORDER BY column ASC/DESC
LIMIT count OFFSET offset;
四、SQL 查询执行顺序
- FROM & JOIN - 确定查询的数据源
- WHERE - 对行进行初步筛选
- GROUP BY - 对剩余行进行分组
- HAVING - 对分组结果进行筛选
- SELECT - 计算表达式和选择列
- DISTINCT - 去除重复行
- ORDER BY - 对结果排序
- LIMIT/OFFSET - 限制返回结果
五、数据操作语言
1. 插入数据
-- 插入所有列
INSERT INTO table_name
VALUES (value1, value2, ...);
-- 插入指定列
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
2. 更新数据
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
3. 删除数据
DELETE FROM table_name
WHERE condition;
4. 创建表
CREATE TABLE IF NOT EXISTS table_name (
column1 DataType Constraint DEFAULT default_value,
column2 DataType Constraint DEFAULT default_value,
...
);
5. 常用数据类型
| 数据类型 | 描述 |
|---|---|
INTEGER, BOOLEAN | 整型和布尔值 |
FLOAT, DOUBLE, REAL | 浮点数类型 |
CHAR(n), VARCHAR(n), TEXT | 字符和文本类型 |
DATE, DATETIME | 日期和时间类型 |
BLOB | 二进制大对象 |
6. 表约束
| 约束 | 描述 |
|---|---|
PRIMARY KEY | 主键,唯一标识每行 |
AUTOINCREMENT | 自增整数(非所有数据库支持) |
UNIQUE | 确保列值唯一 |
NOT NULL | 禁止NULL值 |
CHECK (expression) | 自定义检查条件 |
FOREIGN KEY | 外键,引用其他表 |
7. 修改表结构
-- 添加新列
ALTER TABLE table_name
ADD column_name DataType Constraint DEFAULT default_value;
-- 删除列
ALTER TABLE table_name
DROP COLUMN column_name;
-- 重命名表
ALTER TABLE table_name
RENAME TO new_table_name;
-- 删除表
DROP TABLE IF EXISTS table_name;
六、常用函数与技巧
1. 字符串函数
CONCAT(str1, str2, ...) -- 连接字符串
REPLACE(str, old, new) -- 替换字符串
LEFT(str, n) -- 提取前n个字符
LENGTH(str) -- 字符串长度(SQL Server用LEN)
2. 数学函数
ROUND(number, n) -- 四舍五入到n位小数
SUM(column) -- 求和
COUNT(column) -- 计数
3. 逻辑运算符
condition1 AND condition2 -- 与
condition1 OR condition2 -- 或
condition1 XOR condition2 -- 异或
4. 高级查询技巧
-- 自定义排序
ORDER BY CASE column
WHEN value THEN 1
ELSE 2
END;
-- 查找最大值
WHERE value >= ALL(SELECT value FROM table WHERE condition);
-- 去重查询
SELECT DISTINCT column FROM table;
-- 相关子查询(查找每个分组的最大值)
SELECT * FROM table1 t1
WHERE value >= ALL(
SELECT value FROM table1 t2
WHERE t2.group_column = t1.group_column
);
-- 表连接
SELECT *
FROM table1
JOIN table2 ON table1.column = table2.column;
内容参考:SQLZoo
以上内容为参考网站资料后自己整理+AI检查,如果有错误的地方,欢迎指出~
感谢阅读!
更多推荐


所有评论(0)