数据库系统概论知识点整理 联系客服

发布时间 : 星期六 文章数据库系统概论知识点整理更新完毕开始阅读

匹配串为含通配符的字符串

%:代表任意长度(可以是0)的字符串 _:代表任意单个字符

字符串本身就含有 % 或 _ 时,在% 或 _ 之前加上转义符“\\”要使用ESCAPE ‘<换码字符>’将通配符转义为普通字符。如果‘\’ 要作为一个普通字符,用连续两个‘\’ 表示一个真正的‘\’。

例:查询以\开头,且倒数第3个字符为 i的课程的详细情况。 SELECT * FROM Course

WHERE Cname LIKE 'DB\\_%i_ _' ESCAPE ' \\ ‘;

涉及空值的查询 IS NULL 或 IS NOT NULL “IS” 不能用 “=” 代替 例:查所有有成绩的学生学号和课程号 SELECT Sno,Cno FROM SC

WHERE Grade IS NOT NULL;

多重条件查询:AND和 OR来联结多个查询条件,AND的优先级高于OR,可以用括号改变优先级,可用来实

现多种其他谓词。 [NOT] IN

[NOT] BETWEEN … AND …

改写 例:查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别

SELECT Sname,Ssex FROM Student

WHERE Sdept IN ( 'IS','MA','CS' ) 可改写为:

SELECT Sname,Ssex FROM Student

WHERE Sdept= ' IS ' OR Sdept= ' MA' OR Sdept= ' CS ' ORDER BY子句:对查询结果排序

可以按一个或多个属性列排序:升序:ASC;降序:DESC;缺省值为升序。 当排序列含空值时:空值最大

ASC:排序列为空值的元组最后显示;DESC:排序列为空值的元组最先显示。 例:查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列 SELECT Sno,Grade FROM SC WHERE Cno= ' 3 ' ORDER BY Grade DESC;

聚集函数:对查询结果集中的某列进行计算或统计。

计数COUNT([DISTINCT|ALL] *) COUNT([DISTINCT|ALL] <列名>) 计算总和SUM([DISTINCT|ALL] <列名>)

计算平均值 AVG([DISTINCT|ALL] <列名>)

最大最小值MAX([DISTINCT|ALL] <列名>) MIN([DISTINCT|ALL] <列名>) 例:查询学生200215012选修课程的总学分数 SELECT SUM(Ccredit) FROM SC, Course

WHER Sno='200215012' AND SC.Cno=Course.Cno;

注:除Count(*),都要跳过空值;Where子句不能使用聚集函数。

GROUP BY子句:对查询结果分组。 用途细化聚集函数的作用对象

未对查询结果分组,聚集函数将作用于整个查询结果 对查询结果分组后,聚集函数将分别作用于每个组

使用GROUP BY 后:其SELECT子句的列名列表中只能出现分组属性和集函数。 如果分组后还要按照条件对这些组进行筛选,可使用having 短语指定筛选条件 例: 查询选修了3门以上课程的学生学号 SELECT Sno FROM SC GROUP BY Sno

HAVING COUNT(*) >3;

例:查询有3门以上课程是90分以上学生的学号及(90分以上的)课程数 SELECT Sno, COUNT(*) FROM SC Where Grade >90 GROUP BY Sno

HAVING COUNT(*) >3;

HAVING短语与WHERE子句的区别:作用对象不同 WHERE子句作用于基表或视图,从中选择满足条件的元组 HAVING短语作用于组,从中选择满足条件的组。 ****连接查询*****p100页

****嵌套查询*****p104页 ***重点*** 数据更新 (1)插入数据

插入元组 INSERT

[INTO] <表名> [(<属性列1>[,<属性列2 >?)] VALUES (<常量1> [,<常量2>] ? )

功能:将新元组插入指定表中;新元组的属性列1的值为常量1,属性列2的值为常量2,?。

INTO子句:属性列的顺序可与表定义中的顺序不一致,但须指定列名;没有指定属性列,表示要插入的是一条完整的元组;指定部分属性列,未指定的属性列取空值,具有NOT NULL的属性列除外。

VALUES子句:提供的值必须与INTO子句匹配,值的个数,值的类型。 例:将一个新学生元组(学号:200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中

INSERT

INTO Student (Sno,Sname,Ssex,Sdept,Sage) VALUES ('200215128','陈冬','男','IS',18); 例: 将学生张成民的信息插入到Student表中 INSERT INTO Student

VALUES (‘200215126’, ‘张成民’, ‘男’,18,'CS'); 例:插入一条选课记录( '200215128','1 ')。 INSERT

INTO SC(Sno,Cno)

VALUES (‘ 200215128 ’,‘ 1 ’);

RDBMS将在新插入记录的Grade列上自动地赋空值。或者: