SQL Server 2012 T-SQL基础教程--T-SQL查询和编程的背景
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