数据更新
1.插入数据
1)插入元组
INSERT INTO <表名> [(<属性列1> [,<属性列2>]…)] VALUE (<常量1>[,<常量2>]…);
例:INSERT INTO Student VALUES(‘201215126’,’张某某’,’男’,18,’CS’);
2) 插入子查询结果
INSERT INTO<表名>[(<属性列1>[,<属性列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;
2.修改数据
UPDATE<表名> SET<列名>=<表达式> [,<列名>=<表达式>]…[WHERE<条件>];
1)修改某一个元组的值
UPDATEStudent SET Sage = 22 WHERE Sno = ‘
2012151121’;
2)修改多个元组的值
UPDATE StudentSET Sage = Sage + 1;
3)带子查询的修改语句
子查询也可以嵌套在UPDATE语句中,用以构造修改的条件
UPDATE SC SETGrade = 0 WHERE Sno IN (SELECT Sno FROM Student WHERE Sdept = ‘CS’);
3.删除数据
DELETE FROM <表名> [WHERE <条件>];
DELETE语句删除的是表中的数据,而不是关于表的定义
1) 删除某一个元组的值
DELETE FROMStudent WHERE Sno = ‘201554545’;
2) 删除多个元组的值
DELETE FROM SC;
3) 带子查询的删除语句
DELETE FROM SCWHERE Sno IN (SELETE Sno FROM Student WHERE Sdept = ‘CS’);
视图
建立视图
CREATE VIEW <视图名>[(<列名>[,<列名>]....)] AS <子查询>[WITH CHECK OPTION];
WITH CHECK OPTION表示对视图进行UPDATE、INSERT和DELETE操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)。
分组视图:用带有聚集函数和GROUPBY子句的查询来定义视图
CREATE VIEW S_G(Sno,Gavg) AS SELECTSno,AVG(Grade) FROM SC GROUP BY Sno;
删除视图
DROP VIEW <视图名> [CASCADE];
查询视图
SELECT Sno,Sage FROM IS_Student WHERE Sage< 20;
更新视图
1) 修改
UPDATE StudentSET Sname = ‘刘晨’ WHERE Sno= ‘201545’ AND Sdept = ‘IS’;
2)插入
INSERTINTO Student (Sno, Sname, Sage, Sdept) VALUES (‘201545’, ‘赵信’, 20, ‘IS’);
3)删除
DELETEFROM Student WHERE Sno = ‘21545’ AND Sdept = ‘IS’;
SQL中使用GRANT和REVOKE语句向用户授予或收回数据的操作权限。
GRANT(授予权限)
GRANT<权限>[,<权限>]… ON <对象类型><对象名>[,<对象类型><对象名>]… TO<用户>[,<用户>]…[WITH GRANT OPTION];
例:GRANT SELECTON TABLE Student TO U1;
REVOKE(收回权限)
REVOKE<权限>[,<权限>]…ON <对象类型><对象名>[,<对象类型><对象名>]… FROM<用户>[,<用户>]…[CASCADE|RESTRICT];
REVOKE UPDATE(Sno) ON TABLE Student FROMU4;
创建数据库模式的权限
CREATE USER <username>[WITH][DBA|REDOURCE|CONNECT];
数据库角色(角色是权限的集合)
1) 角色的创建
CREATE ROLE<角色名>
2) 给角色授权
GRANT<权限>[,<权限>]… ON <对象类型>对象名 TO <角色>[,<角色>]…
3) 将一个角色授予其他的角色或用户
GRANT<角色1>[,<角色2>… TO <角色3>[,<用户1>…[WITH ADMIN OPTION]
4) 角色权限的收回
REVOKE <权限>[,<权限>]… ON <对象类型><对象名> FROM <角色>[,<角色>]…
审计
审计功能是把用户对数据库的所有操作自动记录下来放入审计日志中。
AUDIT语句用来设置审计功能
AUDIT ALERT, UPDATE ON SC;
NOAUDIT语句用来取消审计功能
NOAUDIT ALERT, UPDATE ON SC;