>

SQL Server 数据库完毕之T-SQL语句[备忘]

- 编辑:乐百家599手机首页 -

SQL Server 数据库完毕之T-SQL语句[备忘]

总结

1、种种字段只好有贰个暗中同意约束。
2、要是暗中认可约束设置的值赶上字段所允许的尺寸,则截取到字段允许长度。
3、不能参预到含有IDENTITY属性也许TIMESTAMP的字段上。
4、如若字段的数据类型为用户自定义类型,并且已有暗中同意值绑定在此数据类型上,则不容许再一次利用暗中同意值。

 

行使T-SQL脚本增多DEFAULT约束

修改列暗许值

假若暗中同意值不设有

语法:alter table 数据库名.dbo.表名 add constraint 约束名 default 暗中同意值 for 列名;

示例:alter table [testss].dbo.[test1] add constraint df_h default 1 for height7;

图片 1

图片 2

--示例一
exec sp_grantDBaccess 'xugang','xg';

行使T-SQL脚本修改DEFAULT约束

DEFAULT约束修改法则必须首先删除现存的DEFAULT约束,然后采取新定义再一次创立,技术采用Transact-SQL修改DEFAULT约束。

语法:

--使用数据库
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='default1')
alter table test1 drop constraint default1;
go
--加多私下认可值约束
alter table test1 add constraint default2 default 18 for age;
go

 图片 3

图片 4

当表结构已存在时

第一判别表中是或不是存在默许约束,如若存在则先删除暗中认可约束再加多,若是海市蜃楼则直接助长。

语法:

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

图片 5

图片 6

修改列是或不是可空

语法:alter table 数据库名.dbo.表名 alter column 列名 类型 约束;  

示例:alter table [testss].dbo.[test1] alter column height7 int not null;

图片 7

图片 8

--授予用户建表的权能
grant create table to xg;

选择SSMS数据库管理工科具修改DEFAULT约束

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

图片 9

2、在表设计器窗口-》选中要修改的数目列-》在列属性中找到私下认可值绑定-》进行改造。

图片 10

3、点击保存(大概ctrl s)-》关闭表设计器-》刷新表-》重新打开表设计器查看。

图片 11

DEFAULT约束增多准绳

1、若在表中定义了暗许值约束,用户在插入新的数量行时,假如该行未有一点名数量,那么系统将暗中同意值赋给该列,若是大家不安装暗中认可值,系统默感觉NULL。

2、如若“暗中认可值”字段中的项替换绑定的私下认可值(以不带圆括号的款型显得),则将唤起您拨冗对暗中认可值的绑定,并将其替换为新的暗许值。

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

4、若要输入数值暗中同意值,请输入数值何况不要用引号将值括起来。

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

修改数据列

在付出和生产进程中,列名的拼写错误或然列名的改变是急需操作数据表的,大好多情状下都以无需修改的.

以下两种情形下大家并不可能一贯改造数据列:

1、用于索引的列。 
2、用于 CHECK、FOREIGN KEY、UNIQUE 或 P福睿斯IMA昂科威Y KEY 约束的列。 
3、与默许值(由 DEFAULT 关键字定义)相关联的列,或绑定到私下认可对象的列。 
4、绑定到准绳的列。 

     
首要事项:  
      使用“系统存款和储蓄进度”创制和删除的点子,后续版本的 Microsoft SQL Server 将去除该意义。
      参考:ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/html/eb737149-7c92-4552-946b-91085d8b1b01.htm

DEFAULT约束优短处

优点:

1、使用私下认可值能够削减代码量,新扩展多少时得以不用写新扩展暗许值列,试行新增操作时时私下认可填充。

2、较有助于开始展览总结和剖判,以及福利程序逻辑操作。

缺点:

1、使用不为NULL的默许值,占用了越来越多的蕴藏空间。

 

总结

在付出照旧生产数据库中,数据列一经济建设好,不要任性改动,随意改动也许会唤起数据库的级联操作失利和代码错误。

 

 

