鎴戝浗鐧界櫆椋庣煡鍚嶄笓瀹? http://m.39.net/news/a_5941636.html笔记/数据库技术与应用/Chapter5/数据查询目录1.关系运算1.1传统关系运算
传统关系运算包括并,交,差,笛卡尔积。l其中并,交,差需要两个表有完全相同的字段名。
将用到以下两个列表来演示:
列表一
ABC列表二
ABC1.1.1并运算所有的相加,除去重复的。
ABC012.1.2交运算只保留两个表共同的。
ABC.1.3差运算一个表中数值减去另一个表中含有的数值。如:列表二差列表一
ABC012.1.4笛卡尔积将一个表的每一行与另一个表的每一行放在一起。列表一与列表二的笛卡尔积一共有3+3=6个字段名,3×4=12行,下面只展示一部分。
ABCABC231230121.2专门运算专门运算主要包括选择,投影,连接,将在下文介绍。
2.查询的SQL实现2.1SELECT语句2.1.1selectfromselect后面为要查询的列,from后面为从哪个表查询。
selectstu_id,name
fromstu_info#查询指定列
select*
fromstu_info#查询全部列
selectstu_idasA,
nameasB
fromstu_info#给列添加别名
`
2.1.2where用来过滤掉不需要的数据
selectstu_id,name
fromstu_info
wheregrade60
andsex=male
#where语句后可以加逻辑运算
2.1.3havinggroupbyhaving用处基本和where相同,但是当条件里有函数的时候只能用having。
考虑以下情况,每次考试对应一条数据,想查询考试数量5的学生id,但在stuinfo表中每个stuid有多个数据,直接查询,每个stu_id会出现很多次,这时便需要使用groupby子句。
selectstu_id,name
fromstu_info
groupbystu_id
havingcount(num_exam)5
这样,对于每个stu_id,便只会得到一条数据。
2.1.4orderby用来对查询结果排序。
selectstu_id,name
fromstu_info
orderbystu_idDESC#降序
selectstu_id,name
fromstu_info
orderbystu_idASC#升序
2.1.5查询语句执行顺序(扩展知识)(1)from(3)join(2)on(4)where(5)groupby(6)avg,sum…(7)having(8)select(9)distinct2.2选择运算
放在where后面的条件,主要有以下几种:
比较大小:=,!=,
确定范围:(not)betweenin
确定集合:(not)in
涉及空值:is(not)null
字符匹配:(not)like
多重条件下可用and,or来连接多个逻辑运算符,and优先于or。
2.3投影运算放在select后面,用于计算列。
ditinct可删去重复行
selectdistinctstu_id
fromstu_info
以下是常用的投影运算函数
2.4连接运算连接运算用于连接两个以上的表
其子句为joinon
连接的关键字段名字不一定要相同,但数据类型得相同
2.4.1内连接2.4.1.1自然连接innerjoin条件字段同等值相连接,不包含重复字段。
select*
frombook,stu
innerjoinstu
onbook.stuid=stu.stuid
2.4.1.2等值连接条件字段同等值相连接,包含重复字段。
select*
frombook,stu
wherebook.stuid=stu.stuid
2.4.1.3非等值连接即把上面的=改为或。
2.4.2外连接2.4.2.1左连接右连接用以下代码来讲解
select*
frombook,stu
leftjoinstu
onbook.stuid=stu.stuid
相当于对左边的字段(即book.stuid)做一个for循环,假如右边表格对应字段有相等的,不管数量如何,返回全部查询结果,如果一个都没有则返回null。
2.4.2.2全连接对左右各做一次for循环。语句为fullouterjoinon。
3.在设计视图中的查询3.1交叉查询用以生成一个二维的表,行列均可分成多级。
3.2操作查询生成表查询:将查询结果生成一个新表
更新查询:对多个字段同时更改
追加查询:向表中追加数据
删除查询:从表中删除查询到的数据
4.SQL的其他查询4.1联合查询将两个数据类型相同查询结果加在一起。
selectA.aa,A.bbfromA
union
selectB.aa,B.bbfromB
#union会删除相同数据
selectA.aa,A.bbfromA
unionall
selectB.aa,B.bbfromB
#unionall会保留相同数据
4.2子查询将一个查询的结果作为另一个查询的输入。
```sqlselect*#主查询from(selectsellerid,transactiondate,pay#子查询fromtableA)
4.3数据定义查询即对表的操作,包括创建,删除和更改表,语法已在前三章介绍。
本文PDF格式免费下载链接:
链接: