澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站数据表基本操作语句,数据

2019-05-03 作者:数据库网络   |   浏览(96)

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 约束的实际数目还是受硬件配置以及数据库和应用程序设计的限制。 表最多可以将 253 个其他表和列作为外键引用(传出引用)。 SQL Server 2016 (13.x) 将可在单独的表中引用的其他表和列(传入引用)的数量限制从 253 提高至 10,000。 (兼容性级别至少必须为 130。)数量限制的提高带来了下列约束:

DELETE 和 UPDATE DML 操作支持大于 253 个外键引用。 不支持 MERGE 操作。

对自身进行外键引用的表仍只能进行 253 个外键引用。

列存储索引、内存优化表和 Stretch Database 暂不支持进行超过 253 个外键引用。

8、对于临时表不强制 FOREIGN KEY 约束。

9、如果在 CLR 用户定义类型的列上定义外键,则该类型的实现必须支持二进制排序。

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:向表中添加字段

1:向表中添加字段
Alter table [表名] add [列名] [类型]

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

本示例演示当表结构已存在时添加外键约束,创建表时添加外键约束步骤和表结构存在时添加外键步骤相同。示例演示如下:

1、连接数据库,打开要添加外键的数据表-》右键点击-》选择设计。

澳门新萄京官方网站 1

2、在表设计窗口-》选择要添加外键的数据行-》右键点击-》选择关系。

澳门新萄京官方网站 2

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

澳门新萄京官方网站 3

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

澳门新萄京官方网站 4

5、在表和列窗口中-》输入外键名-》在左边选择主表和关联的列-》在右边选择从表和作为外键的列-》点击确定。

澳门新萄京官方网站 5

6、在外键关系窗口中-》可选择添加或者不添加外键描述-》可选择添加或者不添加修改或者删除数据时级联操作-》可选择添加或者不添加强制外键约束-》可选择添加或者不添加强制用于复制-》点击关闭。

澳门新萄京官方网站 6

7、点击保存按钮(ctrl s)-》此时表会弹出警告窗口,点击是-》刷新查看外键是否添加成功。

澳门新萄京官方网站 7

澳门新萄京官方网站 8

使用SSMS数据库管理工具添加DEFAULT约束

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

澳门新萄京官方网站 9

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

澳门新萄京官方网站 10

3、点击保存按钮(或者ctrl s)-》刷新表-》再次打开表查看结果。

澳门新萄京官方网站 11

使用SSMS数据库管理工具添加CHECK约束

1、连接数据库,选择数据库,选择数据表-》右键点击(或者直接点击约束,右键点击,选择添加约束,后面步骤相同)-》选择设计。

澳门新萄京官方网站 12

2、选择要添加约束的数据列-》右键点击-》选择CHECK约束。

澳门新萄京官方网站 13

3、在CHECK约束弹出框中点击添加。

澳门新萄京官方网站 14

4、在CHECK约束弹出框中-》输入CHECK约束表达式-》输入CHECK约束名-》输入CHECK约束描述-》其他可以选择默认。

澳门新萄京官方网站 15

5、点击关闭-》点击保存按钮(或者ctrl s)-》刷新表查看结果。

澳门新萄京官方网站 16

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

2:删除字段
Alter table [表名] drop column [列名]

使用T-SQL脚本添加外键约束

使用T-SQL脚本添加DEFAULT约束

使用T-SQL脚本添加CHECK约束

2:  删除字段

3:修改表中字段类型(可以修改列的类型,是否为空)
Alter table [表名] alter column [列名] [类型]

当表结构已存在时

如果要添加约束的表已存在外键约束,需要先删除外键约束再添加外键约束。如果不存在外键约束可以添加外键约束。

语法:

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

澳门新萄京官方网站 17

当表结构已存在时

首先判断表中是否存在默认约束,如果存在则先删除默认约束再添加,如果不存在则直接添加。

语法:

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

澳门新萄京官方网站 18

澳门新萄京官方网站 19

当表结构存在时

添加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

 澳门新萄京官方网站 20

澳门新萄京官方网站 21

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

4:添加主键
Alter table [表名] add constraint [约束名] primary key([列名])

在新表中创建外键

 语法:

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

澳门新萄京官方网站 22

创建表时添加默认约束

首先判断表是否选在,如果存在则先删除表再添加,如果不存在则直接添加。

语法:

--创建新表时添加默认约束
--数据库声明
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

澳门新萄京官方网站 23

澳门新萄京官方网站 24

当表结构不存在时

如果表结构不存在,可以直接添加约束,可以同时添加一个或者多个约束。

语法:

--如果表结构不存在时添加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

 澳门新萄京官方网站 25

