)
来源:博客园
1.1 理论背景SQL代表结构化查询语言(Structured Query Language),是一种在关系数据库系统(Relational Database Management Systems,RDBMS)中查询和管理数据的标准语言。RDBMS是基于关系模型的数据库管理系统,它基于两个数学分支:集合理论和谓词逻辑。
1.1.1 SQLSQL是一种基于关系模型的ANSI和ISO标准语言,用于查询和管理RDBMS中的数据。SQL语句包括数据定义语言Data Definition Language, DDL数据操作语言Data Manipulation Language, DML数据控制语言Data Control Language, DCL
1.1.2 集合理论集合,我们的意思是:任意集合体M使我们感知或想到的,能够确定的、互异对象m(称为M的元素)的整体。——Georg Cantor一个“集合”应将其视为单个实体。“互异”指集合中的每个元素必须是唯一的。“我们感知或想到的”意味着集合的定义是主观的。“对象”集合的定义不限于物理对象,更与抽血的对象相关。请注意,定义中没有提到集合元素间的任何顺序,集合元素的列出顺序并不重要。
(资料图片)
1.1.3 谓词逻辑谓词是一个属性或是一个表示“持有”或“不持有”的表达式,换句话说,也就是“真”或“假”。关系模型就是依靠谓词来维护数据的逻辑完整性并定义其结构的。谓词用于实施完整性的一个例子就是:在一个名为Employees的表中定义了约束,仅允许工资(Salary)大于0的雇员存储在表中。谓词是“工资大于0”(T-SQL表达式:salary>0)。通过筛选数据来界定子集等操作时,也可以使用谓词。
1.1.4 关系模型关系模型的目标是确保数据的一致性表示,最小化或是没有冗余且不牺牲完整性,并将定义数据的完整性作为模型的一部分。1.关系普通的想法是,“关系”术语源于表之间的关系,这是不正确的。“关系”实际上是数学术语的关系。在集合理论中,关系是集合的表现形式。在关系模型中,关系是相关的信息的集合,与SQL中相对应的就是表——尽管不能完全对应。2. 缺失值三值谓词逻辑是指来自谓词结果的3中可能逻辑值——“真”、“假”、“未知”3. 约束数据完整性通过在数据模型中定义的约束规则实现,并由RDBMS实施。4. 规范化关系模型还定义了规范化规则,也称范式。1NF,2NF,3NF(具体上网查阅定义)
1.1.5 数据生命周期1 联机事务处理OLTP系统的重点是数据输入,而不是数据报告。2 数据仓库DW是一个以检索数据和报告为目的设计的环境。3 商业智能语义模型BISM是微软支持完整BI堆栈应用的最新模型,目的是提供丰富、灵活、高效、可扩展的分析和报告功能。4 数据挖掘数据挖掘模型可以替代用户在数据海洋中查找有用的信息。
1.2 SQL Server体系结构1.2.1 SQL Server的ABC特色A是应用(Appliance)“应用”特色背后的理念是提供包括硬件、软件和服务在内的完整解决方案,应用是在客户端本地托管的。B是盒子(Box)“盒子”是企业内部部署的SQL Server,这是传统的部署方式。C是云(Cloud)微软支持两种SQL Server云特色:私有云和公共云。
1.2.2 SQL Server实例可以在同一台计算机上安装基于企业内部部署的SQL Server的多个实例。每个实例完全独立于其他实例。默认实例和命名实例
1.2.3 数据库系统数据库介绍如下:master:存储实例范围的元数据信息、服务器配置、实例中的所有数据库信息和初始化信息。resource:Resource数据库是一个隐藏、制度数据库,存储所有系统对象的定义。当查询数据库中的系统对象时,似乎位于当前数据库的sys架构中,但实际上他们的定义位于Resource数据库中。model:用作创建新数据库的模板,创建的每个新数据库是有model的副本初始化创建的。tempdb:是SQL Server存储临时数据的地方,如工作表、排序空间、行版本控制信息等。msdb:是一个成为“SQL Server代理”的服务存储数据的地方。还存储其他SQL Server功能的相关信息,如Database Mail,Service Broker、备份等等。
1.3.1 创建表
-- Create table EmployeesUSE TSQL2012;IF OBJECT_ID( "dbo.Employees" , "U" ) IS NOT NULL 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);
1.3.2 定义数据完整性
---------------------------------------------------------- Data Integrity---------------------------------------------------------- Primary keyALTER TABLE dbo.Employees ADD CONSTRAINT PK_Employees PRIMARY KEY (empid);-- UniqueALTER TABLE dbo.Employees ADD CONSTRAINT UNQ_Employees_ssn UNIQUE (ssn);-- Table used in foreign key exampleIF 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 DATETIME2 NOT NULL , qty INT NOT NULL , CONSTRAINT PK_Orders PRIMARY KEY (orderid));-- Foreign keysALTER 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 dbo.Employees(empid);-- CheckALTER TABLE dbo.Employees ADD CONSTRAINT CHK_Employees_salary CHECK (salary > 0.00);-- DefaultALTER TABLE dbo.Orders ADD CONSTRAINT DFT_Orders_orderts DEFAULT (SYSDATETIME()) FOR orderts;
附第一章配套代码:
----------------------------------------------------------------------- Microsoft SQL Server T-SQL Fundamentals-- Chapter 1 - Background to T-SQL Querying and Programming--2008 Itzik Ben-Gan -------------------------------------------------------------------------------------------------------------------------------------------- Creating Tables----------------------------------------------------------------------- Create a database called testdbIF DB_ID("testdb") IS NULL CREATE DATABASE testdb;GO-- Create table EmployeesUSE testdb;IF OBJECT_ID("dbo.Employees", "U") IS NOT NULL 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);----------------------------------------------------------------------- Data Integrity----------------------------------------------------------------------- Primary keyALTER TABLE dbo.Employees ADD CONSTRAINT PK_Employees PRIMARY KEY(empid); -- UniqueALTER TABLE dbo.Employees ADD CONSTRAINT UNQ_Employees_ssn UNIQUE(ssn);-- Foreign keyIF 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);-- CheckALTER TABLE dbo.Employees ADD CONSTRAINT CHK_Employees_salary CHECK(salary > 0);-- DefaultALTER TABLE dbo.Orders ADD CONSTRAINT DFT_Orders_orderts DEFAULT(CURRENT_TIMESTAMP) FOR orderts; 标签: