sql-server(模式创建)

模式:在sql-server中创建模式其实就是为用户创建一个架构(命名空间)。在旧版本的sql-server中,没有架构这个说法,这是因为以前的sql-server使用用户名来充当架构,就是说用户名跟架构其实隐式的连在一起的,不需要我们关心。但后来的sql-server版本为了便于管理,就将架构和用户名分开了。

来看下创建模式的好处:下图是我创建的数据库和表格。下图已经存在一个模式为dbo(默认模式)的表格st。如果你再直接使用默认的模式(架构)创建st表,就会提示st已经存在,不能重复创建。

但是如果我们使用其他模式创建st表,就不会冲突了。下图我们使用了changqing模式,结果又创建了一个st表。这就是模式(构架)的好处,使得在同一个数据库下可以使用同样的表格名称。

 

一、模式创建(架构创建)

下图我们使用已经创建好的数据库school, 和数据库用户changqing。(如果没有创建,请自己创建一个数据库用户)

创建模式定义时,调用该命令的用户必须拥有管理员权限,否则无法创建。而且不能为登录名创建模式,必须是具体的数据库的用名。

注:不过,实际大部分登录名就是数据库用户名,少部分不是,如sa是登陆名,实际它对应的数据库用户名是dbo,所以只能为dbo用户创建模式,而不能为sa创建, 因为sa是登录名不是用户名。

总结重要两点(管理员权限才能创建,必须使用数据库用户名)。

创建模式为:下面的例子是为shool数据库用户changqing创建一个test模式,可以看到此用户拥有了test架构。

use school 
create schema  test authorization changqing;

 

二、使用模式创建表格

1.如果创建表格时不指定模式,系统默认创建dbo模式,

如下:

use school
go
create table  student(
    Sno char(9)  primary key,
    Sname char(20)unique,
    Ssex char(2),
    Sage smallint,
    Sdept char(20)

);
go

这句sql语句执行会创建一个dbo模式的student,由于dbo模式的student已经存在,所以执行失败。

 

2.创建表格的时候指定模式,

sql语句如下

use school
go
create table  test.student(
    Sno char(9)  primary key,
    Sname char(20)unique,
    Ssex char(2),
    Sage smallint,
    Sdept char(20)

);
go

这句sql语句创建一个test模式的student表。

 

三、删除模式

如果在该模式下建立了表格或则视图等,应该先删除这些表格视图,然后才能删除此模式。如下图,test模式被student表使用,所以不允许删除。

应该先删除引用test模式的student表,然后才能删除模式test。

 

 

  • 39
    点赞
  • 199
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

圣诞节不感冒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值