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