创建表和定义数据完整性

来源:互联网 发布:淘宝刷流量有用么 编辑:程序博客网 时间:2024/04/30 04:27
create database TSQL2012;


use TSQL2012;


--查询所有数据库名   sysDatabases主数据库服务器中的数据库
select name from sysDatabases order by name;


--查询数据库当前数据库下所有表名    sysobjects系统表,在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行
select name from sysobjects where xtype='U' order by name;


--创建表Employees
CREATE TABLE Employees
(
empid INT NOT NULL,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
hireday DATE NOT NULL,
mgrid INT NULL,
ssn VARCHAR(20) NOT NULL,
salary MONEY NOT NULL
);


--主键约束 不允许有null
alter table Employees
add constraint PK_Employees --建立名字为PK_Employees的约束
primary key(empid);


--删除主键约束


declare @csname   varchar(100)   
set @csname='' 
select @csname=name
FROM sysobjects
WHERE xtype='PK' AND parent_obj=object_id('Employees') --获取主键约束名字
exec('alter   table   Employees  drop   constraint ' + @csname); --删除约束
    
--唯一约束 sqlserver只允许有一个NULL标记
ALTER TABLE Employees
ADD CONSTRAINT  UNQ_Employees_ssn
UNIQUE(ssn);


--创建Orders表
CREATE TABLE Orders
(
orderid INT NOT NULL,
empid INT NOT NULL,
custid VARCHAR(10) NOT NULL,
orderts DATETIME2 NOT NULL,
qty INT NOT NULL,
CONSTRAINT PK_Orders PRIMARY KEY(orderid)
);


--外键约束 不同表
ALTER TABLE Orders
ADD CONSTRAINT FK_Orders_Employees
FOREIGN KEY(empid)
REFERENCES Employees(empid);


--外键约束 同一个表
ALTER TABLE Employees
ADD CONSTRAINT FK_Employees_Employees
FOREIGN KEY(mgrid)
REFERENCES Employees(empid);


--CHECT 约束 要插入的或修改的行必须满足此条件
ALTER TABLE Employees
ADD CONSTRAINT CHK_Employees_salary
CHECK(salary >0);


--默认约束 如果插入式没显示指定值则使用默认值
ALTER TABLE Orders
ADD CONSTRAINT DFT_Orders_orderts
DEFAULT(SYSDATETIME()) FOR orderts;









0 0
原创粉丝点击