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

SQLServr增添数据列,依照名称更动注释

2019-06-08 作者:数据库网络   |   浏览(111)

数据列定义

表中数据行的数据插入和数据类型都以依据数据列的,学会增加数据列在付出进程中是必备的。

DEFAULT约束增多规则

1、若在表中定义了暗许值约束,用户在插入新的数目行时,倘诺该行未有一点名数量,那么系统将暗中同意值赋给该列,借使大家不安装私下认可值,系统默以为NULL。

二、即使“默许值”字段中的项替换绑定的默许值(以不带圆括号的样式显得),则将唤起您消除对暗中同意值的绑定,并将其替换为新的默许值。

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

四、若要输入数值私下认可值,请输入数值并且永不用引号将值括起来。

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

FOREIGN KEY约束增添规则

一、外键约束并不只有能够与另一表的主键约束相链接,它仍是能够定义为引用另2个表中 UNIQUE 约束的列。

2、假诺在 FOREIGN KEY 约束的列中输入非 NULL 值,则此值必须在被引用列中留存;不然,将回到违反外键约束的错误音信。 若要有限支持验证了组合外键约束的装有值,请对具有参预列钦定NOT NULL。

三、FOREIGN KEY 约束仅能引用位于同一服务器上的平等数据库中的表。 跨数据库的引用完整性必须经过触发器实现。

四、FOREIGN KEY 约束可援引同一表中的其余列。 此行为称作自引用。

⑤、在列级内定的 FOREIGN KEY 约束只好列出八个引用列。 此列的数据类型必须与定义约束的列的数据类型同样。

陆、在表级钦赐的 FOREIGN KEY 约束所具有的引用列数目必须与约束列列表中的列数同样。 每一种引用列的数据类型也不能够不与列表中相应列的数据类型一样。

7、对于表可包括的引用别的表的 FOREIGN KEY 约束的多少或任何表所具备的引用特定表的 FOREIGN KEY 约束的数据, 数据库引擎 都未曾预约义的限量。 就算如此,可利用的 FOREIGN KEY 约束的实在多少照旧受硬件配置以及数据库和应用程序设计的限制。 表最多能够将 25三个别的表和列作为外键引用(传出引用)。 SQL Server 2016 (一三.x) 将可在独立的表中引用的其他表和列(传入引用)的数额限制从 25三 升高至 十,000。 (包容性等第至少必须为 130。)数量限制的巩固带来了下列约束:

DELETE 和 UPDATE DML 操作帮忙胜出 2伍叁 个外键引用。 不支持MELX570GE 操作。

对自个儿举办外键引用的表仍只可以实行 二伍贰个外键引用。

列存款和储蓄索引、内部存款和储蓄器优化表和 Stretch Database 暂不协助开始展览抢先 2伍三 个外键引用。

八、对于有时表不强制 FOREIGN KEY 约束。

9、假设在 CL安德拉用户定义类型的列上定义外键,则该项目标落到实处必须支持二进制排序。

10、仅当 FOREIGN KEY 约束引用的主键也定义为品种 varchar(max) 时,技巧在此约束中央银行使项目为varchar(max) 的列。

前言
    在上篇文章最后的时候有说要商量落实【名称 备注来生成数据库注释】,呵呵相比较顺遂的是写完那篇小说不久就把这一个给鼓捣出来了,关于它里面那么些奇怪语法未有找到确切的素材,不过知道了少数,在里头一贯写SQL语句还能够的,所以能够顺遂完结指标。关于PD配置及更换这里就不另行讲解了,下边进入正题。

用sql语句创立表的时候,怎么着给列钦定表明。主要用到sp_addextendedproperty那一个蕴藏进程。

动用SSMS数据库管理工科具增多数据列

在数据表中增多一列只怕多列步骤同样

一、连接数据库,选拔数据表-》右键点击-》选取设计。

澳门新萄京官方网站 1

2、在新开发的窗口中输入中-》输入列名,数据类型,是或不是可空-》在底下输入列注释等属性-》点击保存开关(可能ctrl s)。

澳门新萄京官方网站 2

三、要是想在钦命列前边增加数据列-》选拔要钦点列,右键点击-》插入数据列-》输入列名,列类型,是或不是可空,属性等,点击保存。

澳门新萄京官方网站 3

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

壹、连接数据库,采取数据表-》右键点击-》选取设计。

澳门新萄京官方网站 4

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

