理论
SQL有几种不同类型的语句,包括数据定义语言(DDL,Data Definition Language)、数据处理语言(DML,Data Manipulation Language),以及数据控制语言(DCL,Data Control Language)。DDL用于处理数据对象的定义,包括的语句有CREATE、ALTER,以及DROP。DML用于查询和修改数据,包括的语句有SELECT、INSERT、UPDATE、DELETE,以及MERGE。DCL用于处理权限管理,包括的语句有GRANT和REVOKE。
第一范式:第一范式要求表中的行必须是唯一的,属性是原子的。
第二范式:第二范式包括两条规则,首先数据必须满足第一范式,其次要求非键属性和候选键属性之间必须满足一定的条件。
第三范式:首先,数据必须满足第二范式,其次,所有非键属性必须非传递依赖于候选键。
代码
--创建数据库 IF DB_ID('testdb') IS NULL CREATE DATABASE testdb; GO --创建表 USE testdb; IF OBJECT_ID('dbo.Employees', 'U') IS NOT NULL --类型'U'代表用户表 DROP TABLE dbo.Employees; CREATE TABLE dbo.Employees ( 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 ); -- 主键约束Primary key ALTER TABLE dbo.Employees ADD CONSTRAINT PK_Employees PRIMARY KEY(empid); -- 唯一约束Unique ALTER TABLE dbo.Employees ADD CONSTRAINT UNQ_Employees_ssn UNIQUE(ssn); -- 外键约束Foreign key 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 DATETIME NOT NULL, qty INT NOT NULL, CONSTRAINT PK_Orders PRIMARY KEY(OrderID) ); ALTER TABLE dbo.Orders ADD CONSTRAINT FK_Orders_Employees FOREIGN KEY(empid) REFERENCES dbo.Employees(empid); ALTER TABLE dbo.Employees ADD CONSTRAINT FK_Employees_Employees FOREIGN KEY(mgrid) REFERENCES Employees(empid);