SQL查询

SQL中的别名;

对象名 as 别名

对象名 别名

条件查询:

条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下条件表达式及关键字

and,or:

条件连接符;

in:

后面跟一个集合或者子查询 select * from emp where sal in(800,1600,3000);

Is null:

表示这个值是空时条件成立 select ename from emp where comm is null

between A and B

like:

模糊查询它只用在字符串列,表示对字符串进行模糊匹配

其中“_”表示任意一个字符

其中“%”表示0~n个字符 select * from emp where ename like '__A%';

all&any:后面都跟一个集合或者子查询

select * from emp where sal <all(1600,2000,3000);

exists:它不和任何列一起使用,后面跟的是一个子查询(查询语句select语句),如果子查询能查出结果

not:取反

distinct:去重关键字,跟在列的最前面

那么这个条件就是成立 的,查不出结果条件不成立

having子句:

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。

SELECT Customer,SUM(OrderPrice) FROM Orders
WHERE Customer='Bush' OR Customer='Adams'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500

当同时含有where子句、group by 子句 、having子句及聚集函数时,执行顺序如下:

执行where子句查找符合条件的数据;

使用group by 子句对数据进行分组;对group by 子句形成的组运行聚集函数计算每一组的值;

最后用having 子句去掉不符合条件的组。

排序:

order by排序关键字

asc|desc:asc表示升序,desc表示降序

select * from emp order by sal asc;

order by :后面可以跟多个排序列,跟多个排序列时,

聚合函数:

聚合函数是用来做纵向运算的函数:

count():COUNT():统计指定列不为NULL的记录行数;

select count(deptno) from emp;

*MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

*MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;*

*SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;*

*AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;*

分组:group by

group by:分组的关键字,后面跟分组列名,可以是一个分组列,也可以是多个列

*注意:group by 后面跟多个列时,只有当多个列的值同时相等时,它才会分为同一个组;*

*having:它是对分组后的数据进行筛选,条件表达式中可以使用聚合函数*

*where和having的异同*

where:条件,where后面跟的条件比having后的条件先执行,条件中不允许使用聚合函数。

having:条件中可以使用聚合函数,一般having和group by联用。

集合:

并集:取两个集合中所有元素

union all:表示取两个集合的并集,不删除重复元素

union:取两个集合的并集,删除重复的元素

union、union all:union all执行效率高,

交集:取两个集合重叠部分的元素**

intersect:表示交集

差集:第一个集合的所有元素减去两个集合重叠部分的元素**

minus:表示差集

联合查询

交叉连接(笛卡尔积连接):

select 列名,列名,...from a表 cross join b表

select e.*,d.deptno dno,d.dname,d.loc from emp e cross join dept d;

select e.*,d.deptno dno,d.dname,d.loc from emp e,dept d;

内连接:

内连接:是把两个表中符合条件的数据连接为一条数据,如果哪个表中存在不符合连接条件的数据,

那么这些数据就会被过滤掉(不显示)

语法:

select 列名,...,列名

from a表 inner join b表 on 连接条件

inner join:中的inner可以省略不写

--查询员工信息及他的部门信息

select e.,d. from emp e inner join dept d on e.deptno=d.deptno;

自连接:

自连接是一个特殊的内连接,内连接一般是两个表的连接,自连接将一个表和它自已进行连接

--查询员工信息,并显示它的上级姓名

select e1.*,e2.ename 上级姓名 from emp e1 join emp e2 on e1.mgr=e2.empno

select e1.*,e2.ename from emp e1,emp e2 where e1.mgr=e2.empno;

不等连接

不等连接:连接条件是不等条件,(大于、小于、不等于)

--查询员工信息,并显示员工的工资等级

select * from salgrade;

外连接(全连接、左外连接、右外连接):

全连接

全连接:它会查出两个表中的所有数据,

左外连接

语义:查出左表(left outer join关键字前面的表)的所有数据,根据连接条件去右表中找对应的数据,如果找到变显示出来,如果找不到就显示空

语法:

select 列名,列名,...

from 表A left outer join 表B on 连接条件 left outer join :其中outer可以省略

查询所有部门信息,以及各部门下的员工信息

select d.,e. from dept d left join emp e on d.deptno=e.deptno;

右外连接

语义:它会查出右表的所有数据,根据连接条件去左表查找对应的数据,如果找到就显示,如果找不到就显示为空语法:

select 列名,列名,列名,...

from 左表 right outer join 右表 on 连接条件

right outer join:其中outer可以省略

--左连接

select d.,e. from dept d,emp e where e.deptno(+)=d.deptno;

--右连接

select d.,e. from dept d,emp e where d.deptno(+)=e.deptno;

自然连接:

自然连接是在两张表中寻找那些数据类型和列名都相同的字段,

然后自动地将他们连接起来,并返回所有符合条件的结果。

子查询:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值