SQL的内容:
创建一个数据表:
CREATE TABLE Student(
Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) UNIQUE,
Ssex CHAR(2),
Sage SMALLLINT,
Sdept CHAR(20)
);
列的操作:
ALTER TABLE Student ADD Sentrance DATE;//增加
ALTER TABLE Student ALTER COLUMN Sage INT;//修改
ALTER TABLE Student DROP Sage;//删除
表的操作:
查找:
SELECT Sname,Sno,SsexmSage,Sdept,Ssentrance FROM Student;
SELECT * FROM Student;
SELECT Sname as NAME,ISLOWER(Sdept) as DEPARTMENT FROM Student;
SELECT Sno FROM Student WHERE Sname = "李明";
SELECT Sname FROM Student WHERE Sage BETWEEN 20 AND 30;
SELECT * FROM Student WHERE Sname LIKE "王%"
SELECT Sno FROM Student GROUP BY Sno HAVING COUNT(*)>3;
插入:
INSERT INTO Student(Sno,Sname,Ssex) VALUES("2002045","陈东","男");
更新:
UPDATE Student SET Sage = 20 WHERE Sno = "24112105";
授权:
GRANT SELECT ON TABLE Student TO U1;
取消授权:
REVOKE UPDATE(Sno) ON TABLE Student FROM U4;
数据库的并发控制
答:数据库是一个共享资源,它允许多个用户程序并行地存取数据库中的数据,但是,
如果系统对并行执行的操作不加以控制就会存取和存储不正确的数据,破坏数据库的完整
性。
并发控制的主要方法是采用封锁机制。 封锁是事务 T 在对某个数据对象操作之前, 先向
系统发出请求对其加锁。基本的封锁类型有两种:排它锁(X 锁)和共享锁(S 锁)。所谓 X 锁
是事务 T 对数据 A 加上 X 锁时, 只允许事务 T 读取和修改数据 A, 其他任何事务都不量能再
对 A 加任何类型的锁,直到 T 释放 A 上的锁。所谓 S 锁,是事务 T 对数据 A 加上 S 锁时, 其
他事物只能再对数据 A 加 S 锁,而不能加 X 锁,直到 T 释放 A 上的 S 锁。
在数据库的保护中有数据的安全性、 完整性, 并发控制和数据库的恢复。 其中的安全性
和完整性有何区别?
答: 数据的完整性是指为了防止数据中存在不合语义的数据, 防止错误的输入和输出所
造成的无效操作和错误结果;数据的安全性是指保护数据库不被恶意的破坏和非法的存取
叙述数据库中死锁产生的原因和解决死锁的方法。
答:死锁产生的原因:
封锁可以引起死锁。 比如事务 T1 封锁了数据 A, 事务 T2 封锁了数据 B。 T1 又申请封锁
数据 B,但因 B 被 T2 封锁,所以 T1 只能等待。 T2 又申请封锁数据 A,但 A 已被 T1 封锁,
所以也处于等待状态。这样, T1 和 T2 处于相互等待状态而均不能结束,这就形成了死锁。
解决死锁的常用方法有如下三种:
(1)要求每个事务一次就要将它所需要的数据全部加锁。
(2)预先规定一个封锁顺序,所有的事务都要按这个顺序实行封锁。
(3)允许死锁发生, 当死锁发生时, 系统就选择一个处理死锁代价小的事务, 将其撤消,
释放此事务持有的所有的锁,使其他事务能继续运行下去
网友评论