分类 | 全称 | 说明 |
---|---|---|
DDL | Data Definition Language | 数据定义语言,用来定义数据库对象(数据库、表、字段) |
DML | Data Manipulation Language | 数据操作语言,用来对数据库表中的数据进行增删改 |
DQL | Data Query Language | 数据查询语言,用来查询数据库中表的记录 |
DCL | Data Control Language | 数据控制语言,用来创建数据库用户、控制数据库的访问权限 |
查询关键字:select
语法:
select
字段列表
from
表名列表
where
条件列表
group by
分组字段列表
having
分组后条件列表
order by
排序字段列表
limit
分页参数
1.查询多个字段
select 字段1,字段2,字段3… from 表名;
select * from 表名;
2.设置别名
select 字段1 [as 别名1],字段2 [as 别名2]… from 表名; (as 可以省略)
3.去除重复记录
select distinct 字段列表 from 表名;
1.语法
select 字段列表 from 表名列表 where 条件列表
2.条件:
比较运算符 | 功能 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
BETWEEN... AND... | 在某个范围之内(含最小、最大值) |
IN(…, …, …) | 在in之后的列表中的值,多选一 |
LIKE 占位符 | 模糊匹配( _匹配单个字符, %匹配任意个字符) |
IS NULL | 是NULL |
逻辑运算符 | 功能 |
---|---|
AND 或 && | 并且 (多个条件同时成立) |
OR 或 || | 或者 (多个条件任意一个成立) |
NOT 或 ! | 非,不是 |
select * from emp where age >=15 and age <= 20;
select * from emp where age between 15 and 20;
select * from emp where idcard like '%X';
1.介绍
将一列数据作为一个整体,进行纵向计算。
2.常见聚合函数
函数 | 功能 |
---|---|
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
3.语法
select 聚合函数(字段列表)from 表名;
select count(*) from emp; select count(idcard) from emp; select avg(age) from emp; select sum(age) from emp where workaddress = '西安';
1.语法
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
select gender, count(*) form emp group by gender; select gender, avg(age) form emp group by gender; 查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址: select workaddress, count(*) address_count from emp where age < 45 group by workaddress having address_count >= 3;
1.语法
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
2.排序方式
ASC:升序(默认值)
DESC:降序
select * from emp order by age -/asc/desc; select * from emp order by entrydate desc; 根据年龄对员工进行升序排序,年龄相同,再按照入职时间进行降序排序: select * from emp order by age asc ,entrydate desc;
1.语法
select 字段列表 from 表名 limit 起始索引,查询记录数;
select * from emp limit 0,10/limit 10; select * from emp limit 10,10;
案例:
CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), age INT, gender VARCHAR(10), entry_date DATE ); INSERT INTO employees (name, age, gender, entry_date) VALUES ('张三', 20, '男', '2020-01-01'), ('李四', 21, '男', '2021-02-01'), ('王五', 22, '女', '2022-03-01'), ('赵六', 23, '男', '2023-04-01'), ('孙七', 30, '男', '2015-05-01'), ('周八', 35, '女', '2010-06-01'), ('吴九', 40, '男', '2008-07-01'), ('郑十', 50, '女', '2005-08-01'), ('钱十一', 25, '男', '2018-09-01'), ('冯十二', 32, '女', '2012-10-01');
id | name | age | gender | entry_date |
---|---|---|---|---|
1 | 张三 | 20 | 男 | 2020-01-01 |
2 | 李四 | 21 | 男 | 2021-02-01 |
3 | 王五 | 22 | 女 | 2022-03-01 |
4 | 赵六 | 23 | 男 | 2023-04-01 |
5 | 孙七 | 30 | 男 | 2015-05-01 |
6 | 周八 | 35 | 女 | 2010-06-01 |
7 | 吴九 | 40 | 男 | 2008-07-01 |
8 | 郑十 | 50 | 女 | 2005-08-01 |
9 | 钱十一 | 25 | 男 | 2018-09-01 |
10 | 冯十二 | 32 | 女 | 2012-10-01 |
select * from employees where age in(20,21,22,23);
id | name | age | gender | entry_date |
---|---|---|---|---|
1 | 张三 | 20 | 男 | 2020-01-01 |
2 | 李四 | 21 | 男 | 2021-02-01 |
3 | 王五 | 22 | 女 | 2022-03-01 |
select * from employees where gender='男' and age between 20 and 40 and name like '___';
id | name | age | gender | entry_date |
---|---|---|---|---|
9 | 钱十一 | 25 | 男 | 2018-09-01 |
select gender,count(*) from employees where age <= 60 group by gender;
gender | count(*) |
---|---|
男 | 6 |
女 | 4 |
select name,age,entry_date from employees where age <= 35 order by age,entry_date desc;
name | age | entry_date |
---|---|---|
张三 | 20 | 2020-01-01 |
李四 | 21 | 2021-02-01 |
王五 | 22 | 2022-03-01 |
赵六 | 23 | 2023-04-01 |
钱十一 | 25 | 2018-09-01 |
孙七 | 30 | 2015-05-01 |
冯十二 | 32 | 2012-10-01 |
周八 | 35 | 2010-06-01 |
select * from employees where gender = '男' and age > 20 and age <= 40 order by age asc,entry_date asc limit 5;
id | name | age | gender | entry_date |
---|---|---|---|---|
2 | 李四 | 21 | 男 | 2021-02-01 |
4 | 赵六 | 23 | 男 | 2023-04-01 |
9 | 钱十一 | 25 | 男 | 2018-09-01 |
5 | 孙七 | 30 | 男 | 2015-05-01 |
select e.name ename, e.age eage from emp e where e.age > 15 order byy eage asc;给select的别名不能给where后面用,select的别名出现在where之后