澳门新萄京官方网站 26

澳门新萄京官方网站 27

3:  修改表中字段类型 (可以修改列的类型,是否为空)

5:添加唯一约束
Alter table [表名] add constraint [约束名] unique([列名])

FOREIGN KEY约束优缺点

优点:

1、保证数据的一致性,完整性,更可靠。

2、关联查询时,可以用到FK 的统计信息。

3、有主外键的数据库设计可以增加ER图的可读性。

缺点:

澳门新萄京官方网站,1、删队或更新关联数据时需要做检查,效率会很低。

2、手工调数据时,会存在主从表校验,会比较麻烦。

3、批量导入数据时,会存在外键校验,需要先关闭外键约束,导入完成再打开外键约束,操作比较麻烦。

 

DEFAULT约束优缺点

优点:

1、使用默认值可以减少代码量,新增数据时可以不用写新增默认值列,执行新增操作时时默认填充。

2、较有利于进行统计和分析,以及方便程序逻辑操作。

缺点:

1、使用不为NULL的默认值,占用了更多的存储空间。

 

CHECK约束优缺点

优点:

1、保证列数据规范和范围,可以约束数据完整性

2、有Check约束的列可以提供给查询优化器信息从而提升性能

缺点:

1、插入或者修改时数据不符合约束规则,无法修改成功。

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

6:添加表中某列的默认值
Alter table [表名] add constraint [约束名] default(默认值) for [列名]

4:添加主键

7:添加check约束
Alter table [表名] add constraint [约束名] check(内容)

Alter table [表名] add constraint [ 约束名] primary key( [列名])

8:添加外键约束
Alter table [源表名] add constraint [约束名]  foreign key(列名) references 引用表名(列名)

5:添加唯一约束

9:删除约束
Alter table [表名] drop constraint [约束名] 

Alter table [表名] add constraint [ 约束名] unique([列名])

10:重命名表
exec sp_rename '[原表名]','[新表名]'

6:添加表中某列的默认值

11:重命名列名
exec sp_rename '[表名].[列名]','[表名].[新列名]'

Alter table [表名] add constraint [约束名] default(默认值) for [列名]
7:添加约束

二、创建注释(N'user', N'dbo', N'TABLE' 为固定的写法) 
1:为表添加描述信息
EXECUTE sp_addextendedproperty N'MS_Description', N'人员信息表', N'user', N'dbo', N'TABLE', N'表名', NULL, NULL

Alter table [表名] add constraint [约束名] check (内容)

2:为字段添加描述信息(如UserName、Sex)
EXECUTE sp_addextendedproperty N'MS_Description', N'姓名', N'user', N'dbo', N'TABLE', N'表名', N'column', N'UserName'
EXECUTE sp_addextendedproperty N'MS_Description', N'性别', N'user', N'dbo', N'TABLE', N'表名', N'column', N'Sex'

8:添加外键约束

3:更新表中列的描述属性(如Username)
EXEC sp_updateextendedproperty N'MS_Description', N'新的描述内容', N'user', N'dbo', N'TABLE', N'表名', N'column', N'UserName'

 Alter table [表名] add constraint [约束名]  foreign key(列名) referencese 另一表名(列名)

5:删除表中列的描述属性(如UserName)
EXEC sp_dropextendedproperty N'MS_Description', N'user', N'dbo', N'TABLE', N'表名', N'column', N'UserName'

9:删除约束

来自为知笔记(Wiz)

Alter table [表名] drop constraint [约束名] 

10:重命名表

exec sp_rename '[原表名]','[新表名]'

11:重命名列名

exec sp_rename '[表名].[列名]','[表名].[新列名]'

 

创建注释(N'user', N'dbo', N'TABLE' 为固定的写法)

12:为表添加描述信息
EXECUTE sp_addextendedproperty N'MS_Description', '人员信息表', N'user', N'dbo', N'TABLE', N'表名', NULL, NULL

13:为字段Username添加描述信息
EXECUTE sp_addextendedproperty N'MS_Description', '姓名', N'user', N'dbo', N'TABLE', N'表名', N'column', N'Username'

14:为字段Sex添加描述信息
EXECUTE sp_addextendedproperty N'MS_Description', '性别', N'user', N'dbo', N'TABLE', N'表名', N'column', N'Sex'

15:更新表中列UserName的描述属性:
EXEC sp_updateextendedproperty 'MS_Description','新的姓名','user',dbo,'TABLE','表名','column','UserName'

16:删除表中列UserName的描述属性:
EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'TABLE','表名','column','Username'

本文由澳门新萄京官方网站发布于数据库网络,转载请注明出处:澳门新萄京官方网站数据表基本操作语句,数据

关键词: