SQL基础查询day03
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
查询
1、AS 别名
可以不写
可以用引号(里面的字段名就有大小写之分)
当SELECT中的字段是一个表达式,那么查询出来的结果集中,当前列名就是该表达式,这样的可读性差,为此我们可以使用别名来改善。
2、WHERE
使用符号:> , < , >= , <= , != , <> , =
不等于多使用<>,所有数据库都认识,java不支持<>
3、AND、OR
如果一起用的时候,AND和优先级高于OR
可用括号提高优先级
4、LIKE(模糊查询)
LIKE需要借助两个通配符:
%:表示0到多个字符
_ :标识单个字符
5、IN(..,..)
表示是其中的一个,NOT IN表示不是其中的一个
6、BETWEEN…AND..
查询符合某个值域范围条件的数据
BETWEEN小的值AND 大的值
<= =>小的值< =X <=大的值
7、IS NULL、IS NOT NULL
8、ANY(做范围比较(不是等值),比其中一个就可以)
需要配合单选比较操作符> , < , >= , <=使用
>ANY :大于最小的,
9、ALL(做范围比较(不是等值),比其中一个就可以) >ALL :大于最大的 与in的相同之处:给定一组数据进行比较 区别:in是与给定的数据进行等值或比较 Any和all是与给定数据进行范围比较 10、查询条件中使用表达式和函数 11、DISTTNCT 去掉重复行 对多列去重,可以达到的效果是,这几列的组合是不重复的 对单列去重,就一列的值没有重复的。 12、ORDER BY子句(可接多个列名,有先后顺序) 必须出现在SELECT中的最后一个子句 默认升序(ASC)排列、降序(DESC) 使用多列进行排序时,左面的列(给定的第一列)排序优先级高于右面的列 例子: SELECT enmae,sal,deptno FROM emp_lxl ORDER BY sal, deptno DESC 首先按照sal的升序排列,当sal的值相同时,按照deptno的降序排列。若sal的值全表没有重复,那么条二列的排序会被忽略。 聚合函数 也称为分组函数、多行函数、集合函数 聚合函数忽略空值 1、MAX和MIN 用来取得列或表达式最大、最小值 SELECT MAX(hiredata)最晚入职MIN(hiredata) 最早入职FROM emp MAX和MIN不能出现在WHERE语句里。 2、A VG平均(只计算不为空的) 3、SUM总和 4、COUNT:用于统计记录条数 SELECT COUNT(*) 统计表中记录数 分组 1、GROUP BY子句是写在FROM子句之后的。 把GROUP BY 之后的字段相同的数据分成一组,来进行计算。 在表中,deptno值相同的记录将被看做是一组。 只要在SELECT中使用了分组函数(聚合函数),那么,SELECT中其他非分组函数的列若出现,那么也必须同时出现在GROUP BY子句中。反过来没有限制。 若GROUP BY 中出现了多列,那么就按照这几列组合值相同的记录看做一组。 2、HA VING 子句 例子:查看哪个平均工资高过1800的部门,以及平均工资 一开始要统计,先根据GROUP BY 查一次结果,才能进行判断工作。 WHERE:在查询表时,逐条过滤用的,(第一次检索表时)(取决于记录要不要的时候) HA VING:表查完之后,得到结果的基础上才决定要不要该条记录。(二次过滤) 不能单独出现,只能在GROUP BY之后 总结: 1、HA VING用于在进行分组查询后,二次过滤数据的 2、HA VING不能独立存在,必须跟在GROUP BY之后。 3、HA VING中可以使用组函数的结果进行过滤 与WHERE的区别在于: 1、WHERE是用于第一次检索数据进过滤的。 2、HA VINg是用于在检索后,进行二次过滤的。 能改进执行效率(点后面的话) 关联基础 1 . N张表联合查询,需要有N-1连接条件。 2.假设两个表的记录条数分别是X和Y,笛卡尔积将返回X*Y记录。笛卡尔积通常没有意义,导致荡机的最大杀手。 不加连接条件就是会是笛卡尔积,一般不会在程序中使用 3.主键:非空且唯一(一般是表是第一个字段) 外键:表中的一个字段是另一个表的主键 4.关系:一对一、一对多(主表(有主键的表)的一条记录,对应从 表的多条记录)、多对多 5. 可先用过滤条件AND判断条件 6、内连接JOIN ON SELECT e.ename , d.dname FROM emp,dept WHERE e.deptno=d.deptno 等价于: SELECT ,d.dname FROM emp e JOIN dept d ON(e.deptno=d.deptno) 等价于: SELECT ,d.dname FROM emp e NATURAL JOIN dept 7、自然连接 NATURAL JOIN ON 保证两张表只有一个字段一样 自然连接会列名相同的做等值连接。注意,两张表中应当只有一列名字相同才可以使用自然连接。 8、外连接 1)右外连接:RIGHTER OUTER JOIN ON(以右边的表为主,右边表的数据要全部显示出来) 例子:SELECT d.dname,e.ename FROM emp e RIGHTER OUTER JOIN dept d ON(e.dname=d.dname); 2)左外连接:LEFT OUTER JOIN ON(以左边的表为主,左边表的数据要全部显示出来) 3)全外连接:FULL OUTTER JOIN ON(以两边的表为主,哪边不足,补哪边,用null来补。 应用场景: