1. SQL:Structured Query Language, 是RDBMS(Relational Database Management Systems)的查询和管理数据的标准语言。sql
2. 理解集合理论和谓词逻辑,RDBMS基于这两个数学分支。数据库
3. SQL语句类别:服务器
Data Definition Language, DDL:数据定义语言,处理对象的定义,包括诸如create、alter和drop等语句。数据结构
Data Manipulation Language,DML:数据操做语言,用于查询和修改数据,包括诸如select、insert、update、delete、truncate和merge等语句。ide
Data Control Language,DCL:数据控制语言,用于定义权限,包括诸如grant和revoke等语句。函数
4. 关系模型须要理解命题、谓词、关系、元组和属性等概念。spa
范式: 1NF:关系(表)中的元组(行)必须是惟一的,而且属性石原子化的。代理
2NF:需知足1NF,每一个非键属性必须是对整个候选键的彻底函数依赖。版本控制
3NF:需知足2NF,全部的非键属性必须依赖于非传递的候选键(全部非键属性必须相互独立)。code
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 );
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);
外键约束:用于强制引用完整性。删除或更新被引用表中的行时,须要级联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) );
ALTER TABLE dbo.Orders ADD CONSTRAINT FK_Orders_Employees FOREIGN KEY(empid) REFERENCES dbo.Employees(empid);
Check约束:以下的约束,若尝试更新或是插入salary的行时,会操做失败。
ALTER TABLE dbo.Employees ADD CONSTRAINT CHK_Employees_salary CHECK(salary >0.00);
默认约束:若是插入一个行的时,没有为行指定一个显式值,将使用默认值。
ALTER TABLE dbo.Orders ADD CONSTRAINT DFT_Orders_orderts DEFAULT(SYSDATETIME()) FOR orderts;