创设表时增进暗中认可约束

先是判别表是还是不是选在,如若存在则先删除表再加多,借使不真实则直接抬高。

语法:

--创造新表时增加暗许约束
--数据库证明
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

图片 12

图片 13

修改列名

语法:exec sp_rename  表明.旧列名,新列名; 

示例:exec sp_rename '[test1].height6','height7'; 

图片 14

图片 15

 

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

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

图片 16

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

图片 17

3、点击保存开关(只怕ctrl s)-》刷新表-》再一次张开表查看结果。

图片 18

设若暗中认可值存在

语法:

--率先步决断默许值否存在,如果存在就删除,假使不设有则不删除
if exists (select * from sys.check_constraints where object_id = object_id(私下认可值约束名) and parent_object_id = object_id(表名))
alter table 表名 drop constraint 暗中同意值约束名

--次之步增添暗中认可值

alter table 表名 add constraint  约束名 default 默认值 for 列名;

示例:

--首先步剖断约束是或不是留存,假诺存在就删除,假设不设有则不删除
if exists (select * from sys.check_constraints where object_id = object_id('df_h') AND parent_object_id = object_id('[testss].dbo.[test1]'))
alter table [testss].dbo.[test1] drop constraint df_h

--次之步增多暗中同意值

alter table [testss].dbo.[test1] add constraint df_h default 2 for height7;

图片 19

-- 附:用SQL创设文件夹(手动):
       --> SQL Server 外围应用配置器
       --> 效率的外侧应用配置器 
       --> 启用xp_cmdshell

应用T-SQL脚本修改列

-- 删除 SQL Server 登入用户
drop login [Andy];

修改列数据类型

语法:alter table 数据库名.dbo.表名 alter column 列名 类型 [约束];  

示例:alter table [testss].dbo.[test1] alter column height7 int null;  

图片 20

图片 21

---------------- 删除学生战表表 ----------------
if exists(select * from sysobjects where name='stuMarks')
   drop table stuMarks;
---------------- 创立学生成绩表 ----------------
create table stuMarks
(
   ExamNo      int not null,
   stuNo       char(6),
   writtenExam float null,
   labExam     float null,
-- 补充约束
constraint PK_ExamNostuNo primary key(ExamNo,stuNo)
)

采用SSMS数据库管理工科具修改列

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

图片 22

2、在新开发的窗口视图中-》点击要修改的行-》能够修改列名、列类型、是还是不是可空、属性等-》修改完结点击保存开关(大概ctrl s)。

图片 23

办法一:增加 Windows 身份验证

--sp_addlogin:创设新的 SQL Server 登陆用户。格式如下:
exec sp_addlogin 'SQL登入名','密码','默许数据库';

图片 24图片 25用SQL创设数据表

create user aa for login [xugang];
go

-- 以下示例将开创带密码的 xugang 登陆名。
create login [Andy] with password = 'Andy_123456' 
MUST_CHANGE; 
-- MUST_CHANGE 选项要求用户第一次延续服务器时更动此密码。
go

 

go

-- 删除此之外键约束
alter table stuMarks
drop constraint FK_stuNo;

-- 增添外键约束:FK_字段名
alter table stu马科斯 --子表上创立
add constraint FK_stuNo
    foreign key(stuNo) references stuInfo(stuNo);

--3. 加多字段  
  alter table uinfor
  add u_note varchar(1) NULL;  

3、用SQL创立数据表

图片 26图片 27用SQL创造数据库用户

use myDBName
go

-- 判定四个表的主键是还是不是留存
select count(*) from sysobjects 
where xtype='pk' and
parent_obj in(select id from sysobjects where name ='stuMarks')

------------ 方法一:使用 SQL 语句 ------------ 

本文由乐百家数据库发布,转载请注明来源:SQL Server 数据库完毕之T-SQL语句[备忘]