首页 > 代码库 > SQL Server 2012 T-SQL基础教程--T-SQL查询和编程的背景
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);
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;
SQL Server 2012 T-SQL基础教程--T-SQL查询和编程的背景