Sql Server 02模式和表的基本操作

新建用户

新建数据库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的,如果有外键的话,也不能直接删除。

SQL删除外键约束

查询外键

        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'

删除也会出现错误
在这里插入图片描述

先删除外键。再进行删除,同时视图也会被删除。这里看到视图是不影响表的删除的
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值