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;
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;