澳门新萄京官方网站 5

三、点击保存开关(也许ctrl s)-》刷新表-》再度张开表查看结果。

澳门新萄京官方网站 6

运用SSMS数据库管理工科具加多外键约束

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

1、连接数据库,打开要增多外键的多少表-》右键点击-》选拔设计。

澳门新萄京官方网站 7

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

澳门新萄京官方网站 8

叁、在外键关系窗口中-》点击增加。

澳门新萄京官方网站 9

肆、增加实现后-》首先修改表和列标准。

澳门新萄京官方网站 10

5、在表和列窗口中-》输入外键名-》在左臂选取主表和涉及的列-》在右侧选择从表和作为外键的列-》点击鲜明。

澳门新萄京官方网站 11

陆、在外键关系窗口中-》可挑选丰硕或许不加多外键描述-》可挑选足够恐怕不加多修改大概去除数据时级联操作-》可挑选丰裕或然不添抓实制外键约束-》可挑选充裕恐怕不添狠抓制用于复制-》点击关闭。

澳门新萄京官方网站 12

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

澳门新萄京官方网站 13

澳门新萄京官方网站 14

正文     壹.    修改当前DBMS(ScriptObjectsColumnColumnComment)地方的值如下:

语法

动用T-SQL脚本数据列

采用T-SQL脚本增加DEFAULT约束

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

DECLARE @des VARCHAR(255)
SET @des = CASE N'%COMMENT%'
         WHEN N'%Name%' THEN N'%Name%'
         ELSE N'%Name%' '('  N'%COMMENT%'   ')'
END
EXECUTE sp_addextendedproperty N'MS_Description', @des, N'user', N'%OWNER%', N'table', N'%TABLE%', N'column', N'%COLUMN%'

sp_addextendedproperty
    [ @name = ] { 'property_name' }
    [ , [ @value = ] { 'value' } 
        [ , [ @level0type = ] { 'level0_object_type' } 
                    , [ @level0name = ] { 'level0_object_name' } 
                [ , [ @level1type = ] { 'level1_object_type' } 
                                    , [ @level1name = ] { 'level1_object_name' } 
                        [ , [ @level2type = ] { 'level2_object_type' } 
                                                    , [ @level2name = ] { 'level2_object_name' } 
                        ] 
                ]
        ] 
    ] 

累加数据列

语法:alter table 数据库名.dbo.表名 add 列名  列类型 [not] null;

示例:

--增多可空数据列
alter table testss.dbo.test1 add height1 nvarchar(50) null;

--增添不可空数据列
alter table testss.dbo.test1 add height2 nvarchar(50) not null;

澳门新萄京官方网站 15

澳门新萄京官方网站 16

当表结构已存在时

先是推断表中是或不是存在暗许约束,若是存在则先删除暗中同意约束再加多,若是不设有则一直抬高。

语法:

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

澳门新萄京官方网站 17

澳门新萄京官方网站 18

当表结构已存在时

假如要增进约束的表已存在外键约束,需求先删除却键约束再增多外键约束。若是不存在外键约束能够加多外键约束。

语法:

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;
SQLServr增添数据列,依照名称更动注释。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

澳门新萄京官方网站 19

    
    二.PD中增加测试用的字段 性别
澳门新萄京官方网站 20
    三.生成SQL语句,生成之后的SQL语句为:

 

增添带注释的数据列

 语法:

alter table 数据库名.dbo.表名 add 列名 列数据类型 [not] null;
execute sp_addextendedproperty N'MS_Description', N'列说明', N'user', N'dbo', N'table', N'表明, N'column', N'列名';

示例:

alter table testss.dbo.test1 add height3 nvarchar(50) null;
execute sp_addextendedproperty N'MS_Description', N'身高3', N'user', N'dbo', N'table', N'test1', N'column', N'height3';

澳门新萄京官方网站 21

澳门新萄京官方网站 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

在新表中开创外键

 语法:

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

澳门新萄京官方网站 25

/*==============================================================*/
/* DBMS name:      SQL SERVER 2000 [澳门新萄京官方网站,EXT]                        */
/* Created on:     2008-2-28 16:57:43                           */
/*==============================================================*/

--创建表
create table 表(a1 varchar(10),a2 char(2))

丰裕多少列时钦命私下认可值

语法:alter table 数据库名.dbo.表名 add 列名 int not null default 值;

示例:alter table testss.dbo.test1 add testid int not null default 1;

