数据库实现之T,SQLServer修改数据列

利用SSMS数据库管理工科具修改DEFAULT约束

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

997755.com澳门葡京 1

②、在表设计器窗口-》选中要修改的数额列-》在列属性中找到默许值绑定-》进行退换。

997755.com澳门葡京 2

三、点击保存(也许ctrl+s)-》关闭表设计器-》刷新表-》重新张开表设计器查看。

997755.com澳门葡京 3

DEFAULT约束加多规则

一、若在表中定义了暗许值约束,用户在插入新的数量行时,即便该行未有点名数量,那么系统将暗中认可值赋给该列,即使大家不设置私下认可值,系统默感到NULL。

二、假如“暗许值”字段中的项替换绑定的暗中同意值(以不带圆括号的款式展现),则将唤起您解除对私下认可值的绑定,并将其替换为新的私下认可值。

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

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

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

修改数据列

在付出和生产进程中,列名的拼写错误可能列名的改动是内需操作数据表的,大大多情形下都是不需求修改的.

以下二种状态下大家并不可能一贯改造数据列:

一、用于索引的列。 
2、用于 CHECK、FOREIGN KEY、UNIQUE 或 P君越IMA昂CoraY KEY 约束的列。 
三、与私下认可值(由 DEFAULT 关键字定义)相关联的列,或绑定到暗中认可对象的列。 
4、绑定到规则的列。 

 

运用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

 997755.com澳门葡京 4

997755.com澳门葡京 5

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

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

997755.com澳门葡京 6

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

997755.com澳门葡京 7

三、点击保存开关(或然ctrl+s)-》刷新表-》再一次张开表查看结果。

997755.com澳门葡京 8

接纳SSMS数据库管理工科具修改列

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

997755.com澳门葡京 9

贰、在新开采的窗口视图中-》点击要修改的行-》能够修改列名、列类型、是或不是可空、属性等-》修改变成点击保存按键(只怕ctrl+s)。

997755.com澳门葡京 10

1、用SQL创制文件夹

总结

一、每个字段只好有三个私下认可约束。
二、就算默许约束设置的值大于字段所允许的长度,则截取到字段允许长度。
叁、不可能加入到含有IDENTITY属性大概TIMESTAMP的字段上。
肆、假使字段的数据类型为用户自定义类型,而且已有默许值绑定在此数据类型上,则差异意再次行使暗许值。

 

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

接纳T-SQL脚本修改列

997755.com澳门葡京 11997755.com澳门葡京 12用SQL创设文件夹

当表结构已存在时

率先判别表中是还是不是存在暗中认可约束,借使存在则先删除私下认可约束再增加,要是不设有则平素助长。

语法:

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

997755.com澳门葡京 13

997755.com澳门葡京 14

修改列名

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

示例:exec sp_rename
‘[test1].height6′,’height7’; 

997755.com澳门葡京 15

997755.com澳门葡京 16

— 一、展现高等选项
sp_configure ‘show advanced options’,1;
reconfigure; –更动当前布局
go

成立表时增多默许约束

第3判别表是不是选在,即便存在则先删除表再增添,若是不设有则一贯抬高。

语法:

–成立新表时增加私下认可约束
–数据库评释
use 数据库名
go
–倘诺表已存在则先删除表再次创下设,假诺表不存在则直接创设
if exists(select * from sysobjects where
name=表名 and type =’U’)
drop table 表名;
数据库实现之T,SQLServer修改数据列。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’,
997755.com澳门葡京 ,@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

997755.com澳门葡京 17

997755.com澳门葡京 18

修改列数据类型

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

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

997755.com澳门葡京 19

997755.com澳门葡京 20

— 2、启用 xp_cmdshell:
sp_configure ‘xp_cmdshell’,1; — 1代表“用户ID”
reconfigure
go

DEFAULT约束优缺点

优点:

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

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

缺点:

一、使用不为NULL的默认值,占用了越多的囤积空间。

 

修改列是不是可空

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

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

997755.com澳门葡京 21

997755.com澳门葡京 22

— 附:用SQL创立文件夹(手动):
       –> SQL Server 外围应用配置器
       –> 效能的外侧应用配置器 
       –> 启用xp_cmdshell

修改列暗中同意值

假如默许值不存在

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

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

997755.com澳门葡京 23

997755.com澳门葡京 24

— 然后你就能够应用xp_cmdshell了。

即便私下认可值存在

语法:

–首先步推断暗中同意值否存在,假使存在就删除,若是不存在则不删除
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 列名;

示例:

–第1步判定约束是不是留存,假诺存在就删除,要是不设有则不删除
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;

997755.com澳门葡京 25

