查询
发布于 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 我们将第一时间删除。
相关素材