数据库系统概论

SQL语言

数据库系统概论
数据库系统概论
数据库系统概论


1.数据定义

基本表的定义、删除、修改

1.定义基本表
建立学生表Student:
CREATE TABLE Student
(
Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) UNIQUE,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
 );

2.修改基本表
向Student表增加“入学时间”列,其数据类型日期型
ALTER TABLE Student ADD S_entrance DATE;

3.删除基本表
删除Student表
DROP TABLE Student CASCADE;
选择RESTRICT,则该表的删除是有限制条件的,选择CASCADE则该表的删除是没有限制条件的。

2.数据查询

单表查询

1.选择表中的若干列
(1).查询指定列
(2).查询全部列(*)
(3).查询经过计算的值

2.选择表中的若干元祖
(1).消除取值重复的行(distinct)
(2).查询满足条件的元组
1.比较大小
2.确定范围(between...and,not between...and )
3.确定集合(in)
4.字符匹配(like)
%代表任意长度的字符串,_代表任意单个字符
5.涉及空值的查询(is null,is not null)
6.多重条件查询(and,or)

3.ORDER BY子句
用ORDER BY子句对查询的结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,默认值为升序

4.聚焦函数
COUNT()
SUM()
AVG()
MAX()
MIN()
当聚焦函数遇到空值时,除COUNT(*)外,都跳过空值而只处理非空值
聚焦函数只用于SELECT子句和GROUP BY子句

5.GROUP BY子句
GROUP BY子句将查询的结果按某一列或多列的值分组,值相等的为一组
使用HAVING短语指定筛选条件
WHERE子句作用于基本表或视图,从中选择满足条件的元祖;HAVING短语作用于组,从中选择满足条件的组

连接查询

1.等值于非等值连接查询
2.自身连接
3.外连接
4.多表连接

嵌套查询

1.带有IN谓词的子查询
2.带有比较运算符的子查询
3.带有ANY(SOME)或ALL谓词的子查询
4.带有EXISTS谓词的子查询

3.数据更新

插入数据

1.插入元组
将一个新学生元组插入到Student表中
INSERT
INTO Student(Son,Sname,Ssex,Sdept,Sage)
VALUES('20125128','陈东','男','IS',18)

2.插入子查询结果
对每一个系,求学生的平均年龄,并把结果存入数据库
CREATE TABLE Dept_age
(
Sdept CHAR(15),
Avg_age SMALLINT
 );

INSERT
INTO Dept_age(Sdept,Avg_age)
SELECT Sdept,AVG(Sage)
FROM Student
GROUP BY Sdept;

修改数据

1.修改某一个元组的值
将学生201215121的年龄改为22岁
UPDATE Student
SET Sage=22
WHERE Sno='201215121';

2.修改多个元组的值

3.带子查询的修改语句

删除数据

1.删除某一个元组的值
删除学号为201215128的学生记录
DELETE 
FROM Student
WHERE Sno='201215128';

2.删除多个元组的值

3.带子查询的删除语句

4.视图

定义视图

1.建立视图
建立信息系学生的视图,并要求进行修改和插入操作时任需保证该视图只有信息系的学生
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept='IS'
WITH CHECK OPTION;

2.删除视图
DROP VIEW IS_Student

查询视图

视图定义后,用户就可以像对基本表那样对视图进行查询了

更新视图

将信息系学生视图IS_Student中学号为“201215122”的学生姓名改为“刘辰”
UPDATE IS_Student
SET Sname='刘辰'
WHERE Sno='201215122'