— 在C盘建立myDatabase文件夹
xp_cmdshell ‘mkdir c:\myDatabase’; 
go — 或 xp_cmdshell ‘md c:\myDatabase’ 

总结

在付出依旧生产数据库中,数据列壹经济建设好,不要轻巧改换,随便改变恐怕会挑起数据库的级联操作失利和代码错误。

 

 

 贰、用SQL创造数据库

997755.com澳门葡京 26997755.com澳门葡京 27用SQL创制数据库

use master
go — 批管理的扫尾

–在[master]中查询[myDBName]是否留存
if exists(select * from sysdatabases where name=’myDBName’)
   drop database myDBName

create database myDBName –创设数据库
on primary
(
  name=’myDBName’,
  filename=’C:\myDatabase\myDBName.mdf’,
  size=3mb,
  maxsize=拾0mb, — unlimited:无界定的
  filegrowth=2mb 
)
, — 注意:逗号不能够丢!
(
  name=’myDBName_1′,
  filename=’C:\myDatabase\myDBName_1.ndf’,
  size=3mb,
  maxsize=unlimited,
  filegrowth= 10%
)
log on
(
  NAME = N’myDBName_log’, 
  FILENAME = N’C:\myDatabase\myDBName_log.ldf’ , 
  SIZE = 1024kb, 
  MAXSIZE = 1gb, 
  FILEGROWTH = 1mb
)

collate Chinese_PRC_CI_AS –定义排序规则
go

— 删除数据库
— drop database myDBName;

 

 

三、用SQL成立数据表

997755.com澳门葡京 28997755.com澳门葡京 29用SQL创造数据表

use myDBName
go
—————- 删除学生消息表 —————-
if exists(select * from sysobjects where name=’stuInfo’)
   drop table stuInfo;
—————- 创设学生音讯表 —————-
create table stuInfo
(
   stuNo       char(6) primary key,
   stuName     varchar(20) not null,
   stuGender   bit default(1),
   stuAge      int check(stuAge between 0 and 100),
   stuBirthday datetime null default(‘2000-2-2’),
   stuSeat     smallint identity(1,1),–座位号:标识列
   stuAddress  text, –暗中认可允许为空
   stuID       numeric(18,0) unique –身份证 
)

—————- 增多封锁 —————-

— 主键约束:PK_字段名
alter table stuInfo
add constraint PK_stuNo primary key(stuNo);

— 唯一约束:UQ_字段名
alter table stuInfo
add constraint UQ_stuNo unique(stuID);

— 暗许值约束:DF_字段名
alter table stuInfo
add constraint DF_stuBirthday 
    default(‘2000-2-2’) for stuBirthday;

— 检查约束:CK_字段名
alter table stuInfo
add constraint CK_stuAge 
    check(stuAge between 0 and 100);

— 注意:标记列只可以在建表的同时建设构造!
— 增多字段,同时安装标记列。
alter table stuInfo
add stuSeat int identity(1,1);

go

—————- 删除学生战表表 —————-
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)
)

— 组合主键约束:PK_字段名
alter table stuMarks  –ExamNo,stuNo必须为空
add constraint PK_ExamNostuNo1 primary key(ExamNo,stuNo); 

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

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

— 判别三个表的主键是还是不是留存
select count(*) from sysobjects 
where xtype=’pk’ and
parent_obj in(select id from sysobjects where name =’stuMarks’)

–=================== 附加知识点 ===================

–一.剔除原主键
  — 方法壹(删除原主键) 
  alter table uinfor    
  drop constraint PK_uinfor; 

  — 方法2(删除原主键) 
  if exists(select * from sysobjects where xtype=’PK’ 
            and parent_obj=object_id(N’uinfor’) )  
  begin  
  –使用动态语句能够确认保证不管主键名是怎么定义都能够符合规律删除  
    declare @s nvarchar(4000)  
     select @s=N’alter table uinfor drop constraint’+quotename(name)  
            from sysobjects 
            where xtype=’PK’ and parent_obj=object_id(N’uinfor’)  
    exec(@s)  
  end  

–贰. 删除字段  
  –if exists(select * from syscolumns 
  —          where id=object_id(N’uinfor’) and name=’u_id’)  
     alter table uinfor 
     drop column u_id;

–三. 增多字段  
  alter table uinfor
  add u_note varchar(1) NULL;  

–4. 修改字段  
  –if exists(select * from syscolumns where id=object_id(N’uinfor’)   and   name=’u_key’)  
     alter table uinfor 
     alter column u_key varchar(18) NOT NULL;  

  –伍. 增加新主键  
  –if not exists(select * from sysobjects 
  —   where xtype=’PK’ and parent_obj=object_id(N’uinfor’))  
  alter table uinfor 
  add primary key(u_key,u_name);   
