SQL基础查询day03

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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来补。

应用场景:

相关文档
最新文档