MySQL之数据库查询语言(DQL)
MySQL之数据库查询语言(DQL)
数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果给客户端,查询返回的结果是一张虚拟表 。
select selection_list //要查询的列名称 from table_list //要查询的表名称 where condition //行条件 group by grouping_columns //对结果分组 having condition //分组后的行条件 order by sorting_columns //对结果排序 limit offset_start, row_count //结果限定
-
基础查询
查询所有列:
select * from table_name;
查询指定列
select 列名1,列名2,...from table_name;
-
条件查询
条件查询就是在查询时给出where子句,在where子句中可以使用如下运算符及关键字:
=, != , <>, < ,<= ,> ,>=;
between…and;
in(set); //括号中可以放多个值,用逗号隔开
is null; //判断是否为空
and, or , not , is not null例子:
1)查询性别为女,年龄大于等于50的记录
select * from stu where gender = ‘femal’ and age>=50;
2)查询学号为s_1001,或者姓名为lisi的记录
select * from stu where sid = ‘s_1001’ or name = ‘lisi’;
3)查询学号为s_1001,s_1002,s_1003的记录
select * from stu where sid = ‘s_1001’ or sid = ‘s_1002’ or sid = ‘s_1003’;
select * from stu where sid in( ‘s_1001’ , ‘s_1002’ , ‘s_1003’);
4)查询学号不是s_1001,s_1002,s_1003的记录
select * from stu where sid not in( ‘s_1001’ , ‘s_1002’ , ‘s_1003’);
5)查询年龄为null的记录
select * from stu where age is null;
6)查询年龄在20和40之间的记录
select * from stu where age between 20 and 40; -
模糊查询
通配符:_ 任意字符 % 任意0~n个字符
例子:
1)查询姓名有5个字母组成的记录
select * from stu where name like ‘_ _ _ _ _ ';
2)查询姓名有5个字母组成且第5个字母为i的记录
select * from stu where name like ’ _ _ _ _ i’;
3)查询姓名以‘z’开头的记录
select * from stu where name like ‘z%’;
4)查询姓名第二个字母为‘’i’的记录
select * from stu where name like ‘_i%’;
5)查询姓名中包含‘a’的记录
select * from stu where name like ‘%a%’; -
字段控制查询
1)去除重复记录需要使用distinct
例子:
select distinct sal from emp; //在emp表中查询sal列,并去除重复记录2)查询两列之和
例如sal和comn两列都是数值类型,可以进行运算。但是,如果sal或comn中有一个字段不是数值,那么会出错。
select sal + if null(comn,0) from emp; // if null(comn,0),如果为null,则返回0;否则,不变
3)给列名添加别名
select sal + if null(comn,0) as total from emp; //别名为total,而且as可以省略
-
排序
order by 列名 [asc|desc]
例子:
select * from emp order by age asc; //查询所有记录,并按年龄升序排列
select * from emp order by sal asc, empno desc; //查询所有记录,并按月薪升序排列,月薪相同时,按编号降序排列 -
聚合函数
聚合函数适用于纵向运算的函数。
count():统计指定列不为null的记录数;
max():计算指定列的最大值,如果执行列是字符串,使用字符串排序规则得到最大值
min():计算指定列的最小值
sum():计算指定列的数值和,如果指定列不是数值类型,返回值为0
avg():计算指定列的平均值,如果指定列不是数值类型,返回值为0例子:
select avg(age) from stu; //查找年龄的平均值
select max(age) from stu; //查找年龄的最大值
select sum(sal)+sum(comn) from emp; //查询所有雇员月薪+佣金和
select count( * ) from emp; //查询表中所有记录数
select count(comn) from emp; //查询有佣金的人数
select count( * ) from emp where sal >5000; //查询工资大于5000的人数 -
分组查询 group by
select count( * ) from emp group by deptno; //查询各部门的人数
select deptno ,sum(sal) from emp group by deptno; //查询各部门的部门编号和工资和
select deptno ,count( * ) from emp group by deptno; //查询各部门的部门编号和人数
select deptno ,count( * ) from emp where sal >5000 group by deptno; //查询各部门的部门编号和工资大于5000的人数having子句用于分组之后再筛选
select deptno ,sum(sal) from emp group by deptno having sum(sal)>9000; ////查询工资总和大于9000的部门编号和该部门人数
having是对分组后数据进行过滤,where是在分组前对数据进行过滤
having后面可以使用聚合函数,where后不可以使用聚合函数 -
limit 方言
limit用来限定查询结果的起始行以及总行数。
select * from emp limit 0,5; //查询5行记录,从第 0 行开始
书写顺序:select —— from —— where —— group by —— having —— order by —— limit
执行顺序:from —— where —— group by —— having —— select —— order by ——limit
- 07--MySQL自学教程:DQL(Data Query Language:数据库查询语言)简介、基础查询、条件查询、模糊查询以及排序(一)
- 07--MySQL自学教程:DQL(Data Query Language:数据库查询语言)简介、基础查询、条件查询、模糊查询以及排序(一)
- MySQL 自学笔记之:数据库查询 DQL(Data Query Lanuage)汇总函数
- DQL数据库查询语言
- 数据库查询语言(2)DQL——零散知识
- JAVAWEB开发之数据库简介、MySQL的安装与卸载(处理中文乱码)、以及MySQL语言(DDL、DML、DCL、DQL)的详解和使用
- php中对MYSQL操作之预处理技术(2)数据库dql查询语句
- Mysql的数据查询语言DQL之基本查询
- 数据库查询语言(1)DQL——零散知识
- Mysql的数据查询语言DQL之连接查询
- Mysql的数据查询语言DQL之子查询
- MySQL——数据查询语言DQL与分组查询(四)
- [Mysql]数据查询语言(DQL)
- 【7】mysql数据查询语言DQL(Data Query Language)②
- 08--MySQL自学教程:DQL(数据库查询)字段控制查询、聚合函数、分组查询、limit(二)
- MySQL 自学笔记之:数据库查询 DQL(Data Query Lanuage)基本查询
- mysql--数据查询语言DQL
- mysql(DQL操作)查询(条件查询,模糊查询等)数据库-命令行
- 【6】mysql数据查询语言DQL(Data Query Language)①
- MySQL (五)上 DQL 数据查询语言(sql 语句)