--创建表
USE BHGS;--确保SQL SERVER是在指定数据库中创建对象
GO
IF OBJECT_ID('DBO.Employee','u') is NULL
DROP TABLE dbo.employee;
CREATE TABLE dbo.employee
(
empid int not null,
firstname varchar(30) not null,
lastname varchar(30) not null,
hiredate DATE not null,
mgrid int null,
ssn varchar(20) not null,
salary money not null
);
--定义数据完整性
--主键约束:强制行的唯一性,在约束属性中也不允许使用NULL标记。约束属性值的每组唯一值仅能在表中出现一次,且设置语句要在一行中。
ALTER TABLE dbo.employee
ADD CONSTRAINT PK_EMPLOYEE
PRIMARY KEY(EMPID)
--唯一约束:强制行的唯一性,允许你在自己的数据库中实现关系模型的备用键概念。与主键不同,可以在同一个表内定义多个唯一约束。
ALTER TABLE dbo.employee
ADD CONSTRAINT UNQ_Employee_ssn
UNIQUE(SSN);
--外键约束:强制引用完整性。此约束定义了引用表中的一个或多个属性指向被引用表(父表)中候选键(主键或唯一约束)
IF OBJECT_ID('DBO.Orders','u')is not NULL
drop table dbo.Orders;
CREATE TABLE dbo.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)
);
--限制由Orders表中empid列支持的值要存在于Employ表的empid列中
ALTER TABLE dbo.ORDERS
ADD CONSTRAINT FK_Orders_Employee
FOREIGN key(empid)
REFERENCES dbo.employee(empid);
--限制employee表中mgrid列中的值存在于同一表的empid列中
ALTER TABLE dbo.employee
ADD CONSTRAINT FK_Employee_employee
FOREIGN KEY(mgrid)
REFERENCES dbo.employee(empid);
--CHECK约束:定义一个谓词,要进入到表中的行或是被修改的行必须满足此要求。
ALTER TABLE dbo.employee
ADD CONSTRAINT CHK_Employee_Salary
CHECK(Salary>0);
--默认约束:与特定属性相关联。如果在插入行时没有为属性指定一个显式值,将使用该默认值。
ALTER TABLE dbo.ORDERS
ADD CONSTRAINT DEF_ORDERS_Orderts
DEFAULT(SYSDATETIME()) FOR Orderts;
创建表&定义约束
最新推荐文章于 2023-03-29 20:40:26 发布