史上超全最常用SQL语句大全 :SQL语句必备基础语法
本文系统梳理了SQL语言的四大核心分类:DDL(数据定义语言)、DML(数据操作语言)、DQL(数据查询语言)和DCL(数据控制语言)。涵盖了从数据库和表的管理操作,到数据的增删改查、排序聚合、分组分页、连接查询与子查询,再到用户权限管理的全套常用语句。内容全面实用,既包含基础语法如创建表、插入数据等,也涉及高级查询技巧如多表连接、子查询等。适合数据库开发人员快速查阅,无论是日常开发还是面试准备都
·
史上超强最常用SQL语句大全 :SQL语句必备基础语法
本文全面介绍了 SQL 语言的四大分类——DDL(数据定义语言)、DML(数据操作语言)、DQL(数据查询语言)和 DCL(数据控制语言),涵盖了从数据库和表的管理,到数据的增删改查、排序、聚合、分组、分页、连接查询与子查询,再到用户权限管理的全套常用语句。无论你是数据库新手还是资深 DBA,都能在此快速查找面试高频和日常开发必备的 SQL 语句。
文章目录
一、DDL(Data Definition Language)数据定义语言
1. 操作库(Database)
-- 创建数据库
CREATE DATABASE db1;
-- 如果不存在则创建
CREATE DATABASE IF NOT EXISTS db1;
-- 查看所有数据库
SHOW DATABASES;
-- 查看数据库创建语句
SHOW CREATE DATABASE db1;
-- 修改字符集
ALTER DATABASE db1 CHARACTER SET utf8;
-- 删除数据库
DROP DATABASE db1;
2. 操作表(Table)
-- 创建表
CREATE TABLE student (
id INT,
name VARCHAR(32),
age INT,
score DOUBLE(4,1),
birthday DATE,
insert_time TIMESTAMP
);
-- 查看表结构
DESC student;
-- 查看创建表语句
SHOW CREATE TABLE student;
-- 重命名表
ALTER TABLE student RENAME TO student_old;
-- 添加新列
ALTER TABLE student ADD email VARCHAR(64);
-- 删除列
ALTER TABLE student DROP COLUMN email;
-- 删除表
DROP TABLE student;
-- 如果存在则删除
DROP TABLE IF EXISTS student;
二、DML(Data Manipulation Language)数据操作语言
1. 插入数据(INSERT)
-- 全列插入
INSERT INTO student (id, name, age, score) VALUES (1, '张三', 20, 88.5);
-- 不列出列名,必须提供所有列值
INSERT INTO student VALUES (2, '李四', 22, 91.0, '2003-01-15', NOW());
-- 部分列插入
INSERT INTO student (name, age) VALUES ('王五', 19);
2. 删除数据(DELETE / TRUNCATE)
-- 删除满足条件的行
DELETE FROM student WHERE age < 18;
-- 删除全部数据(保留表结构)
DELETE FROM student;
-- 高效清空表(无法回滚)
TRUNCATE TABLE student;
3. 更新数据(UPDATE)
-- 更新所有行
UPDATE student SET score = score + 5;
-- 带条件更新
UPDATE student SET score = 100 WHERE name = '张三';
三、DQL(Data Query Language)数据查询语言
1. 基础关键字
-- 范围查询
SELECT * FROM student WHERE age BETWEEN 20 AND 30;
-- 集合查询
SELECT * FROM student WHERE age IN (18, 20, 22);
-- 非空查询
SELECT * FROM student WHERE score IS NOT NULL;
-- 模糊查询
SELECT * FROM student WHERE name LIKE '张%';
-- 去重
SELECT DISTINCT age FROM student;
2. 排序查询(ORDER BY)
-- 单列升序
SELECT * FROM student ORDER BY score;
-- 多列排序:先按 score 降序,再按 age 升序
SELECT * FROM student ORDER BY score DESC, age ASC;
3. 聚合函数(Aggregate)
SELECT
COUNT(*) AS total_students,
AVG(score) AS avg_score,
MAX(score) AS max_score,
MIN(score) AS min_score,
SUM(score) AS sum_score
FROM student;
4. 分组查询(GROUP BY / HAVING)
-- 按年龄分组,统计平均分
SELECT age, AVG(score) AS avg_score
FROM student
GROUP BY age;
-- 带 HAVING 过滤分组
SELECT age, COUNT(*) AS cnt
FROM student
GROUP BY age
HAVING cnt > 2;
5. 分页查询(LIMIT)
-- MySQL 方言:从第 0 条开始,取 5 条
SELECT * FROM student LIMIT 0, 5;
-- 通常用于 Web 分页:(page-1)*size, size
6. 内连接查询(INNER JOIN)
-- 隐式写法
SELECT e.name, d.dept_name
FROM emp e, dept d
WHERE e.dept_id = d.id;
-- 显式写法
SELECT e.name, d.dept_name
FROM emp AS e
JOIN dept AS d
ON e.dept_id = d.id;
7. 外连接查询(LEFT / RIGHT JOIN)
-- 左外连接:保留左表所有记录
SELECT e.name, d.dept_name
FROM emp AS e
LEFT JOIN dept AS d
ON e.dept_id = d.id;
-- 右外连接:保留右表所有记录
SELECT e.name, d.dept_name
FROM emp AS e
RIGHT JOIN dept AS d
ON e.dept_id = d.id;
8. 子查询(Subquery)
-- 单行单列:查工资低于平均值的员工
SELECT * FROM emp
WHERE salary < (SELECT AVG(salary) FROM emp);
-- 多行单列:查财务部和市场部员工
SELECT * FROM emp
WHERE dept_id IN (
SELECT id FROM dept WHERE name IN ('财务部','市场部')
);
-- 多行多列:先过滤后连接
SELECT d.*, e.*
FROM dept AS d
JOIN (
SELECT * FROM emp WHERE join_date > '2020-01-01'
) AS e
ON d.id = e.dept_id;
四、DCL(Data Control Language)数据控制语言
1. 用户管理
-- 添加用户
CREATE USER 'alice'@'%' IDENTIFIED BY 'pwd123';
-- 删除用户
DROP USER 'alice'@'%';
2. 权限管理
-- 查询某用户权限
SHOW GRANTS FOR 'bob'@'%';
-- 授予权限(所有库所有表)
GRANT ALL PRIVILEGES ON *.* TO 'bob'@'%';
-- 指定库表权限
GRANT SELECT, INSERT ON mydb.student TO 'charlie'@'localhost';
-- 撤销权限
REVOKE INSERT ON mydb.student FROM 'charlie'@'localhost';
结语
通过本文对 DDL、DML、DQL 和 DCL 四大类 100+ 条常用 SQL 语句的系统梳理,希望能帮助你在日常开发、数据分析和面试准备中事半功倍。无论是表结构设计、数据增删改查,还是复杂的连接查询、子查询、权限管理,都能快速找到对应的“万能模板”,助你提升效率、规避低级错误。
⚡ 建议你在实际项目中反复练习,将这些语句融会贯通,并根据业务需求灵活组合、优化索引和执行计划。
🔗 更多实战案例与深度解析,请移步 ==> 全栈Bug解决方案专栏,持续关注,不断进阶!
祝你 SQL 路上越走越稳,早日拿到理想的 offer!
更多推荐





所有评论(0)