–==================================================== 

 

四、用SQL创立登入账户

形式1:增加 Windows 身份验证

997755.com澳门葡京 30997755.com澳门葡京 31足够 Windows 身份验证

–============== 增添 Windows 身份验证 ==============

———— 方法一:使用 SQL 语句(建议选取) ————

/* 
使用CREATE LOGIN为Windows用户[Windows域名\域账户] 
创建 SQL Server 登录名。
*/
create login [NEWER-XG\Administrator] from windows;
go         — login_name 必须用方括号 ([ ]) 括起来。

— 删除 Windows 身份验证
drop login [NEWER-XG\xugang];

———— 方法二:使用系统存储进程(不引入应用) ————

/* sp_grantlogin:内置的系列存储进程 */
exec sp_grantlogin ‘Windows域名\域账户’

exec sp_grantlogin ‘NEWER-XG\xugang’;
/* 
“域”是针对性于网络用户的连带安装,
    若是是本机,可用“计算机名”替换“Windows域名”,
                而“域账户” 等同于 “用户名”。
*/

— 删除 Windows 身份验证,请给出完整名称: <域\用户名>
exec sp_revokelogin ‘NEWER-XG\xugang’; 

主意二:加多 SQL Server 身份验证

997755.com澳门葡京 32997755.com澳门葡京 33增加 SQL Server 身份验证

–============== 加多 SQL Server 身份验证 ==============

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

— 以下示例将开创带密码的 xugang 登录名。
create login [Andy] with password = ‘Andy_123456’ 
MUST_CHANGE; 
— MUST_CHANGE 选项必要用户第二遍一而再服务器时退换此密码。
go

— 删除 SQL Server 登陆用户
drop login [Andy];

———— 方法2:使用系统存储进程(不引进应用) ———— 

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

  –示例一
  exec sp_addlogin ‘Andy’,’Andy123456′,’myDBName’;
  –‘暗中同意数据库’为可选;

  –示例二
  exec sp_addlogin ‘Andy’,’1234′; 
  –后续版本的 Microsoft SQL Server 将去除该意义。

— 删除 SQL Server 登入用户
exec sp_droplogin ‘Andy’;
–后续版本的 Microsoft SQL Server 将去除该功效。

     
首要事项:  
      使用“系统存款和储蓄过程”成立和删除的格局,后续版本的 Microsoft SQL
Server 将去除该功用。
     
参考:ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/html/eb737149-7c92-4552-946b-91085d8b1b01.htm

安全性注意:

      请尽量使用 Windows 身份验证。

 

5、用SQL创制数据库用户

997755.com澳门葡京 34997755.com澳门葡京 35用SQL创制数据库用户

use myDBName
go

–============ 成立’数据库用户’ ============

— 方式一:SQL语句
create user xugang for login [NEWER-XG\xugang];
go

create user aa for login [xugang];
go

— 情势2:存储进程
exec sp_grantDBaccess ‘登入账户’,’数据库用户’;
–后续版本的 Microsoft SQL Server 将去除该功用。

–示例一
exec sp_grantDBaccess ‘xugang’,’xg’;

–示例二
exec sp_grantDBaccess ‘xugang’;
–当省略‘数据库用户’时,即:’登入账户’与’数据库用户’一样。

/* 注意:
dbo用户是二个相比较独特的数据库用户,不能删除,且平素出现在数据库中。
一般的话,某些用户创设的数据库,一般景况下,具备者即dbo用户。
*/

–============ 删除’数据库用户’ ============

— 方式一:SQL语句
DROP USER xugang;

— 方式贰:存款和储蓄进度
exec sp_revokedbaccess ‘xugang’;          –SQL用户
exec sp_revokedbaccess ‘NEWER-XG\xugang’; –Windows用户
–后续版本的 Microsoft SQL Server 将去除该意义。

/*================================================
瞩目:创立用户后,一定要赋予该用户相应的权力!
================================================*/

–============ 向’数据库用户’授权 ============

–注意:该权限一般由sa用户授予。
–常用的权能:insert、delete、update、select。
grant insert,delete,update,select on 表名 to 数据库用户;

–示例:  
use myDBName
grant insert,select on stuInfo to xg; –‘xg’为用户名
–grant all on stuInfo to xg;

–授予用户建表的权限
grant create table to xg;

–============ 移除’数据库用户’的权柄 ============

–移除’数据库用户’的权位 (设置为null)
revoke insert on stuInfo from xg;
–revoke all on stuInfo from xg;

–移除’数据库用户’的权力 (设置为“×”打叉)
deny insert on stuInfo to xg;
–deny all on stuInfo to xg;

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website