MySQL 常用 SQL 语句大全

1. 基本查询

查询所有记录和字段

sql 复制代码
SELECT * FROM table_name;

查询特定字段

sql 复制代码
SELECT column1, column2 FROM table_name;

查询并限制结果

sql 复制代码
SELECT column1, column2 FROM table_name LIMIT 10;

条件查询

sql 复制代码
SELECT column1, column2 FROM table_name WHERE condition;

模糊匹配

sql 复制代码
SELECT column1 FROM table_name WHERE column2 LIKE 'pattern%';

匹配多个值

sql 复制代码
SELECT column1 FROM table_name WHERE column2 IN (value1, value2);

不匹配某些值

sql 复制代码
SELECT column1 FROM table_name WHERE column2 NOT IN (value1, value2);

2. 数据插入

插入单条记录

sql 复制代码
INSERT INTO table_name (column1, column2) VALUES (value1, value2);

插入多条记录

sql 复制代码
INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4);

从另一个表插入数据

sql 复制代码
INSERT INTO table1 (column1, column2)
SELECT column1, column2 FROM table2 WHERE condition;

3. 数据更新

更新单条记录

sql 复制代码
UPDATE table_name SET column1 = value1 WHERE condition;

批量更新

sql 复制代码
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;

基于其他表的更新(关联更新)

sql 复制代码
UPDATE table1
JOIN table2 ON table1.common_column = table2.common_column

SET table1.column1 = table2.column2
WHERE table2.condition;

4. 数据删除

删除单条记录

sql 复制代码
DELETE FROM table_name WHERE condition;

批量删除

sql 复制代码
DELETE FROM table_name WHERE condition;

删除表中的所有记录(也叫截断表)

sql 复制代码
TRUNCATE TABLE table_name;

5. 表操作

创建表

