MySQL_3.DQL详解


1. 简单查询

1.1 基本查询

select [col_name] from [table_name];
select * from [table_name];
别名: select [col_name] as [别名] from [table_name];关键字AS可选择省略
只显示不同的值:select distinct [col_name] from [table_name];
查询过程执行算术运算:select [algorithm Eg. salary*12+reward] as [别名] from [table_name];

1.2 查询排序

使用ORDER BY子句对查询结果集排序

  1. 升序(默认):关键字ASC可以忽略 select * from [table_name] order by [col_name]
    asc;

  2. 降序:
    select * from [table_name]
    order by [col_name] desc;

  3. 多列排序:
    当col1_name的值相同时才考虑col2_name的排序:
    select * from [table_name]
    order by [col1_name] desc, [col2_name] asc;

1.3 条件查询

select * from [table_name] where [col_name] != 1000;
用AND实现“与”操作,[col_name] BETWEEN 20 AND 30;
OR实现“或”操作,[col_name] in (10,20,30);
NOT实现“非”操作;
关键字LIKE实现模糊查询,下划线匹配一个任意字符串,百分号匹配任意多个字符
where [col_name] like ‘_e%’;

1.4 分页查询

MySQL使用关键字LIMIT实现分页查询,语法如下:
SELECT * FROM [table_name]
[WHERE …]
[ORDER BY …]
LIMIT start, count;
其中start表示从符合要求记录的第几行开始,count指定一次最多读取的记录行数,第一行为0;
只有一个数字时表示的是count


2. 复杂查询

2.1 聚合函数

MySQL提供五个聚合函数对查询结果集进行特定运算:MySQL提供五个聚合函数对查询结果集进行特定运算:

  1. 指定列上最大值:select max([col_name]) from [table_name];
  2. 指定列上最小值:select min([col_name]) from [table_name];
  3. 指定列上数据总和:select sum([col_name]) from [table_name];
  4. 指定列上数据数量:select count([col_name]) from [table_name]; 推荐使用count(*),因为可能存在某列存在null;
  5. 指定列上数据平均值:select avg ([col_name]) from [table_name];

2.2 分组查询

GROUP BY将指定列上相同值的记录分在同一组进行查询
Eg.查询每个部门最高薪资Select max(salary) from emp group by deptId;(首先按部门分组,再查询最大值)

2.3 子查询

在某个或多个子句中包含其他的查询语句,即复合查询语句
Eg.查询研发部的员工信息
select * from emp where deptId = (
select did from dept where dname = ‘研发部’ );

2.4 跨表查询

从多个表中的多个列查询结果集,若不指定相等条件,则产生笛卡儿积
传统查询: Eg.查询每个员工姓名及其部门
select ename, dname from emp as e, dept as d where e.deptId = d.did;
为解决两个表中判定条件列上值为空的跨表查询,提出四种跨表查询方式:
1)内连接(INNER JOIN):
Select ename,dname
from emp inner join dept
on emp.deptId = dept.did;
2)左外连接(LEFT OUTER JOIN):以左侧表为主,右侧没有对应记录也会显示
Select ename,dname
from emp left join dept
on emp.deptId = dept.did;
3)右外连接(RIGHT OUTER JOIN):以右侧表为主,左侧没有对应记录也会显示
Select ename,dname
from emp right join dept
on emp.deptId = dept.did;
4)全连接(FULL JOIN):显示所有记录,MySQL不支持全连接语法,所以只能查询左外连接和右外连接结果集的合并

2.5 结果集合并

关键字UNION用于将两个查询结果集合并为一个

  • 直接用UNION仅显示一遍重复数据的合并结果集;
  • 使用UNION ALL允许出现重复数据;

2.6 函数补充

  • YEAR():获取日期时间类型数据的年份;
  • MONTH():获取日期时间类型数据的月份;
  • DAY():获取日期类型数据的天数;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值