数据库整理(行的查)

行的查操作 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);
原文地址:https://www.cnblogs.com/shachengcc1/p/11444167.html