一、基础查询语法

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 查询执行顺序

  1. FROM & JOIN - 确定查询的数据源
  2. WHERE - 对行进行初步筛选
  3. GROUP BY - 对剩余行进行分组
  4. HAVING - 对分组结果进行筛选
  5. SELECT - 计算表达式和选择列
  6. DISTINCT - 去除重复行
  7. ORDER BY - 对结果排序
  8. 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检查,如果有错误的地方,欢迎指出~
感谢阅读!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