1010cc时时彩标准版 > 1010cc三分网站 > 1010cc时时彩标准版:数据表脚本,数据库设计

原标题:1010cc时时彩标准版:数据表脚本,数据库设计

浏览次数:73 时间:2019-08-10

FOREIGN KEY约束增多准则

1、外键约束并既能与另一表的主键约束相链接,它还能定义为援用另两个表中 UNIQUE 约束的列。

2、借使在 FOREIGN KEY 约束的列中输入非 NULL 值,则此值必须在被引用列中留存;否则,将回来违反外键约束的错误消息。 若要保险验证了组合外键约束的具有值,请对全数出席列钦赐NOT NULL。

3、FOREIGN KEY 约束仅能援引位于同一服务器上的均等数据库中的表。 跨数据库的援引完整性必须通过触发器完成。

4、FOREIGN KEY 约束可援用同一表中的别的列。 此行为称为自援引。

5、在列级钦定的 FOREIGN KEY 约束只好列出一个引用列。 此列的数据类型必须与概念约束的列的数据类型同样。

6、在表级钦命的 FOREIGN KEY 约束所享有的援用列数目必须与约束列列表中的列数一样。 每种援用列的数据类型也必须与列表中相应列的数据类型相同。

7、对于表可包括的引用其余表的 FOREIGN KEY 约束的数额或其余表所具有的引用特定表的 FOREIGN KEY 约束的多少, 数据库引擎 都未曾预约义的限量。 固然如此,可应用的 FOREIGN KEY 约束的实际上数目依然受硬件配备以及数据库和应用程序设计的范围。 表最多可以将 2伍拾陆个别的表和列作为外键援引(传出援引)。 SQL Server 二〇一六 (13.x) 将可在单独的表中援用的其余表和列(传入援用)的数额限制从 253 进步至 10,000。 (包容性等级至少必须为 130。)数量限制的拉长带来了下列约束:

DELETE 和 UPDATE DML 操作协助胜出 253 个外键援用。 不协助ME智跑GE 操作。

对自个儿实行外键引用的表仍只好进展 252个外键引用。

列存款和储蓄索引、内部存款和储蓄器优化表和 Stretch Database 暂不协助开始展览超过 253 个外键援用。

8、对于偶然表不强制 FOREIGN KEY 约束。

9、假设在 CLTucson用户定义类型的列上定义外键,则该品种的兑现必须扶助二进制排序。

10、仅当 FOREIGN KEY 约束援引的主键也定义为项目 varchar(max) 时,才干在此约束中选取项目为varchar(max) 的列。

DEFAULT约束加多法规

1、若在表中定义了暗中认可值约束,用户在插入新的数额行时,即使该行未有一点点名数量,那么系统将暗中认可值赋给该列,假诺我们不安装默许值,系统默以为NULL。

2、假使“默许值”字段中的项替换绑定的默许值(以不带圆括号的款式显得),则将唤起您解除对暗许值的绑定,并将其替换为新的暗中认可值。

