Sql Server 02

模式的定义与删除

 

准备工作

新建数据库用户

Sql Server 02_第1张图片

 

Sql Server 02_第2张图片

 

例题

[例3.1] 为用户WANG定义一个学生-课程模式S-T

运行前可用 “√”检查

Sql Server 02_第3张图片                 Sql Server 02_第4张图片

 

[例3.2] CREATE SCHEMA AUTHORIZATION WANG;

 

Sql Server 02_第5张图片

 

语句并没有创建架构

通过查看T-sql中的schema  知

Sql Server 02_第6张图片

 

 

 

 

[例3.3]为用户ZHANG创建了一个模式TEST,并且在其中定 义一个表TAB1:

Sql Server 02_第7张图片

 

[例3.4] DROP SCHEMA WANG CASCADE;

删除模式ZHANG,同时该模式中定义的表TAB1也被删除

上一步新建的是TEST架构 

Sql Server 02_第8张图片

 

去掉CASCADE

 

Sql Server 02_第9张图片

 

那么 我们可以先删除 TAB1  TABL2 再删除架构TEST

DROP TABLE TEST.TAB1;
DROP TABLE TEST.TAB2;
DROP SCHEMA TEST;

 

Sql Server 02_第10张图片

 

Sql Server 02_第11张图片

 

成功删除TEST

 

[例3.5] 建立“学生”表Student。学号是主码,姓名取值唯一。

 

CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR (20) UNIQUE,
Ssex CHAR (2),
Sage SMALLINT,
Sdept CHAR(20)
);

Sql Server 02_第12张图片

 

[例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
);

 

Sql Server 02_第13张图片

 

 

[例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)
);

Sql Server 02_第14张图片

 

[例3.8] 向Student表增加“入学时间”列,其数据类型为日期型

ALTER TABLE Student ADD S_entrance DATE;

不管基本表中原来是否已有数据,新增加的列一律为空

Sql Server 02_第15张图片

 

[例3.9] 将年龄的数据类型由字符型(假设原来的数据类型是 字符型)改为整数。

 

ALTER TABLE Student ALTER COLUMN Sage INT;

 

Sql Server 02_第16张图片

 

[例3.10] 增加课程名称必须取唯一值的约束条件。

ALTER TABLE Course ADD UNIQUE (Cname);

如果 重复 则会

Sql Server 02_第17张图片

 

[例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')

 Sql Server 02_第18张图片

 

删除外键约束

alter table SC drop constraint FK__SC__Sno__2C3393D0
alter table SC drop constraint FK__SC__Cno__2D27B809

再进行删除

Sql Server 02_第19张图片

 

[例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 02_第20张图片

 

注意:SQL Server不支持在删除过程中使用CASCADE/RESTRICT关键字

从例题12,11,4 可以体会到

感觉只是开了个小头就有好多东西需要学,网上查阅到T-Sql具有一些相对于sql的扩展功能 

找到了一篇关于T-sql的,以便以后参考,

你可能感兴趣的:(DB实验,sql)