查询

发布于 2021-09-04 23:30

第三章简单查询

语法格式:

select 字段名1, 字段名2, …… from 表名;

去重查询:

select distinct 字段名 from 表名

(distinct只能出现在所有字段的前面)

注:

1、任何一条sql语句以“;”结尾

2、sql语句不区分大小写

3、标准sql语句中字符串要求用单引号括起来

第四章条件查询

语法格式:select 字段名1, 字段名2, …… from 表名 where 条件;

执行顺序:先from,然后where,最后select

支持如下运算符

注:

1、between … and …也可以用在字符串上:范围是左闭右开

2、and的优先级大于or,所以建议加括号

第五章排序查询

排序采用order by子句,order by后面跟上排序字段,排序字段可以放多个,多个采用逗号间隔,order by默认采用升序,如果存在where子句那么order by必须放到where语句的后面

 

执行顺序:

先from,然后where,再select,最后order by

 

注:越靠前的字段越能起主导作用,只有当前面的字段无法完成排序的时候,才会启用后面的字段

第六章分组函数

所有的分组函数都是对“某一组”数据进行操作

count( * ):统计总记录数

count( XXX ):统计XXX字段中不为NULL的数据总数量

注:

1、分组函数会自动忽略NULL

2、所有数据库通用:只要NULL参加运算,结果一定是NULL

3、单行处理函数:ifbull(),这是空处理函数

4、分组函数不能直接出现在where子句中

第七章分组查询

分组查询主要涉及到两个子句,分别是:group by和having

一、group by

如:

select job, sum(sal) from emp group by job;

注:

1、分组函数一般都会和group by联合使用,并且分组函数都是再group by语句执行结束之后才会执行,当一条sql语句中没有group by时,整张表的数据会自成一组。

2、在SQL语句中若有group by 语句,那么在select语句后面只能跟分组函数+参与分组的字段。

二、having

如果想对分组数据再进行过滤需要使用having子句

注:在不能使用where过滤数据时,才考虑使用having

第八章连接查询

在实际开发中,大部分情况下都不是从单表中查询数据,一般都是多表联合查询得出结果

连接查询:也可以叫跨表查询,需要关联多个表进行查询

一、连接查询的分类

(1)按年代划分

1、SQL92

2、SQL99

sql92语法和sql99语法的区别:

99语法可以做到表的连接和查询条件分离,特别是多个表进行连接的时候,会比sql92更清晰

(2)按表的连接方式划分

1、内连接:

等值连接:连接条件是等量关系

非等值连接:连接条件是非等值关系

自连接:一张表看作两张表,自己连自己

可能会损失数据,因为匹配不到的数据会自动舍弃

2、外连接:

左外连接(左连接):左边的表是主表

右外连接(右连接):右边的表是主表

数据不会丢失,因为主表的数据一定会全部查询出来,副表匹配不上的会自动

匹配NULL

左连接右右连接的写法,右连接也有对应的左连接写法

3、全连接(很少用)

二、笛卡尔积现象

当两张表进行连接查询的时候,没有任何条件进行限制,最终的查询结果条数是两张表记录条数的乘积

避免的方法:

使用条件过滤,但是匹配次数依旧是两张表记录条数的乘积,并没有减少

三、内连接和外连接的区别

内连接:

假设A和B表进行连接,使用内连接时,凡是A表和B表能够匹配上的记录查询出来,这就是内连接,AB两张表没有主副之分,两张表是平等的

外连接:

假设A和B表进行连接,使用外连接时,AB两张表是分主副表的,主要查询主表中的数据,捎带查询副表中的数据,当副表中的数据没有和主表中数据匹配上时,副表会自动模拟出NULL与之匹配

四、多表查询

第九章子查询

select语句当中嵌套select语句,被嵌套的select语句就是子查询

一、where中的子查询

二、from中的子查询

t前面的空格是别名的意思

三、select语句中的子查询

select e.ename, ( select d.dname from dept d where e.deptno = d.deptno )

as dname from emp e;

犹豫不决

本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材