3、若要输入文本字符串,请用单引号 (') 将值括起来;不要接纳双引号 ("),因为双引号已保存用于带引号的标记符。

4、若要输入数值暗许值,请输入数值並且毫不用引号将值括起来。

5、若要输入对象/函数,请输入对象/函数的称呼并且永不用引号将名称括起来。

CHECK约束增加准则

1、CHECK 约束用于限制列中的值的界定。

2、Check约束通过逻辑表达式来判别数据的得力,用来界定输入一列或多列的值的界定,在列中更新数据时,所要输入的剧情必须知足Check约束的尺码,不然将不可能准确输入。

3、即便对单个列定义 CHECK 约束,那么该列只允许特定的值。

4、如若对三个表定义 CHECK 约束,那么此约束会在一定的列中对值进行界定。

1:向表中增添字段

我们要付出二个回顾的B2C商店,能够产生货品显示,购物车效率,订单流程就足以了,数据库我们接纳SQLServer二零零五。数据库中有商品表,订单表,订单明细表,会员表就足以了,

使用SSMS数据库管理工科具增加外键约束

本示例演示当表结构已存在时增多外键约束,创立表时增加外键约束步骤和表结构存在时加多外键步骤同样。示例演示如下:

1、连接数据库,展开要增加外键的数量表-》右键点击-》选用设计。

1010cc时时彩标准版 1

2、在表设计窗口-》选拔要加多外键的多少行-》右键点击-》采纳涉及。

1010cc时时彩标准版 2

3、在外键关系窗口中-》点击增添。

1010cc时时彩标准版 3

4、加多完成后-》首先修改表和列规范。

1010cc时时彩标准版 4

5、在表和列窗口中-》输入外键名-》在侧面选择主表和关系的列-》在侧面选择从表和当作外键的列-》点击鲜明。

1010cc时时彩标准版 5

6、在外键关系窗口中-》可采纳丰裕也许不加多外键描述-》可挑选足够大概不增添修改只怕去除数据时级联操作-》可接纳充分或许不添抓好制外键约束-》可挑选丰富或然不添抓牢制用于复制-》点击关闭。

1010cc时时彩标准版 6

7、点击保存开关(ctrl s)-》此时表会弹出警告窗口,点击是-》刷新查看外键是不是丰裕成功。

1010cc时时彩标准版 7

1010cc时时彩标准版 8

利用SSMS数据库管理工科具增加DEFAULT约束

1、连接数据库,采纳数据表-》右键点击-》选拔设计。

1010cc时时彩标准版 9

2、在表设计窗口中-》选用数据列-》在列属性窗口中找到暗中认可值或绑定-》输入暗中认可值(注意暗许值的数据类型和输入格式)。

1010cc时时彩标准版 10

3、点击保存按键(恐怕ctrl s)-》刷新表-》再度展开表查看结果。

1010cc时时彩标准版 11

应用SSMS数据库管理工具增添CHECK约束

1、连接数据库,选拔数据库,选用数据表-》右键点击(或然直接点击约束,右键点击,选择丰硕约束,前边步骤同样)-》选用设计。

1010cc时时彩标准版 12

2、选拔要增进约束的数目列-》右键点击-》接纳CHECK约束。

1010cc时时彩标准版 13

3、在CHECK约束弹出框中式点心击增多。

1010cc时时彩标准版 14

4、在CHECK约束弹出框中-》输入CHECK约束说明式-》输入CHECK约束名-》输入CHECK约束描述-》别的能够挑选默许。

1010cc时时彩标准版 15

5、点击关闭-》点击保存开关(只怕ctrl s)-》刷新表查看结果。

1010cc时时彩标准版 16

Alter table [表名] add [列名] 类型

数据库模型如下:

利用T-SQL脚本增添外键约束

运用T-SQL脚本加多DEFAULT约束

动用T-SQL脚本加多CHECK约束

2:  删除字段

1010cc时时彩标准版 17

当表结构已存在时

假若要加上约束的表已存在外键约束,供给先删除了那么些之外键约束再增添外键约束。假若不设有外键约束可以增加外键约束。

语法:

if exists(select * from sysobjects where name=约束名)
alter table 数据库名.[dbo].表名 drop constraint 约束名;
alter table 数据库名.[dbo].表名 with check add constraint 约束名 foreign key(列名)
references 数据库名.[dbo].表名(列名)

on delete cascade
on update cascade;
go

示例:

if exists(select * from sysobjects where name='t1_t2')
alter table [testss].[dbo].[test1] drop constraint t1_t2;
alter table [testss].[dbo].[test1] with check add constraint t1_t2 foreign key(classid)
references [testss].[dbo].[test2](id)
on delete cascade
on update cascade;
go

1010cc时时彩标准版 18

当表结构已存在时

率先判别表中是还是不是留存暗中同意约束,如若存在则先删除暗许约束再增添,假如不设有则向来抬高。

语法:

use 数据库
go
--剖断私下认可约束是或不是存在,固然存在则先删除,假使不设有则一向抬高
if exists(select * from sysobjects where name=约束名)
alter table 表名 drop constraint 约束名;
go
--给钦定列增加默许约束
alter table 表名 add constraint 约束名 default(约束值) for 列名;
go

示例:

use [testss]
go
--推断私下认可约束是或不是存在,假如存在则先删除,假诺不设有则间接助长
if exists(select * from sysobjects where name='defalut_height')
alter table [testss].[dbo].[test1] drop constraint defalut_height;
go
--给钦赐列增加暗许约束
alter table [testss].[dbo].[test1] add constraint defalut_height default(160) for height;
go

1010cc时时彩标准版 19

1010cc时时彩标准版 20

当表结构存在时

加多CHECK约束时首先校验约束是不是已存在,假如存在应该是先删除再加多,要是不真实则直接助长。

语法:

-- 增加一个暗许约束
use 数据库名;
go

if exists(select * from sysobjects where name=约束名)
alter table 表名 drop constraint 约束名;
go

alter table 表名 add constraint 约束名 check(约束准绳),constraint 约束名 check(约束法规);
go

示例:

-- 增多二个私下认可约束
use testss;
go

if exists(select * from sysobjects where name='check1')
alter table test1 drop constraint check1;
go

alter table test1 add constraint check1 check(height>=170 and height<=175);
go

 1010cc时时彩标准版 21

1010cc时时彩标准版 22

Alter table [表名]  drop column [列名]

 当中要说的一个便是:订单表的干活流ID,大家前边要使用专门的学业流,所以这么些工作流的ID是必须的。

在新表中创设外键

 语法:

if exists( select * from sysobjects where name=表名 and type ='U')
drop table 表名;
go

--当表结构不设临时
--建表语法阐明
create table 表名
(
--字段评释
列名 int identity(1,1) not null,
列名 int,
primary key clustered(id asc) with(ignore_dup_key=off) on [primary], --主键索引注解
constraint 外键名 foreign key(列名)

references 主表名(列名)
on update cascade--是或不是级联操作
on delete cascade
)on [primary]

--字段注释评释
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列说明' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列说明' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

go

示例:

if exists( select * from sysobjects where name='test1'and type ='U')
drop table test1;
go

--当表结构不设不时
--建表语法注明
create table test1
(
--字段证明
id int identity(1,1) not null,
name nvarchar(50) null,
sex nvarchar(50) null,
age nvarchar(50) null,
classid int,
primary key clustered(id asc) with(ignore_dup_key=off) on [primary], --主键索引表明
constraint t3_t4 foreign key(classid)

references test2 (id)
on update cascade
on delete cascade
)on [primary]

--字段注释注脚
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'id主键' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'id';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'姓名' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'name';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'性别' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'sex';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'年龄' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'age';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'班级id' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'classid';

go

1010cc时时彩标准版 23

创建表时加多暗中同意约束

率先判别表是不是选在,若是存在则先删除表再加多,假使不设有则从来抬高。

语法:

--创设新表时增多暗许约束
--数据库申明
use 数据库名
go
--借使表已存在则先删除表再次创下建,假若表不真实则直接创制
if exists(select * from sysobjects where name=表名 and type ='U')
drop table 表名;
go
--建表语法注脚
create table 表名
(
--字段注脚
列名 列类型 identity(1,1) not null,
列名 列类型) null,
列名 列类型 null,
列名 列类型 null,
列名 列类型,
列名 列类型 constraint 约束名 default 默认值,
primary key clustered(列名 asc) with(ignore_dup_key=off) on [primary] --主键索引评释
)on [primary]

