1. 插入单元组的一般规则:
a. 由于是对表进行改变应该是用USE语句和ALTER TABLE语句;
b. 一般规则:INSERT INTO 表名(属性列表) VALUES(与属性列表相对应的字段值)
c. 使用规则:
i. 属性列表中的属性可以缺省;
ii. 属性的顺序可以和创建表时属性的声明顺序不同;
iii. 字段值必须和INSERT语句中属性的顺序一一对应;
iv. 对于缺省的属性系统将默认赋予NULL值,但是要注意不能违反完整性约束条件;
2. 完整属性插入:
INSERT INTO Student
(Sno, Sname, Ssex, Sdept, Sage) //顺序可以和创建表时的顺序不同
VALUES('200215128', '陈冬', '男', 'IS', 18)
3. 部分缺省属性插入:
INSERT INTO SC
(Sno, Cno)
VALUES('200215128', '1') //对于缺省的Grade系统将会赋予默认值NULL
4. 全部缺省插入:
INSERT INTO Student
('200215126', '张成民', '男', 18, 'CS')
对于完全缺省属性的插入,写字段值的时候必须按照创建表时的顺序完整的列出,否则将会报错为类型不匹配或者字段缺少;
5. 通过子查询批量插入数据(元组):
a. 一般规则:
INSERT INTO 表名
(属性列表)
SELECT子查询
b. 对于每一个系求平均年龄并插入到数据库中:
USE Student_Course
CREATE TABLE Dept_age ( //先创建一个可以进行适配的表,然后再将查询结果存入表中
Sdept CHAR(15),
Avg_age SMALLINT
)
USE Student_Course
INSERT INTO Dept_age
(Sdept, Avg_age)
SELECT Sdept, AVG(Sage)
FROM Student
GROUP BY Sdept
6. 对元组进行更新
a. 这里需要使用UPDATE(更新)和SET(设定字段值)这两个关键字;
b. 一般规则:
UPDATE 表名
SET 列名= 表达式的列表
WHERE 条件表达式
c. 这里是对所有满足条件表达式的元组进行更新,如果不写WHERE语句则对所有元组都作更新;
d. 中间的赋值表达式是将右边的新值赋给相应列的字段;
e. 将学生200215121年龄改为22岁:
UPDATE Student
SET Sage = 22
WHERE Sno = ‘200215121’
f. 将所有学生年龄加1:
UPDATE Student
SET Sage = Sage + 1
g. 具有多表之间联系的更新:
i. 比如通过名字进行更新一张表,但是名字在另一张表中;
ii. 需要通过子查询和关系查询实现更新;
iii. 将所有计算机系学生的成绩置0:
UPDATE SC
SET Grade = 0
WHERE ‘CS’ = (
SELECT Sdept
FROM Student
WHERE SC.Sno = Student.Sno
)
实质是从SC中取出一个元组并传入子查询中,将符合条件的Sdept单值返回给WHERE子句进行比较,如果符合WHERE子句的条件,就将该元组的Grade置0;
7. 删除元组:
a. 一般格式:
DELETE FROM 表名
WHERE 条件表达式
b. 即将满足条件表达式的元组从表中删除;
c. FROM可写可不写,这里推荐不写,因为简洁;
d. 如果不写条件表达式则表示将表中所有的元组都删除,变成一张空表,但是不删除表本身;
e. 删除学号为200215128的学生记录:
DELETE Student
WHERE Sno = ‘200215128’
f. 多表相关删除(使用带子查询的相关查询删除):删除所有计算机科学系学生的选课记录
DELETE SC
WHERE ‘CS’ = (
SELECT Sdept
FROM Student
WHERE Sno = SC.Sno
)