SQL Server 2012 T-SQL基礎教程--T-SQL查詢和編程的背景

理論背景

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
);
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
相關文章
相關標籤/搜索