数据库道理领导材料三
主 题:第四章 查询语句跟更新语句(课件)
进修时光:2021年10月11日-10月17日
内 容:
我们这周重要进修《数据库道理》这门课程第四章SQL的查询语句以及更新语句的相干内容。盼望经由过程下面的内容能使同窗们对SQL的基本有更进一步的懂得。
知识要点
SELECT语句的利用
FROM语句的利用
WHERE语句的利用
单表查询
多表查询
查询成果排序、分组
SQL更新语句的利用
重点难点
单表查询
多表查询
查询成果排序、分组
SQL更新语句的利用
一、查询
树破数据库的重要目标是查询数据。SQL言语供给了SELECT语句停止数据库的查询,其基本命令格局为:
SELECT [ALL|DISTINCT][,]…
FROM [,]…
[WHERE ]
[GROUP BY [HAVING ]]
[ORDER BY [ASC|DESC]];
单表查询
单表查询是指仅计整齐个表的查询,一般只用到SELECT子句、FROM子句跟WHERE子句,分辨阐明所查询列、查询的表或视图、以及查抄前提等,也称为简单查询。
SELECT子句抉择列表
抉择列表(select_list)指出所查询的列,它可能是一组列名列表、星号、表达式、变量(包含部分变量跟全局变量)等构成。
(1)抉择全部列
(2)抉择部排列并指定它们的表现次序
(3)抉择经过打算的列
(4)变动列标题
(5)删除反复行
FROM子句抉择表
FROM子句指定SELECT语句查询及与查询相干的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分开,在单表查询中FROM子句后只有一个基本表名。
利用WHERE子句抉择查询前提
WHERE子句设置查询前提,过滤掉落不须要的数据行,只有满意前提的行才干呈现在查询成果中。
(1) 比较大小
(2) 断定范畴
(3) 断定凑集
(4) 字符婚配
(5) 涉及空值的查询
(6) 多重前提查询
对查询成果排序
假如不指定查询成果的表现次序,DBMS将按其最便利的次序(平日是元组在表中的先后次序)输出查询成果。用户也可能用ORDER BY子句指定按照一个或多个属性列的升序(ASC)或降序(DESC)重新陈列查询成果,其中升序ASC为缺省值。
利用ORDER BY子句对查询前去的成果按一列或多列排序。其语法格局为:
ORDER BY {column_name [ASC|DESC]} [,…n]
其中ASC表示升序,为默许值,DESC为降序。ORDER BY不克不及按ntext、text跟image数据范例停止排序。
利用集函数
为了进一步便利用户,加强检索功能,SQL供给了很多集函数,重要包含:
COUNT([DISTINCT|ALL] *) 统计元组个数
COUNT([DISTINCT|ALL] ) 统计一列中值的个数
SUM([DISTINCT|ALL] ) 打算一列值的总跟(此列必须是数值型)
AVG([DISTINCT|ALL] ) 打算一列值的均匀值(此列必须是数值型)
MAX([DISTINCT|ALL] ) 求一列值中的最大值
MIN([DISTINCT|ALL] ) 求一列值中的最小值
假如指定DISTINCT短语,则表示在打算时要撤消指定列中的反复值。假如不指定DISTINCT短语或指定ALL短语(ALL为缺省值),则表示不撤消反复值。
对查询成果分组
GROUP BY子句可能将查询成果表的各行按一列或多列取值相称的原则停止分组。
对查询成果分组的目标是为了细化集函数的感化东西。假如未对查询成果分组,集函数将感化于全部查询成果,即全部查询成果只有一个函数值。不然,集函数将感化于每一个组,即每一组都有一个函数值。
连接查询
一个查询同时涉及两个以上的表,则称之为连接查询。连接查询重要包含等值连接、非等值连接查询、本身连接查询、外连接查询跟复合前提连接查询。
等值与非等值连接查询
连接谓词:用来连接两个表的前提称为连接前提或连接谓词,其一般格局为:
[.] [.]
其中比较运算符重要有:=、>、=、<=、!=
其余连接谓词还可能利用下面情势:
[.] BETWEEN [.] AND [.]
当连接运算符为=时,称为等值连接。利用奥鹏大工答案请进:opzy.net或请联系微信:1095258436
其余运算符称为非等值连接。
连接谓词中的列称号为连接字段。连接前提中的各连接字段范例必须是可比,但不必是雷同。比方,可能都是字符型,或都是日期型;也可能一个是整型,另一个是实型,整型跟实型都是数值型。
履行连接操纵的过程是,起首在表1中找到第一个元组,然后重新开端次序扫描或按索引扫描表2,查找满意连接前提的元组,每找到一个元组, 就将表1中的第一个元组与该元组拼接起来,构成成果表中一个元组。表2全部扫描结束后,再到表1中找第二个元组,然后再重新开端次序扫描或按索引扫描表2,查找满意连接前提的元组,每找到一个元组, 就将表1中的第二个元组与该元组拼接起来,构成成果表中一个元组。反复上述操纵,直到表1全部元组都处理结束为止。
本身连接
连接操纵可能在同一张表内可停止本身连接,即将同一个表的差别行连接起来。本身连接可能看作一张表的两个正本之间的连接。在本身连接中,必须为表指定两一般号,使之在逻辑上成为两张表。
外连接
在平日的连接操纵中,只有满意符合查询前提( WHERE 查抄前提或 HAVING 前提)跟连接前提的元组才干作为成果输出,如许的连接称作内连接。假如在现实利用中,也想同时输出那些不满意连接前提的元组,这时就须要利用外连接。
外连接常用的有两种:左外连接跟右外连接,左外连接是在查询成果中包含连接表达式左边表中的不满意连接前提的元组,利用运算符“*=”;右外连接是在查询成果中包含连接表达式左边表中的不满意连接前提的元组,利用运算符“=*”。
复合前提连接
下面各个连接查询中,WHERE子句中只有一个前提,即一个连接谓词。WHERE子句中有多个前提的连接操纵,称为复合前提连接。
嵌套查询
在SQL言语中,一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的前提中的查询称为嵌套查询, 又称子查询。其中处于内层的查询称为子查询,嵌套查询命令在履行时,每个子查询在上一级查询处理之前求解,即由里向外查,子查询的成果用于树破其父查询的查找前提。
带有IN谓语的子查询
带有IN谓词的子查询是指父查询与子查询之间用IN停止连接,断定父查询的某个属性列值能否在子查询的成果中。因为在嵌套查询中,子查询的成果每每是一个凑集,所以谓词IN是嵌套查询中最常常利用的谓词。
带有比较运算符的子查询
带有比较运算符的子查询是指父查询与子查询之间用比较运算符停止连接。当用户能确切晓得内层查询前去的是单值时,可能用>、 =、<=、!=或等比较运算符。
带有ANY或ALL谓语的子查询
子查询前去单值时可能用比较运算符。而利用ANY或ALL谓词时则必须同时利用比较运算符。其语义为:
> ANY 大于子查询成果中的某个值 即表示大于查询成果中最小值
= ANY 大于等于子查询成果中的某个值即表示大于等于成果会合最小值
<= ANY 小于等于子查询成果中的某个值即表示小于等于成果会合最大值
= ANY 等于子查询成果中的某个值
!= ANY或 ANY 不等于子查询成果中的某个值 即相称于IN
> ALL 大于子查询成果中的全部值 即表示大于查询成果中最大值
= ALL 大于等于子查询成果中的全部值即表示大于等于成果会合最大值
<= ALL 小于等于子查询成果中的全部值即表示小于等于成果会合最小值
= ALL 等于子查询成果中的全部值
!= ALL或 ALL 不等于子查询成果中的任何一个值即相称于 NOT IN
带有EXISTS谓语的子查询
EXISTS代表存在量词(。带有EXISTS谓词的子查询不前去任何现实数据,它只产生逻辑真值“true”或逻辑假值“false”。
凑集查询
把多个SELECT语句的构造完全雷同的成果兼并为一个成果,用凑集操纵来实现,这种查询称为凑集查询,标准SQL凑集操纵只有并操纵UNION。
利用UNION将多个查询成果兼并起来,构成一个完全的查询成果时,体系可能去掉落反复的元组。须要留神的是,参加UNION操纵的各成果表的列数必须雷同;对应项的数据范例也必须雷同。
二、数据更新
数据库的更新包含拔出、删除、修改(也称为更新)三种操纵。
拔出数据
INSERT语句平日有两种情势。一种是拔出一个元组,拔出的数据以常量的情势给出;另一种是拔出子查询的成果,即将查询的成果拔出到表中,可能一次拔出多个元组。
拔出一个元组
拔出一个元组的INSERT语句的格局为:
INSERT
INTO [([,…])
VALUES ( [,]…)
拔出多个元组
子查询不只可能嵌套在SELECT语句中,用以构造父查询的前提,也可能利用其嵌套在INSERT语句中,用以生成要拔出的数据,批量拔出到指定的表中,如许就能一次向表拔出多个元组。
修改数据
修改操纵利用UPDATE语句来修改数据,其语句的一般格局为:
UPDATE
SET =[,=]…
[WHERE ];
其功能是修改指定表中满意WHERE子句前提的元组。其中SET子句用于指定修改方法,即用的值代替响应的属性列值。假如省略WHERE子句,则表示要修改表中的全部元组。
带子查询的修改语句
子查询也可能嵌套在UPDATE语句中,用以构造履行修改操纵的前提。
删除数据
删除是对记录操纵,不克不及删除记录的部分属性。一次可能删除一条跟多少笔记录,乃至将全部表的内容删空,只保存表的构造定义。
例题
一、语句题
1、查询BookRecord表中书名为”C++顺序计划”的BookName字段跟Publisher字段。
二、填空题
1、()语句可能对查询成果停止分组。
2、数据库的更新包含()、()、()三种操纵。
例题答案
一、语句题
SELECT BookName, Publisher
FROM BookRecord
WHERE BookName =’C++顺序计划’
填空题
GROUP BY
2、拔出 删除 修改