sql 复制代码
CREATE TABLE table_name (
    id INT AUTO_INCREMENT PRIMARY KEY,
    column1 VARCHAR(255) NOT NULL,
    column2 INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

修改表结构

添加列

sql 复制代码
ALTER TABLE table_name ADD column_name VARCHAR(255);

删除列

sql 复制代码
ALTER TABLE table_name DROP COLUMN column_name;

修改列类型

sql 复制代码
ALTER TABLE table_name MODIFY column_name INT;

重命名列

sql 复制代码
ALTER TABLE table_name CHANGE old_column_name new_column_name VARCHAR(255);

删除表

sql 复制代码
DROP TABLE table_name;

删除数据库

sql 复制代码
DROP DATABASE database_name;

6. 索引管理

创建索引

sql 复制代码
CREATE INDEX index_name ON table_name (column_name);

创建唯一索引

sql 复制代码
CREATE UNIQUE INDEX index_name ON table_name (column_name);

删除索引

sql 复制代码
DROP INDEX index_name ON table_name;

7. 表连接

内连接(INNER JOIN)

sql 复制代码
SELECT * FROM table1
INNER JOIN table2 ON table1.common_column = table2.common_column;

左连接(LEFT JOIN)

sql 复制代码
SELECT * FROM table1
LEFT JOIN table2 ON table1.common_column = table2.common_column;

右连接(RIGHT JOIN)

sql 复制代码
SELECT * FROM table1
RIGHT JOIN table2 ON table1.common_column = table2.common_column;

全连接(FULL JOIN)

sql 复制代码
SELECT * FROM table1
LEFT JOIN table2 ON table1.common_column = table2.common_column
UNION
SELECT * FROM table1
RIGHT JOIN table2 ON table1.common_column = table2.common_column;

8. 聚合函数

计数

sql 复制代码
SELECT COUNT(*) FROM table_name;

平均值

sql 复制代码
SELECT AVG(column_name) FROM table_name;

总和

sql 复制代码
SELECT SUM(column_name) FROM table_name;

最大值

sql 复制代码
SELECT MAX(column_name) FROM table_name;

最小值

sql 复制代码
SELECT MIN(column_name) FROM table_name;

9. 分组与排序

分组

sql 复制代码
SELECT column1, COUNT(*) FROM table_name
GROUP BY column1;

排序

sql 复制代码
SELECT * FROM table_name
ORDER BY column1 ASC;

SELECT * FROM table_name
ORDER BY column1 DESC;

分页

sql 复制代码
SELECT * FROM table_name
LIMIT 10 OFFSET 20;

10. 子查询

在 WHERE 子句中

sql 复制代码
SELECT * FROM table_name
WHERE column1 = (SELECT MAX(column1) FROM table_name);

在 FROM 子句中

sql 复制代码
SELECT * FROM (SELECT column1, column2 FROM table_name) AS subquery
WHERE condition;

11. 条件表达式

使用 CASE

sql 复制代码
SELECT column1,
    CASE
        WHEN condition1 THEN 'result1'
        WHEN condition2 THEN 'result2'
        ELSE 'default'
    END AS new_column
FROM table_name;

12. 事务管理

开始事务

sql 复制代码
START TRANSACTION;

提交事务

sql 复制代码
COMMIT;

回滚事务

sql 复制代码
ROLLBACK;

13. 备份与恢复

备份

sql 复制代码
mysqldump -u username -p database_name > backup_file.sql

恢复

sql 复制代码
mysql -u username -p database_name < backup_file.sql

14. 用户管理

创建用户

sql 复制代码
CREATE USER 'username'@'host' IDENTIFIED BY 'password';

授予权限

sql 复制代码
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';

撤销权限

sql 复制代码
REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'host';

删除用户

sql 复制代码
DROP USER 'username'@'host';

15. 表和数据库信息

查看表结构

sql 复制代码
DESCRIBE table_name;

查看数据库列表

sql 复制代码
SHOW DATABASES;

查看表列表

sql 复制代码
SHOW TABLES;

查看表的索引

sql 复制代码
SHOW INDEX FROM table_name;

查看表的创建语句

sql 复制代码
SHOW CREATE TABLE table_name;

16. 查询优化

查看查询计划

sql 复制代码
EXPLAIN SELECT * FROM table_name WHERE condition;

查看慢查询日志

sql 复制代码
SHOW VARIABLES LIKE 'slow_query_log';

启用慢查询日志:

sql 复制代码
SET GLOBAL slow_query_log = 'ON';

查看当前的数据库状态

sql 复制代码
SHOW STATUS;

17. 其他实用操作

计算字段的平均值和总和

sql 复制代码
SELECT column1, AVG(column2), SUM(column2) FROM table_name GROUP BY column1;

使用 GROUP_CONCAT 函数

sql 复制代码
SELECT column1, GROUP_CONCAT(column2) FROM table_name GROUP BY column1;

这些 SQL 语句和技巧覆盖了数据库操作的广泛领域,从基础查询到高级管理和优化。掌握这些可以帮助你更高效地管理和操作 MySQL 数据库。

相关推荐
IT项目管理19 分钟前
达梦数据库DMHS介绍及安装部署
linux·数据库
你都会上树?27 分钟前
MySQL MVCC 详解
数据库·mysql
大春儿的试验田32 分钟前
高并发收藏功能设计:Redis异步同步与定时补偿机制详解
java·数据库·redis·学习·缓存
Ein hübscher Kerl.1 小时前
虚拟机上安装 MariaDB 及依赖包
数据库·mariadb
长征coder1 小时前
AWS MySQL 读写分离配置指南
mysql·云计算·aws
醇醛酸醚酮酯2 小时前
Qt项目锻炼——TODO清单(二)
开发语言·数据库·qt
ladymorgana2 小时前
【docker】修改 MySQL 密码后 Navicat 仍能用原密码连接
mysql·adb·docker
PanZonghui2 小时前
Centos项目部署之安装数据库MySQL8
linux·后端·mysql
GreatSQL社区2 小时前
用systemd管理GreatSQL服务详解
数据库·mysql·greatsql
掘根2 小时前
【MySQL进阶】错误日志,二进制日志,mysql系统库
数据库·mysql