--字段注释表明
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列说明' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列说明' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列说明' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列说明' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列说明' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

go

示例:

--创造新表时增多暗中认可约束
--数据库申明
use testss
go
--即使表已存在则先删除表再制造,纵然表不设有则平素开立
if exists(select * from sysobjects where name='test1' and type ='U')
drop table test1;
go
--建表语法阐明
create table test1
(
--字段注明
id int identity(1,1) not null,
name nvarchar(50) null,
sex nvarchar(50) null,
age nvarchar(50) null,
classid int,
height int constraint default_he default 166,
primary key clustered(id asc) with(ignore_dup_key=off) on [primary] --主键索引表明
)on [primary]

--字段注释表明
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'id主键' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'id';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'姓名' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'name';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'性别' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'sex';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'年龄' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'age';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'班级id' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'classid';

go

1010cc时时彩标准版 24

1010cc时时彩标准版 25

当表结构荒诞不经时

比如表结构海市蜃楼,可以从来抬高约束,能够同时加上二个要么三个约束。

语法:

--假如表结构不设有的时候加多check约束
use 数据库名;
go
--借使已存在表则删除
if exists(select * from sysobjects where name=表名 and xtype='U')
drop table 表名;
go
--创建表
create table 表名
(
--字段评释
列名 int identity(1,1) not null,
列名 nvarchar(50) null,
列名 nvarchar(50) null constraint 约束名 check(约束法规),
列名 nvarchar(50) null,
列名 int,
列名 int constraint 约束名 check(约束规则)
primary key clustered(列名 asc) with(ignore_dup_key=off) on [primary], --主键索引注解
)on [primary]

