2019-10-24

                                             创建表

一、使用标识符和全球唯一标识符

在表设计时,通常需要考虑使用唯一标识符来作为主键,或是用来确保被添加的数据不会与现存数据存在冲突,对于主键唯一标识符,可以包含客户账号或者社会保障号,但是,如果某个唯一标识符不可用,你可能希望能够使用‘表示’属性为表中的每行生成一个唯一序列号。

例如,下面创建oeders表包含一个标识符列orderid,种子值为1,增量值为1。当向表中插入数据时,orderid列的数据会自动插入并递增。同时,为表创建了一个基于orderid列的primary key约束。

复制代码

primary Key 约束

create Table orders  (

        orderid int identity(1,1) primary key,

        orderdate datetime ,

        sendto varchar(20)

)

Create Table customers

    (

        firstName  varchar(20) Not Null,

        lastNname  varchar (30) Not Null,

        phone char(12)default ‘未输入’

)

二、约束的类型:

主键约束: 要求主键列不能为空,要求主键列唯一

非空约束: 要求该列不能存在空值

唯一约束: 要求该列的值必须唯一的,允许为空,但只能出一个空值

检查约束: 限制某列取值的范围是否合适

默认约束: 设计某列的默认值

外键约束: 用于在两表之间建立关系,需要指定引用主表是哪一列

--添加主键约束

Alter Table stuInfo 

Add Constraint  PK_stuNO primary Key(stuNo) 

---添加唯一约束 

Alter Table stuInfo 

Add Constraint UQ_stuID unique(stuID) 

---添加默认约束 

Alter Table stuInfo 

Add Constraint DF_stuAddress default('地址不详') for stuAddress 

---添加检查约束 

Alter Table stuInfo 

Add Constraint CK_stuAge check(stuAge between 15 and 40) 

---添加外键约束 


Alter Table stuMarks 

Add Constraint FK_stuNo foreign key(stuNo) references stuInfo(stuNo)

use stuDB

go  ifexists(select*fromSysobjectswherename ='stuInfo') 

drop table stuInfo 

go 

create table stuInfo 

    stuName varchar(20) notnull primary key(stuName)   

,stuID intnotnull unique(stuID) 

,stuAddress varchar(20) notnulldefault('地址不详') 

,stuAge intnotnullcheck(stuAge between15 and 40)

)


用ALTER  TABLE Employee  WITH NOCHECK可以解决。

WITH NOCHECK表示:

对表中现有的数据不做检查,只对添加约束之后在录入的数据进行检查


修改表中的列

更改列的名称应当使用系统的存储过程 sp_rename,而不是Alter table 语句。sp_rename用于修改当前数据库中用户所创建对象的名称,包括表、索引、列、别名数据类型或Microsoft.NetFramewoek 公共语言运行(CIR) 时用户定义数据类型。

sp_rename的语法格式如下:

sp_rename [@objname=] ‘object_Name’ ,[@newName] ‘New_Name’ [. [@objtype =] ‘objtype’]

  ○  [@objname=] ‘objname’ 用户对象或数据类型的当前限定或非限定名称。如果要重命名的对象是表中的列,则object_name 的格式必须是table.column。

  ○  [@NewName=] ‘NewName’ 指定对象的新名称。

  ○  [@objtype] ‘object_type’ 要重命名的对象的类型,可用值如表所示。

如下面的语句将customers表的email列重命名emailNew

exec sp_rename ‘Customers.Email’,’EmailNew’,’column’

三、重新设置identity的值

dbcc checkident(表名,reseed,n); 

n+1表示的是表中identity字段的初始值(n的值可以为0)

也就是说:如果插入的是id为2的记录,则n的值是1

四、使用系统存储过程改变数据库所有者为当前登录SA账号

EXEC sp_changedbowner sa 

五、声明表变量

Declare @t Table (id int Primary Key,name varchar(20))

Insert Into @t values(1,'zhang')

Insert Into @t Values(2,'liu')

Select * from @t

六、声明变量

DECLARE @test VARCHAR 作用于一个批处理

注:GO就是用于一个sql语句的结束 比如说一个批处理语句是这样的 select *from b go select *from a 在后一个select后面加上一个GO这样可以一次执行两条sql 语句

你可能感兴趣的:(2019-10-24)