笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-01 T-SQL查询和编程基础

理论

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);
原文地址:https://www.cnblogs.com/laixiancai/p/4589994.html