摘要:数据操作,SELECT,INSERT,DELETE,UPDATE (一)SELECT基本结构 SELECT [ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]... FROM<表名或视图名>[,<表名或视图名>] [WHERE<条件表达式>]
>>>>>数据库系统工程师历年真题
>>>>>数据库系统工程师网络课程
>>>>>数据库系统工程师视频课程
2016年软考数据库系统工程师知识点详解:数据操作
数据操作,SELECT,INSERT,DELETE,UPDATE
(一)SELECT基本结构
SELECT [ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]...
FROM<表名或视图名>[,<表名或视图名>]
[WHERE<条件表达式>]
[GROUPBY<列名 1>[HAVING<条件表达式>]]
[ORDERBY<列名 2>[ASC|DESC]...]
其中,子句顺序是:SELECT、FROM、WHERE、GROUP BY、HAVING和ORDER BY。HAVING只能和GROUP BY搭配使用。
SELECT对应关系代数运算中的投影运算;FROM对应笛卡尔积;WHERE对应选择。
SELECT查询中没有全程量词,也没有逻辑蕴涵,但可以通过谓词转换来实现。?
(二)简单查询
(三)连接查询
检索至少选修了课程号为C1和C3的学生号:SELECTSnoFROMSCSCX,SCSCYWHERESCX.Sno=SCY.SnoANDSCX.Cno='C1'ANDSCY.Cno='C3';
(四)子查询与聚集函数
子查询也叫嵌套查询。
例:检索选修课程名为MS的学生号和学生姓名。
SELECT Sno,Sname
FROMStudents
WHERESnoIN
(SELECTSnoFROMSC
WHERECnoIN
(SELECTCnoFROMCWHERECname='MS'));
聚集函数:AVG,MIN,MAX,SUN,COUNT
使用谓词ANY和ALL必须同时使用比较运算符,其含义与等价的转换关系如下:
>ANY--- >MIN
>ALL --- >MAX
=ANY --- IN
<>ALL--- NOT IN
几个例子:查询其他系比计算机系CS所有学生年龄都要小的学生姓名及年龄。
SELECTSname,Sage
FROMStudents
WHERESage'CS';
用
SELECTSname,Sage
FROMStudents
WHERESage<
(SELECTMIN(Sage)
FROMStudents
WHERESD='CS')
ANDSD<>'CS';
(五)分组查询
GROUP BY 子句
HAVING 子句,如果在元组被分组之前需要按某种方式加以限制,使不需要的分组为空,可以在GROUP BY子句后面加一个HAVING子句。
注意:空值在任何聚集操作中都会被忽视,COUNT(*)是计算某个关系中所有元组数目之种,但COUNT(A)是计算A属性中非空的元组个数之和。
例:针对供应商数据库中的S、P、J。SPJ关系,查询哪一个工程至少用了3家供应商(包含3家)供应的零件的平均数量,并按工程号降序排列。
SELECT JNO,AVG(QTY)
FROM SPJ
GROUP BY JNO
HAVING COUNT(DISTINCT(SNO))>2
ORDER BY JNO DESC;
(六)别名运算
(七)字符串操作
使用操作符LIKE的模式匹配。%匹配任意字符串,_可以匹配任意一个字符。
在Like中可以使用转义字符,将特殊字符当作普通字符处理,如反斜杠“\"。
(八)集合操作
保留字UNION,INTERSECT,EXCEPT分别对应并、交、差。保留字用于两个查询时,其两侧应用括号括起来。
例:学生和教师的关系模式如下,查询既是女研究生又是教师且工资大于1500元的名字和地址。
(SELECTName,Address
FROMStudents
WHERESEX='女'ANDType='研究生')
INTERSECT
(SELECTName,Address
FROMTeachers
WHERESalary>=1500)
查询不是教师的学生:(SELECTName,AddressFROMStudents)
EXCEPT
(SELECTName,AddressFROMTeachers)
(九)视图的查询和删除
视图的查询:当查询视图表时,通常先将其转换成等价的对基本表的查询,然后执行查询语句。即系统先从数据字典中取出该视图的定义,然后与视图中的查询语句结合起来,形成一个修正的查询语句。
视图更新要遵守的规则:
从多个基本通过连接操作导出的视图不允许更新;
对使用了分组、集函数操作的视图不允许更新;
若视图是从单个基本表通过投影、选取操作导出的,则允许进行更新操作。
WITH子句,将一个复杂的查询分解成一小视图??
(十)插入、删除和修改语句
插入: INSERT INTO 表名(字段名[,字段名]...)
VALUES(常量[,常量]...);
删除: DELETE FROM 表名
WHERE 条件表达式;
修改: UPDATE 表名
SET 列名=值表达式
[WHERE条件表达式]
相关推荐:
>>>>>数据库系统工程师培训视频教程
>>>>>数据库系统工程师考试考前串讲
软考备考资料免费领取
去领取