--字段注释申明
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列描述' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列描述' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列描述' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列描述' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列描述' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

go

示例:

--假若表结构官样文章时增加check约束
use testss;
go
--假使已存在表则删除
if exists(select * from sysobjects where name='test1' and xtype='U')
drop table test1;
go
--创建表
create table test1
(
--字段注解
id int identity(1,1) not null,
name nvarchar(50) null,
sex nvarchar(50) null constraint check1 check(sex='男' or sex='女'),
age nvarchar(50) null,
classid int,
height int constraint check2 check(height>=110 and height<=120)
primary key clustered(id asc) with(ignore_dup_key=off) on [primary], --主键索引注脚
)on [primary]

--字段注释评释
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'id主键' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'id';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'姓名' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'name';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'性别' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'sex';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'年龄' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'age';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'班级id' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'classid';

go

 1010cc时时彩标准版 26

1010cc时时彩标准版 27

1010cc时时彩标准版 28

3:  修改表中字段类型 (能够修改列的品种,是还是不是为空)

PD图下载地址:

FOREIGN KEY约束优缺点

优点:

1、保险数据的一致性,完整性,更可相信。

2、关联合检查询时,可以用到FK 的总计音信。

3、有主外键的数据库设计能够增添E路虎极光图的可读性。

缺点:

1、删队或更新关联数据时必要做检讨,效能会极低。

2、手工业调数据时,会设有主从表校验,会比较费心。

3、批量导入数据时,会设有外键校验,须要先关闭外键约束,导入完毕再张开外键约束,操作相比辛劳。

 

DEFAULT约束优短处

优点:

1、使用暗中同意值能够减小代码量,新添多少时能够不用写新扩充私下认可值列,施行新添操作时时暗中同意填充。

2、较有助于开展计算和剖判,以及福利程序逻辑操作。

缺点:

1、使用不为NULL的默许值,占用了越多的贮存空间。

 

CHECK约束优劣点

优点:

1、保证列数据规范和限量,能够约束数据完整性

2、有Check约束的列能够提供给查询优化器音讯之所以晋级品质

缺点:

1、插入也许修改时数据不适合约束准则,不可能修改成功。

Alter table [表名] alter column [列名] 类型

对应的SQL语句如下:

本文由1010cc时时彩标准版发布于1010cc三分网站,转载请注明出处:1010cc时时彩标准版:数据表脚本,数据库设计

关键词:

上一篇:应聘中常用的SQL语句,常用知识点总结

下一篇:没有了