数据库整理(行的查)
时间:2021-07-01 10:21:17
帮助过:45人阅读
行的查操作
select distinct 字段 from 库名.表名 where group by
1 行的查操作
1.1 单表查询
select distinct 字段 from 库名.表名
where 条件语句
group by 分组
having 过滤
order by 排序
limit 限制条数
先执行where,再group by分组,having过滤,根据select的字段选择需要显示的字段,distinct去重,order by 排序,limit限制显示的条数
Distinct : 是在字段前面,如果字段是多个的话,必须是多个字段的内容都是重复的才会去重。
Select : 可以进行四则运算,比如原字段是salary,可以要求显示salary*12来显示年薪;Concat()其中是所需要拼接的字段,用于自定义字段的显示格式
Where: 1.比较运算符 2.between XX and YY 闭区间[xx,yy] 3.in(xx,yy) 可能是xx或yy 4.like ‘al%’:以al开头的任意长度位,5.可用正则
Group by: select avg(字段名)from group by 条件字段(分类字段)得到的不是组内的全部子成员,而是每组中的第一条数据
Having: 可以使用聚合函数进行过滤,where不行
Order by: 默认升序。两个或者多个条件排序的话则第一个条件大分,按照第二个条件在小组里小分
Limit: 0,5 表示从1开始一共取5条数据
3,5 = 4,5,6,7,8
1.2 多表查询
Select * from 表1,表2 此时得到的是笛卡尔积下的并表操作,两表的所有数据全部对应一遍
select employee.name from employee,department where employee.dep_id=department.id and department.name=‘技术‘;
利用条件语句得到一个表,相当于合并操作,利用对应关系完成对笛卡尔积的筛选,缺点是语意不明
Select 字段 from 表1 left/right/inner join 表2
Left 左表为主表,右为从表 主表的数据必须全部显示,没有的字段内容显示null
Inner 保留后续条件得到的并集
1.3 子表查询:把一个语句的查询结果作为另一个语句的筛选条件
select name,age from emp where age > (select avg(age) from emp)
使用where语句则其中只能跟着一条子查询语句
Exist:如果后面执行的结果为真则执行,否则不执行前面的语句,且自身内容与前面无关。
select * from employee where exists(select id from department where id=204);
数据库整理(行的查)
标签:多表查询 对应关系 第一个 长度 rom 关系 正则 表名 内容