澳门新萄京官方网站 26

澳门新萄京官方网站 27

DEFAULT约束优缺点

优点:

一、使用默许值能够减掉代码量,新增扩大少时方可不用写新添暗中同意值列,推行新添操作时时默许填充。

二、较有利于开始展览计算和解析,以及方便程序逻辑操作。

缺点:

壹、使用不为NULL的暗许值,占用了更加多的仓库储存空间。

 

FOREIGN KEY约束优缺点

优点:

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

二、关联合检查询时,可以用到FK 的总括消息。

叁、有主外键的数据库设计能够追加EPAJERO图的可读性。

缺点:

1、删队或更新关联数据时索要做检查,功效会比相当的低。

二、手工业调数据时,会设有主从表校验,会比较麻烦。

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

 

if exists (select 1
            from  sysobjects
           where  id = object_id('dbo.Employee')
            and   type = 'U')
   drop table dbo.Employee
go

--为表增加描述新闻
EXECUTE sp_addextendedproperty N'MS_Description', '职员音讯表', N'user', N'dbo', N'table', N'表', NULL, NULL

加多四个数据列

语法:

alter table 数据库名.dbo.表名 add 列名 列类型 not null default 值,列名 列类型 null default 值;

示例:

alter table testss.dbo.test1 add height5 int not null default 1,
height6 nvarchar(20) null default '178cm';

 

澳门新萄京官方网站 28

澳门新萄京官方网站 29

/*==============================================================*/
/* Table: Employee                                              */
/*==============================================================*/
create table dbo.Employee (
   ID                   int                  not null,
   Username             varchar(20)          null,
   Password             varchar(20)          null,
   Sex                  int                  null,
   constraint PK_EMPLOYEE primary key (ID)
)
go

--为字段a1增添描述新闻
EXECUTE sp_addextendedproperty N'MS_Description', '姓名', N'user', N'dbo', N'table', N'表', N'column', N'a1'

总结

在生养可能开垦阶段,数据列的增加提出选用T-SQL脚本,方便开垦和生产,且便于维护。

 

EXECUTE sp_addextendedproperty N'MS_Description', N'Employee', N'user', N'dbo', N'table', N'Employee', NULL, NULL
go

--为字段a二增添描述音信
EXECUTE sp_addextendedproperty N'MS_Description', '性别', N'user', N'dbo', N'table', N'表', N'column', N'a2'

DECLARE @des VARCHAR(255)
SET @des = CASE N'主键ID'
         WHEN N'主键ID' THEN N'主键ID'
         ELSE N'主键ID' '('  N'主键ID'   ')'
END
EXECUTE sp_addextendedproperty N'MS_Description', 
@des
, N'user', N'dbo', N'table', N'Employee', N'column', N'ID'
go

--更新表中列a一的叙述属性:
EXEC sp_updateextendedproperty 'MS_Description','字段1','user',dbo,'table','表','column',a1

DECLARE @des VARCHAR(255)
SET @des = CASE N'用户名'
         WHEN N'用户名' THEN N'用户名'
         ELSE N'用户名' '('  N'用户名'   ')'
END
EXECUTE sp_addextendedproperty N'MS_Description', 
@des
, N'user', N'dbo', N'table', N'Employee', N'column', N'Username'
go

--删除表中列a1的叙说属性:
EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','表','column',a1

DECLARE @des VARCHAR(255)
SET @des = CASE N'密码'
         WHEN N'密码' THEN N'密码'
         ELSE N'密码' '('  N'密码'   ')'
END
EXECUTE sp_addextendedproperty N'MS_Description', 
@des
, N'user', N'dbo', N'table', N'Employee', N'column', N'Password'
go

--删除测试
drop table 表

DECLARE @des VARCHAR(255)
SET @des = CASE N'1 男 0 女'
         WHEN N'性别' THEN N'性别'
         ELSE N'性别' '('  N'1 男 0 女'   ')'
END
EXECUTE sp_addextendedproperty N'MS_Description', 
@des
, N'user', N'dbo', N'table', N'Employee', N'column', N'Sex'
go

    最后效果图:
澳门新萄京官方网站 30

只顾:此番使用的例证是在上篇小说的根基上进行修改的,包涵数据库以及PD配置!!

本文由澳门新萄京官方网站发布于数据库网络,转载请注明出处:SQLServr增添数据列,依照名称更动注释

关键词: