新建用户
新建数据库stu,安全性->用户->右击新建用户
用户名为wnag,登录名->浏览->选择第一个
1 定义模式
SQL 语句
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
3.1,为用户WANG定义一个学生-课程模式S-T,刷新可以在架构中看到"S-T"
3.2 ,CREATE SCHEMA AUTHORIZATION WANG;
该语句没有指定<模式名>,<模式名>隐含为<用户名>
3.3为用户WANG创建了一个模式TEST,并且在其中定义一个表TAB1
由于语句同时执行,这里TAB1得模式是TEST.
默认的模式是dbo
也可以在新建表的同时定义模式
2 删除模式
SQL语句
DROP SCHEMA <模式名> <CASCADE|RESTRICT>
CASCADE(级联) 删除模式的同时把该模式中所有的数据库对象全部删除
RESTRICT(限制) 如果该模式中定义了下属的数据库对象(如表、视图
等),则拒绝该删除语句的执行。仅当该模式中没有任何下属的对象时才能执行
执行时报错,SQL sever中不支持这两种语句
可以看到直接删除也是不可以的,显示正在被引用
先删除该模式下得所有表,才能执行删除模式语句
3 基本表的定义
3.5 建立“学生”表Student。学号是主码,姓名取值唯一。
create table Student
(Sno char(9) primary key,-- 列级完整性约束条件,Sno是主码
Sname char(20) unique,--Sname取唯一值
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),--表级完整性约束条件,Sno是外码,被参照表是Student
foreign key(Cno) references Course(Cno)--表级完整性约束条件, Cno是外码,被参照表是Course
);
4 修改基本表
3.8 向Student表增加“入学时间”列,其数据类型为日期型
alter table Student add S_entrance date
不管基本表中原来是否已有数据,新增加的列一律为空值
3.9 将年龄的数据类型由字符型(假设原来的数据类型是
字符型)改为整数(由最开始设置的smallint改为了int)
alter table Student alter column Sage int
3.10 增加课程名称必须取唯一值的约束条件。
alter table Course add unique(Cname)
5 表的删除
3.11 删除Student表
drop table Student cascade;
RESTRICT:删除表是有限制的。欲删除的基本表不能被其他表的约束所引用, 如果存在依赖该表的对象,则此表不能被删除
CASCADE:删除该表没有限制。 在删除基本表的同时,相关的依赖对象一起删除
表的删除也是不支持cascade的,如果有外键的话,也不能直接删除。
查询外键
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')
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('Course')
删除参照student的外键
alter table SC drop constraint FK__SC__Sno__3F466844
alter table SC drop constraint FK__SC__Cno__403A8C7D
再删除表就可以了
3.12 若表上建有视图,使用RESTRICT时表不能删除;使用
CASCADE时可以删除表,视图也自动删除。
新建视图
create view IS_Course
as
select Cno,Cname
from Course
where Ccredit='IS'
删除也会出现错误
先删除外键。再进行删除,同时视图也会被删除。这里看到视图是不影响表的删除的