数据库作业4:【例3.1】~【例3.12】

时间:2024-04-06 16:21:41

新建数据库:student
新建用户WANG (不带登录名)

  1. 【3.1】为用户WANG定义一个学生—课程模式S-T
    新建查询(右键点击数据库)
    输入代码
    CREATE SCHEMA “S-T” AUTHORIZATION WANG
    数据库作业4:【例3.1】~【例3.12】
    数据库作业4:【例3.1】~【例3.12】
    定义模式实际上定义了一个命名空间
  2. 【3.2】输入CREATE SCHEMA AUTHORIZATION WANG
    数据库作业4:【例3.1】~【例3.12】
    数据库作业4:【例3.1】~【例3.12】
    == 没有定义模式名,所以模式命隐含为用户名==

新建用户ZHANG

  1. 【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)
    );
    数据库作业4:【例3.1】~【例3.12】
    数据库作业4:【例3.1】~【例3.12】

  2. 【3.4】模式删除:DROP SCHEMA ZHANG CASCADE
    执行代码
    数据库作业4:【例3.1】~【例3.12】
    执行出错
    数据库作业4:【例3.1】~【例3.12】
    实际上这里的问题是我没有用sa登录
    然后就成功了(忘了截图了

  3. 【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)
    );
    数据库作业4:【例3.1】~【例3.12】
    数据库作业4:【例3.1】~【例3.12】

  4. 【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/
    );
    数据库作业4:【例3.1】~【例3.12】
    数据库作业4:【例3.1】~【例3.12】
    这里表明参照表和被参照表可以是同一张表

  5. 【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/
    );
    数据库作业4:【例3.1】~【例3.12】
    然后出问题了
    数据库作业4:【例3.1】~【例3.12】
    到这里的时候我回去用sa登录了,然后改了两处语法。数据库作业4:【例3.1】~【例3.12】
    然后
    数据库作业4:【例3.1】~【例3.12】

  6. 【3.8】向Student表增加“入学时间”列,其数据类型为日期型。
    ALTER TABLE Student ADD S_entrance DATE;
    数据库作业4:【例3.1】~【例3.12】
    数据库作业4:【例3.1】~【例3.12】

  7. 【3.9】将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。
    ALTER TABLE Student ALTER COLUMN Sage INT;
    数据库作业4:【例3.1】~【例3.12】
    数据库作业4:【例3.1】~【例3.12】

  8. 【3.10】增加课程名称必须取唯一值的约束条件。
    ALTER TABLE Course ADD UNIQUE(Cname);
    数据库作业4:【例3.1】~【例3.12】
    数据库作业4:【例3.1】~【例3.12】

  9. 【3.11】 删除Student表
    DROP TABLE Student CASCADE;
    数据库作业4:【例3.1】~【例3.12】
    显示语法错误

  10. 【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
    数据库作业4:【例3.1】~【例3.12】
    咳咳,这就是问题所在了(语法不通吧

心得:我们走了一些弯路(认真脸.jpg)