(一)定义模式
【例3.1】为用户WANG定义一个学生-课程模式S-T.
点击“新建查询”
新建数据库SCHOOL:CREATE DATARASE SCHOOL
点击“执行”,在“数据库”点击“刷新”
SCHOOL->安全性->用户 中没有WANG
右键点击“用户”,新建用户,登录名点击“…”点击“浏览”选第一个,“确定”
SCHOOL->安全性->用户 中有了WANG
切换当前数据库到SCHOOL
创建模式:运行CREATE SCHEMA “S-T” AUTHORIZATION WANG;
“架构”中有了S-T
【例3.2】CREATE SCHEMA AUTHORIZATION WANG;
该语句没有指定<模式名>,<模式名>隐含为<用户名>WAMG.
【例3.3】为用户ZHANG创建了一个模式TEST,并且在其中定义一个表TAB1.
1.新建模式接着建表,表属于当前模式
新建模式TEST给WANG,接着建表TAB1,“执行”
SCHOOL->表->TEST.TAB1,表属于TEST模式
2.SQL server 中,默认用户为 dbo,在没有创建模式的情况下,默认的模式名为dbo,所以表名为dbo.*。
执行下图,刷新表,dbo.TAB1,表属于dbo模式
3.指明表属于的模式:
执行,刷新,TAST.TAB2
(二)删除模式
【例3.4】DROP SCHEMA WANG CASCADE; 删除模式ZHANG,同时该模式中定义的表TAB1也被删除。
创建模式ZHANG同时创建表TAB1:
删除模式ZHANG:DROP SCHEMA WANG CASCADE;
有语法错误, SQLserver不支持在 DROP SCHEMA使用CASCADE
先删除该模式下的基本表,再删除模式:
(三)定义基本表
【例3.5】建立“学生”表Student。学号是主码,姓名取值唯一。
【例3.6】建立一个“课程”表Course
【例3.7】建立一个学生选课表SC
(四)修改基本表
【例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;
基本表定义被删除,数据被删除
表上建立的索引、视图、触发器等一般也将被删除 。
有语法错误, SQLserver不支持使用CASCADE:
无法先删除Student:
应先删除SC:
【例3.12】若表上建有视图,使用RESTRICT时表不能删除;使用CASCADE时可以删除表,视图也自动删除。
创建基于Student的视图IS_Student:
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept=‘IS’;
DROP TABLE Student RESTRICT;
DBMS提示信息:
–ERROR: cannot drop table Student because other objects depend on it