文章目录
- [create 增加](#create 增加)
- [**retrieve 读取查询 单表查询**](#retrieve 读取查询 单表查询)
- [update 更新](#update 更新)
- [delete 删除](#delete 删除)
-
- [删除部分数据 delete](#删除部分数据 delete)
- [删除全部数据 delete](#删除全部数据 delete)
- [清除表中所有数据 truncate](#清除表中所有数据 truncate)
create 增加
为表添加数据 insert
- 指定字段添加数据
sql
mysql> truncate table_test;
Query OK, 0 rows affected (0.08 sec)
mysql> select * from table_test tt ;
Empty set
mysql> insert into table_test (id,name,create_data,`rank`) values (12,'dept',now(),1);
Query OK, 1 row affected (0.03 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from table_test tt ;
+----+------+-------------+------+
| id | name | create_data | rank |
+----+------+-------------+------+
| 12 | dept | 2025-11-24 | 1a |
+----+------+-------------+------+
1 row in set (0.05 sec)
mysql>
sql
mysql> use db_02;
Database changed
mysql> show create table table_test;
+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| table_test | CREATE TABLE `table_test` (
`id` int DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`create_data` date DEFAULT NULL,
`rank` enum('1a','2b','3c','4d') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.08 sec)
mysql>
- 不指定字段添加数据,一定要按照顺序插入数据;
sql
mysql> insert into table_test values (1,'dept',now(),1);
Query OK, 1 row affected (0.03 sec)
mysql> select * from table_test;
+----+------+-------------+------+
| id | name | create_data | rank |
+----+------+-------------+------+
| 12 | dept | 2025-11-24 | 1a |
| 1 | dept | 2025-11-24 | 1a |
+----+------+-------------+------+
2 rows in set (0.05 sec)
mysql>
为指定字段添加数据
同上,只是添加字段的写法
sql
mysql> insert into table_test (id,create_data,`rank`) values (2,now(),1);
Query OK, 1 row affected (0.01 sec)
mysql> select * from table_test;
+----+------+-------------+------+
| id | name | create_data | rank |
+----+------+-------------+------+
| 12 | dept | 2025-11-24 | 1a |
| 1 | dept | 2025-11-24 | 1a |
| 2 | NULL | 2025-11-24 | 1a |
+----+------+-------------+------+
3 rows in set (0.05 sec)
mysql>
使用set 添加数据
sql
mysql> truncate TABLE table_test;
Query OK, 0 rows affected (0.05 sec)
mysql> INSERT INTO table_test SET id = 3, NAME = 'name3', create_data = CURRENT_DATE, `rank` = 2;
Query OK, 1 row affected (0.03 sec)
mysql> SELECT * FROM table_test;
+----+-------+-------------+------+
| id | name | create_data | rank |
+----+-------+-------------+------+
| 3 | name3 | 2025-11-24 | 2b |
+----+-------+-------------+------+
1 row in set (0.07 sec)
mysql>
同时添加多条数据
insert into select
sql
INSERT INTO table2 (column1, column2, column3)
SELECT column1, column2, column3
FROM table1
WHERE some_condition;
inset into table
sql
INSERT INTO table_test (column1, column2, column3)
VALUES
(value1_1, value2_1, value3_1),
(value1_2, value2_2, value3_2),
(value1_3, value2_3, value3_3);
retrieve 读取查询 单表查询
简单查询 select
sql
select [Distinct] * [colum1,colum2,······,column]
from table
where [continue]
group by colum [having 分组表达式]
order by colum [asc|desc]
limit n
sql
// 更改字段名称,方便查询
ALTER TABLE table_test CHANGE `rank` desc_rank ENUM('1a', '2b', '3c', '4d');
sql
mysql> select id,name,desc_rank from
-> table_test;
+----+-------+-----------+
| id | name | desc_rank |
+----+-------+-----------+
| 1 | name1 | 2b |
| 2 | name2 | 1a |
| 4 | name3 | 2b |
| 3 | name3 | 3c |
+----+-------+-----------+
4 rows in set (0.07 sec)
mysql> SELECT * FROM table_test;
+----+-------+-------------+-----------+
| id | name | create_data | desc_rank |
+----+-------+-------------+-----------+
| 1 | name1 | 2025-11-24 | 2b |
| 2 | name2 | 2025-11-24 | 1a |
| 4 | name3 | 2025-11-23 | 2b |
| 3 | name3 | 2025-11-24 | 3c |
+----+-------+-------------+-----------+
4 rows in set (0.08 sec)
mysql>
条件查询
where 关系运算符
sql
mysql> select * from table_test where id >2;
+----+-------+-------------+-----------+
| id | name | create_data | desc_rank |
+----+-------+-------------+-----------+
| 4 | name3 | 2025-11-23 | 2b |
| 3 | name3 | 2025-11-24 | 3c |
+----+-------+-------------+-----------+
2 rows in set (0.09 sec)
mysql> select * from table_test where desc_rank = 2b;
1054 - Unknown column '2b' in 'where clause'
mysql> select * from table_test where desc_rank = 2;
+----+-------+-------------+-----------+
| id | name | create_data | desc_rank |
+----+-------+-------------+-----------+
| 1 | name1 | 2025-11-24 | 2b |
| 4 | name3 | 2025-11-23 | 2b |
+----+-------+-------------+-----------+
2 rows in set (0.09 sec)
mysql>
where in
sql
mysql> select * from table_test where name in ('name1','name3');
+----+-------+-------------+-----------+
| id | name | create_data | desc_rank |
+----+-------+-------------+-----------+
| 1 | name1 | 2025-11-24 | 2b |
| 4 | name3 | 2025-11-23 | 2b |
| 3 | name3 | 2025-11-24 | 3c |
+----+-------+-------------+-----------+
3 rows in set (0.07 sec)
mysql> select * from table_test where name not in ('name1','name3');
+----+-------+-------------+-----------+
| id | name | create_data | desc_rank |
+----+-------+-------------+-----------+
| 2 | name2 | 2025-11-24 | 1a |
+----+-------+-------------+-----------+
1 row in set (0.09 sec)
mysql>
where between and
sql
mysql> select * from table_test where create_date between 20251024 and 20251123;
+----+-------+-------------+-----------+
| id | name | create_date | desc_rank |
+----+-------+-------------+-----------+
| 4 | name3 | 2025-11-23 | 2b |
+----+-------+-------------+-----------+
1 row in set (0.08 sec)
mysql> select * from table_test where create_date between 20251124 and 20251124;
+----+-------+-------------+-----------+
| id | name | create_date | desc_rank |
+----+-------+-------------+-----------+
| 1 | name1 | 2025-11-24 | 2b |
| 2 | name2 | 2025-11-24 | 1a |
| 3 | name3 | 2025-11-24 | 3c |
+----+-------+-------------+-----------+
3 rows in set (0.07 sec)
mysql> select * from table_test where create_date between 20251123 and 20251124;
+----+-------+-------------+-----------+
| id | name | create_date | desc_rank |
+----+-------+-------------+-----------+
| 1 | name1 | 2025-11-24 | 2b |
| 2 | name2 | 2025-11-24 | 1a |
| 4 | name3 | 2025-11-23 | 2b |
| 3 | name3 | 2025-11-24 | 3c |
+----+-------+-------------+-----------+
4 rows in set (0.04 sec)
mysql>
where null
sql
mysql> insert into table_test values(5,null,null,null);
Query OK, 1 row affected (0.03 sec)
mysql> select * from table_test;
+----+-------+-------------+-----------+
| id | name | create_date | desc_rank |
+----+-------+-------------+-----------+
| 1 | name1 | 2025-11-24 | 2b |
| 2 | name2 | 2025-11-24 | 1a |
| 4 | name3 | 2025-11-23 | 2b |
| 3 | name3 | 2025-11-24 | 3c |
| 5 | NULL | NULL | NULL |
+----+-------+-------------+-----------+
5 rows in set (0.07 sec)
mysql> select * from table_test where name is null;
+----+------+-------------+-----------+
| id | name | create_date | desc_rank |
+----+------+-------------+-----------+
| 5 | NULL | NULL | NULL |
+----+------+-------------+-----------+
1 row in set (0.06 sec)
mysql> select * from table_test where name is not null;
+----+-------+-------------+-----------+
| id | name | create_date | desc_rank |
+----+-------+-------------+-----------+
| 1 | name1 | 2025-11-24 | 2b |
| 2 | name2 | 2025-11-24 | 1a |
| 4 | name3 | 2025-11-23 | 2b |
| 3 | name3 | 2025-11-24 | 3c |
+----+-------+-------------+-----------+
4 rows in set (0.08 sec)
mysql>
where like 模糊查询
sql
mysql> select * from table_test;
+----+-------+-------------+-----------+
| id | name | create_date | desc_rank |
+----+-------+-------------+-----------+
| 1 | name1 | 2025-11-24 | 2b |
| 2 | name2 | 2025-11-24 | 1a |
| 4 | name3 | 2025-11-23 | 2b |
| 3 | name3 | 2025-11-24 | 3c |
| 5 | NULL | NULL | NULL |
+----+-------+-------------+-----------+
5 rows in set (0.07 sec)
mysql> select * from table_test where name like 'name%';
+----+-------+-------------+-----------+
| id | name | create_date | desc_rank |
+----+-------+-------------+-----------+
| 1 | name1 | 2025-11-24 | 2b |
| 2 | name2 | 2025-11-24 | 1a |
| 4 | name3 | 2025-11-23 | 2b |
| 3 | name3 | 2025-11-24 | 3c |
+----+-------+-------------+-----------+
4 rows in set (0.07 sec)
mysql> select * from table_test where name like 'nam%';
+----+-------+-------------+-----------+
| id | name | create_date | desc_rank |
+----+-------+-------------+-----------+
| 1 | name1 | 2025-11-24 | 2b |
| 2 | name2 | 2025-11-24 | 1a |
| 4 | name3 | 2025-11-23 | 2b |
| 3 | name3 | 2025-11-24 | 3c |
+----+-------+-------------+-----------+
4 rows in set (0.07 sec)
mysql> select * from table_test where name like 'nam%3';
+----+-------+-------------+-----------+
| id | name | create_date | desc_rank |
+----+-------+-------------+-----------+
| 4 | name3 | 2025-11-23 | 2b |
| 3 | name3 | 2025-11-24 | 3c |
+----+-------+-------------+-----------+
2 rows in set (0.08 sec)
mysql>
distinct 去重
sql
mysql> select * from table_test;
+----+-------+-------------+-----------+
| id | name | create_date | desc_rank |
+----+-------+-------------+-----------+
| 1 | name1 | 2025-11-24 | 2b |
| 2 | name2 | 2025-11-24 | 1a |
| 4 | name3 | 2025-11-23 | 2b |
| 3 | name3 | 2025-11-24 | 3c |
| 5 | NULL | NULL | NULL |
+----+-------+-------------+-----------+
5 rows in set (0.07 sec)
mysql> select distinct name from table_test;
+-------+
| name |
+-------+
| name1 |
| name2 |
| name3 |
| NULL |
+-------+
4 rows in set (0.06 sec)
mysql> select distinct name,create_date from table_test;
+-------+-------------+
| name | create_date |
+-------+-------------+
| name1 | 2025-11-24 |
| name2 | 2025-11-24 |
| name3 | 2025-11-23 |
| name3 | 2025-11-24 |
| NULL | NULL |
+-------+-------------+
5 rows in set (0.07 sec)
mysql>
and的优先级高于or,两个使用时 确定优先级使用
()区分
高级查询
聚合函数
count()统计表中数据sum()计算表中数据avg()计算平均值max()计算最大值min()计算最小值
排序函数
order by,进行排序查询
- 对查询结果进行排序
- 利用decode函数排序,orcle中有这个关键字,MySQL没有;
- 利用case when进行排序,Oracle和MySQL都可以,MySQL用这个平替;
sql
mysql> select * from table_test order by id;
+----+-------+-------------+-----------+
| id | name | create_date | desc_rank |
+----+-------+-------------+-----------+
| 1 | name1 | 2025-11-24 | 2b |
| 2 | name2 | 2025-11-24 | 1a |
| 3 | name3 | 2025-11-24 | 3c |
| 4 | name3 | 2025-11-23 | 2b |
| 5 | NULL | NULL | NULL |
+----+-------+-------------+-----------+
5 rows in set (0.06 sec)
mysql> select * from table_test order by name,id;
+----+-------+-------------+-----------+
| id | name | create_date | desc_rank |
+----+-------+-------------+-----------+
| 5 | NULL | NULL | NULL |
| 1 | name1 | 2025-11-24 | 2b |
| 2 | name2 | 2025-11-24 | 1a |
| 3 | name3 | 2025-11-24 | 3c |
| 4 | name3 | 2025-11-23 | 2b |
+----+-------+-------------+-----------+
5 rows in set (0.12 sec)
mysql> select id,name,create_date,desc_rank from table_test order by decode(name,'name1',1,'name2',2,3);
1305 - FUNCTION db_02.decode does not exist
mysql> select id,name,create_date,desc_rank from table_test order by case name when 'name1' then 1 when 'name2' then 2 else 3 end;
+----+-------+-------------+-----------+
| id | name | create_date | desc_rank |
+----+-------+-------------+-----------+
| 1 | name1 | 2025-11-24 | 2b |
| 2 | name2 | 2025-11-24 | 1a |
| 4 | name3 | 2025-11-23 | 2b |
| 3 | name3 | 2025-11-24 | 3c |
| 5 | NULL | NULL | NULL |
+----+-------+-------------+-----------+
5 rows in set (0.10 sec)
mysql>
null,默认被认为是最小值
分组查询
group by分组,查询每个分组的数据;- 结合聚合函数,可以统计所需要的数据;
- 结合
having关键字使用,附加group的分组条件; - 结合limit限制查询数据,一个参数查数据,两个参数选页数;
sql
mysql> select id as 'No.',name as 'Name',create_date as 'Date',desc_rank as 'Desc' from table_test as t1 group by 'Name';
+-----+-------+------------+------+
| No. | Name | Date | Desc |
+-----+-------+------------+------+
| 1 | name1 | 2025-11-24 | 2b |
+-----+-------+------------+------+
1 row in set (0.08 sec)
mysql> select id as 'No.',name as 'Name',create_date as 'Date',desc_rank as 'Desc' from table_test as t1 group by t1.Name;
+-----+-------+------------+------+
| No. | Name | Date | Desc |
+-----+-------+------------+------+
| 1 | name1 | 2025-11-24 | 2b |
| 2 | name2 | 2025-11-24 | 1a |
| 4 | name3 | 2025-11-23 | 2b |
| 5 | NULL | NULL | NULL |
+-----+-------+------------+------+
4 rows in set (0.06 sec)
mysql> select id as 'No.',name as 'Name',create_date as 'Date',desc_rank as 'Desc',count(*) from table_test as t1 group by t1.Name;
+-----+-------+------------+------+----------+
| No. | Name | Date | Desc | count(*) |
+-----+-------+------------+------+----------+
| 1 | name1 | 2025-11-24 | 2b | 1 |
| 2 | name2 | 2025-11-24 | 1a | 1 |
| 4 | name3 | 2025-11-23 | 2b | 2 |
| 5 | NULL | NULL | NULL | 1 |
+-----+-------+------------+------+----------+
4 rows in set (0.09 sec)
mysql> select id as 'No.',name as 'Name',create_date as 'Date',desc_rank as 'Desc',count(*) from table_test as t1 group by t1.Name having id >3;
+-----+-------+------------+------+----------+
| No. | Name | Date | Desc | count(*) |
+-----+-------+------------+------+----------+
| 4 | name3 | 2025-11-23 | 2b | 2 |
| 5 | NULL | NULL | NULL | 1 |
+-----+-------+------------+------+----------+
2 rows in set (0.13 sec)
mysql> select id as 'No.',name as 'Name',create_date as 'Date',desc_rank as 'Desc',count(*) from table_test as t1 group by t1.Name limit 2;
+-----+-------+------------+------+----------+
| No. | Name | Date | Desc | count(*) |
+-----+-------+------------+------+----------+
| 1 | name1 | 2025-11-24 | 2b | 1 |
| 2 | name2 | 2025-11-24 | 1a | 1 |
+-----+-------+------------+------+----------+
2 rows in set (0.11 sec)
mysql> select id as 'No.',name as 'Name',create_date as 'Date',desc_rank as 'Desc',count(*) from table_test as t1 group by t1.Name limit 2,2;
+-----+-------+------------+------+----------+
| No. | Name | Date | Desc | count(*) |
+-----+-------+------------+------+----------+
| 4 | name3 | 2025-11-23 | 2b | 2 |
| 5 | NULL | NULL | NULL | 1 |
+-----+-------+------------+------+----------+
2 rows in set (0.10 sec)
mysql>
别名 as
- 字段别名 table as t1
- 表别名 colum as c1,单表查询是一般用不上表别名;
sql
mysql> select id as 'No.',name as'Name',create_date as 'Date',desc_rank as 'Desc' from table_test as t1 ;
+-----+-------+------------+------+
| No. | Name | Date | Desc |
+-----+-------+------------+------+
| 1 | name1 | 2025-11-24 | 2b |
| 2 | name2 | 2025-11-24 | 1a |
| 4 | name3 | 2025-11-23 | 2b |
| 3 | name3 | 2025-11-24 | 3c |
| 5 | NULL | NULL | NULL |
+-----+-------+------------+------+
5 rows in set (0.09 sec)
mysql>
update 更新
更新全部数据
sql
mysql> SELECT * FROM table_test;
+----+-------+-------------+------+
| id | name | create_data | rank |
+----+-------+-------------+------+
| 3 | name3 | 2025-11-24 | 2b |
+----+-------+-------------+------+
1 row in set (0.07 sec)
mysql> update table_test set id = 1,name = 'name1';
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT * FROM table_test;
+----+-------+-------------+------+
| id | name | create_data | rank |
+----+-------+-------------+------+
| 1 | name1 | 2025-11-24 | 2b |
+----+-------+-------------+------+
1 row in set (0.08 sec)
mysql>
更新部分数据
sql
mysql> SELECT * FROM table_test;
+----+-------+-------------+------+
| id | name | create_data | rank |
+----+-------+-------------+------+
| 1 | name1 | 2025-11-24 | 2b |
| 3 | name3 | 2025-11-24 | 2b |
+----+-------+-------------+------+
2 rows in set (0.09 sec)
mysql> update table_test set name = 'name2' where id = 3;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT * FROM table_test;
+----+-------+-------------+------+
| id | name | create_data | rank |
+----+-------+-------------+------+
| 1 | name1 | 2025-11-24 | 2b |
| 3 | name2 | 2025-11-24 | 2b |
+----+-------+-------------+------+
2 rows in set (0.09 sec)
mysql>
delete 删除
删除部分数据 delete
sql
mysql> SELECT * FROM table_test;
+----+-------+-------------+------+
| id | name | create_data | rank |
+----+-------+-------------+------+
| 1 | name1 | 2025-11-24 | 2b |
| 3 | name2 | 2025-11-24 | 2b |
+----+-------+-------------+------+
2 rows in set (0.09 sec)
mysql> delete from table_test where id = 3;
Query OK, 1 row affected (0.04 sec)
mysql> SELECT * FROM table_test;
+----+-------+-------------+------+
| id | name | create_data | rank |
+----+-------+-------------+------+
| 1 | name1 | 2025-11-24 | 2b |
+----+-------+-------------+------+
1 row in set (0.07 sec)
mysql>
删除全部数据 delete
sql
delete from table_test
清除表中所有数据 truncate
sql
mysql> truncate TABLE table_test;
Query OK, 0 rows affected (0.05 sec)