理论背景

1. SQL:Structured Query Language, 是RDBMS(Relational Database Management Systems)的查询和管理数据的标准语言。

2. 理解集合理论和谓词逻辑,RDBMS基于这两个数学分支。

3. SQL语句类别:

    Data Definition Language, DDL:数据定义语言,处理对象的定义,包括诸如create、alter和drop等语句。

    Data Manipulation Language,DML:数据操作语言,用于查询和修改数据,包括诸如select、insert、update、delete、truncate和merge等语句。

    Data Control Language,DCL:数据控制语言,用于定义权限,包括诸如grant和revoke等语句。

4. 关系模型需要理解命题、谓词、关系、元组和属性等概念。

    范式: 1NF:关系(表)中的元组(行)必须是唯一的,并且属性石原子化的。

              2NF:需满足1NF,每个非键属性必须是对整个候选键的完全函数依赖。

              3NF:需满足2NF,所有的非键属性必须依赖于非传递的候选键(所有非键属性必须相互独立)。

5. SQL Server体系结构

   A:应用Application,并行数据仓库(Parallel Data Warehouse, PDW)等

   B:盒子Box,企业内部部署的SQL Server

   C:云Cloud,私有云和公共云。Windows Azure SQL Database公共云

6. SQL Server实例

    一个已经安装的SQL Server数据库引擎或服务。

7. 数据库

   用户数据库和系统数据库: 一个对象容器,如表、视图、存储过程和其他对象。

   系统数据库:master: 存储实例范围的元数据信息、服务器配置、实例中的所有数据库信息和初始化信息。

                    resource:一个隐藏、只读数据库,存数所有系统对象的定义。

                    model:用作创建新数据库的模板,创建的每个新数据库是由model的副本初始化创建的。希望某些对象(如数据结构)出现在新的数据库中,则需要在model数据库中创建这些对象或是配置(只影响之后新穿件的数据库)。

                   tempdb:sql server存储临时数据的地方,如工作表、排序空间、行版本控制信息等。

                   msdb:一个称为“SQL Server代理”的服务存储数据的地方,sql server代理负责自动操作,包括作业、计划和警报。还存储database mail、service broker、备份等等

8.  创建表   

    OBJECT_ID函数用来检查Employees表是有已经存在,接受一个对象名称和类型作为输入,U代表用户表。

USE TSQL2012;

IF OBJECT_ID(\'dbo.Employees\',\'U\') IS NOT NULL
    DROP TABLE dbo.Employees;

CREATE TABLE dbo.Employess
(
   empid             INT                     NOT NULL,
   firstname       VARCHAR(30)      NOT NULL,
   lastname        VARCHAR(30)      NOT NULL,
   hiredate          DATE                   NOT NULL,
   mgrid              INT                      NOT NULL,
   ssn                  VARCHAR(20)      NOT NULL,
   salary              MONEY                NOT NULL
);

Create Table

9. 定义数据完整性

    主键约束:强制行的唯一性,每个表只能有一个主键,且主键是不允许为NULL。

ALTER TABLE dbo.Employees
     ADD CONSTRANT PK_Employees
     PRIMARY KEY(empid);

创建主键约束

    唯一约束:强制行的唯一性,允许在自己的数据库中实现关系模型的备用键概念。同一个表内允许多个唯一约束,对字段是否允许为空无要求,但是sql server拒绝重复null标记。

ALTER TABLE dbo.Employees
   ADD CONSTRAINT UNQ_Employees_ssn
   UNIQUE(ssn);

Create Unique

    外键约束:用于强制引用完整性。删除或更新被引用表中的行时,需要级联cascade引用表,否则会操作失败。

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,
  qty         INT         NOT NULL,
  CONSTRAINT PK_Orders
     PRIMARY KEY(orderid)
);

Create Orders Table

ALTER TABLE dbo.Orders
   ADD  CONSTRAINT FK_Orders_Employees
   FOREIGN KEY(empid)
   REFERENCES dbo.Employees(empid);

Create References

     Check约束:如下的约束,若尝试更新或是插入salary的行时,会操作失败。

ALTER TABLE dbo.Employees
    ADD CONSTRAINT CHK_Employees_salary
    CHECK(salary >0.00);

Create Check

     默认约束:如果插入一个行的时,没有为行指定一个显式值,将使用默认值。

 ALTER TABLE dbo.Orders
     ADD CONSTRAINT DFT_Orders_orderts
     DEFAULT(SYSDATETIME()) FOR orderts;

Create Default Check

 

版权声明:本文为aaronday原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/aaronday/p/4054489.html