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;