模式的定义与删除
准备工作
新建数据库用户
例题
[例3.1] 为用户WANG定义一个学生-课程模式S-T
运行前可用 “√”检查
[例3.2] CREATE SCHEMA AUTHORIZATION WANG;
语句并没有创建架构
通过查看T-sql中的schema 知
[例3.3]为用户ZHANG创建了一个模式TEST,并且在其中定 义一个表TAB1:
[例3.4] DROP SCHEMA WANG CASCADE;
删除模式ZHANG,同时该模式中定义的表TAB1也被删除
上一步新建的是TEST架构
去掉CASCADE
那么 我们可以先删除 TAB1 TABL2 再删除架构TEST
DROP TABLE TEST.TAB1;
DROP TABLE TEST.TAB2;
DROP SCHEMA TEST;
成功删除TEST
[例3.5] 建立“学生”表Student。学号是主码,姓名取值唯一。
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR (20) UNIQUE,
Ssex CHAR (2),
Sage SMALLINT,
Sdept CHAR(20)
);
[例3.6 ] 建立一个“课程”表Course
CREATE TABLE Course
(Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40),
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY(Cpno) REFERENCES Course(Cno)
-- Cpno是外码 被参照表是Course 被参照列是Cno
);
[例3.7] 建立一个学生选课表SC
CREATE TABLE SC
(Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY (Sno,Cno),
FOREIGN KEY (Sno) REFERENCES Student(Sno),
FOREIGN KEY (Cno) REFERENCES Course(Cno)
);
[例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;
和上面删除模式一样 会出现
去掉CASCADE
与上面 一样 那么我们需要先处理 FOREIGN KEY
REF:SQL删除外键约束
用如下SQL语句查询出表中外键约束名称:
1 select name
2 from sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_id
3 where f.parent_object_id=object_id('表名')
select name
from sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_id where f.parent_object_id=object_id('SC')
删除外键约束
alter table SC drop constraint FK__SC__Sno__2C3393D0
alter table SC drop constraint FK__SC__Cno__2D27B809
再进行删除
[例3.12 ]若表上建有视图,使用RESTRICT时表不能删除;使用 CASCADE时可以删除表,视图也自动删除。
建视图
CREATE VIEW IS_Course
AS
SELECT Cno,Cname
FROM Course
WHERE Ccredit='IS';
同样
DROP TABLE Course CASCADE;
会出现 CASCADE错误
与上一例题一样 删除外键约束
alter table Course drop constraint FK__Course__Cpno__29572725
再进行删除
DROP TABLE Course ;
查看视图 视图自动被删除
注意:SQL Server不支持在删除过程中使用CASCADE/RESTRICT关键字
从例题12,11,4 可以体会到
感觉只是开了个小头就有好多东西需要学,网上查阅到T-Sql具有一些相对于sql的扩展功能
找到了一篇关于T-sql的,以便以后参考,