新建数据库:student
新建用户WANG (不带登录名)
-
【3.1】为用户WANG定义一个学生—课程模式S-T
新建查询(右键点击数据库)
输入代码
CREATE SCHEMA “S-T” AUTHORIZATION WANG
定义模式实际上定义了一个命名空间 -
【3.2】输入CREATE SCHEMA AUTHORIZATION WANG
== 没有定义模式名,所以模式命隐含为用户名==
新建用户ZHANG
-
【3.3】为用户ZHANG创建一个模式TEST,并且在其中定义一个表TAB1 。
CREATE SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABLE TAB1(COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20),
COL4 NUMERIC(10,3),
COL5 DECIMAL(5,2)
); -
【3.4】模式删除:DROP SCHEMA ZHANG CASCADE
执行代码
执行出错
实际上这里的问题是我没有用sa登录
然后就成功了(忘了截图了 -
【3.5】建立一个“学生”表 Student。
CREATE TABLE Student
(Sno CHAR(9)PRIMARY KEY, /列级完整性约束条件,Sno是主码/
Sname CHAR(20)UNiQUE, /Sname取唯一值/
Sex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
); -
【3.6】 建立一个“课程”表 Course。
CREATE TABLE Course
(Cno CHAR(4)PRIMARY KEY, /列级完整性约束条件,Cno是主码/
Cname CHAR(40)NOT NULL, /列级完整性约束条件,Cname不能取空值/
Cpno CHAR(4), /Cpno的意思是先修课/
Ccredit SMALLINT,
FOREIGN KEY(Cpno)REFERENCES Course(Cno)/表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno/
);
这里表明参照表和被参照表可以是同一张表 -
【3.7】建立学生选课表SC。
CREATE TABLE SC
(Sno CHAR(9),
Cno CHAR(4),
Crade SMALLINT,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY(Cno)REFERENCES Course(Cno)/表级完整性约束条件,Cno是外码,被参照表是Course/
FOREIGN KEY(Sno)REFERENCES Student(Sno)/表级完整性约束条件,Sno是外码,被参照表是Student/
);
然后出问题了
到这里的时候我回去用sa登录了,然后改了两处语法。
然后 -
【3.8】向Student表增加“入学时间”列,其数据类型为日期型。
ALTER TABLE Student ADD S_entrance DATE; -
【3.9】将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。
ALTER TABLE Student ALTER COLUMN Sage INT; -
【3.10】增加课程名称必须取唯一值的约束条件。
ALTER TABLE Course ADD UNIQUE(Cname); -
【3.11】 删除Student表
DROP TABLE Student CASCADE;
显示语法错误 -
【3.12】若表上建有视图,选择RESTRICT时表不能删除;选择CASCADE时可以删除表,视图也自动被删除。
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept=“IS”;
DROP TABLE Student RESTRICT;
–ERRAR:cannot drop table Student because otear objects depend on it
DROP TABLE Student CASCADE;
–NOTICE:drop cascades to view IS_Student
SELECT * FROM IS_Student;
–ERROR:relation "IS_student"does not exist
咳咳,这就是问题所在了(语法不通吧
心得:我们走了一些弯路(认真脸.jpg)