鍍金池/ 教程/ 數(shù)據(jù)庫/ SQL Server SQL腳本
SQL Server存儲過程
SQL Server教程
SQL Server查詢設(shè)計器
SQL Server添加數(shù)據(jù)
SQL Server鏈接服務(wù)器
SQL Server創(chuàng)建表
SQL Server數(shù)據(jù)庫模式
SQL Server安裝
SQL Server創(chuàng)建數(shù)據(jù)庫
SQL Server 2014版
關(guān)于Microsoft SQL Server
SQL Server服務(wù)器角色
SQL Server視圖
SQL Server SQL腳本
Windows2012 R2上安裝.NET3.5框架
SQL Server管理套件(SSMS)

SQL Server SQL腳本

在前面的課程,我們使用“編輯前200行”選項添加數(shù)據(jù)到我們的數(shù)據(jù)庫表。在這一課中,我們將著眼于如何編寫SQL腳本來更新并運行對數(shù)據(jù)庫進行查詢。

SQL腳本可用于插入數(shù)據(jù),讀取數(shù)據(jù),更新數(shù)據(jù),和刪除數(shù)據(jù)。它們也可以用于創(chuàng)建數(shù)據(jù)庫對象,如表,視圖,存儲過程,他們甚至可以用于創(chuàng)建整個數(shù)據(jù)庫本身 - 完整的表,數(shù)據(jù),用戶,等等。

Transact-SQL

SQL Server支持的、Transact-SQL作為腳本語言。 Transact-SQL是基于SQL(結(jié)構(gòu)化查詢語言),它是用于應(yīng)用程序和它們的數(shù)據(jù)庫之間的接口的編程語言。Transact-SQL是一個相對容易的語言學(xué)習(xí),我強烈建議熟悉它。在這里每當(dāng)指SQL腳本,意思就是一個Transact-SQL腳本。

SQL語句

SQL腳本通常由一個或多個“語句”。每個語句告訴SQL Server該怎么做。

SQL腳本可以包含許多語句。例如,SQL腳本可以包含一個語句創(chuàng)建一個表,另一份聲明將數(shù)據(jù)插入到該表,而另一份語句中,以選擇所有剛剛插入到表中的數(shù)據(jù)。事實上,SQL有一個用于那些確切的三項具體語句:CREATE語句,INSERT語句和SELECT語句。

一般來說,語句開始使用想要執(zhí)行的任務(wù)的指令。如果你想創(chuàng)建一個數(shù)據(jù)庫對象時,聲明開始后創(chuàng)建。我說:“一般來說”,因為,還有一些其他的點點滴滴,你可以在拋出一個SQL語句可能會及所希望的語句。

SQL語句示例

也許最簡單的SQL語句是學(xué)習(xí)SELECT語句。下面是在其最簡單的SELECT語句的一個例子:

?
SELECT * FROM Tasks

上面的語句從任務(wù)表中的選擇所有列。星號(*)的意思是“所有列”。上面的語句可以略作修改,只返回一個特定的列,我們可以添加一個WHERE子句來過濾數(shù)據(jù),只有那些我們感興趣的記錄:

?
SELECT TaskName FROM Tasks
WHERE StatusId = "3"

上述語句選擇從任務(wù)表中的TaskName列,但它只返回那些具有StatusId為3的記錄。值為3可能是“To Do”或“Done”,或不管它是什么,我們只希望它表示具體的意思。在我們的TaskTracker數(shù)據(jù)庫中,我們將創(chuàng)建一個新的表稱為Status,我們將指定“3”是指什么(“1”和“2”又表示什么)。這些數(shù)字只是在StatusId字段中(我們指定為標(biāo)識列 - 一個自動編號)的值。每個這些數(shù)字將在StatusName字段相應(yīng)值將告訴我們實際上是什么狀態(tài)。

然后,一旦我們已經(jīng)創(chuàng)建了狀態(tài)表中,我們可以修改上面的SQL語句,以包括狀態(tài)表,以便我們可以編寫為WHERE StatusName=“To Do”,而不是試圖記住“To Do”數(shù)字是什么。

但是,我們需要首先創(chuàng)建我們的Status表... 

使用SQL腳本創(chuàng)建表

下面是一個SQL腳本,將在我們的數(shù)據(jù)庫中另一個表- 一個名為Status表。如果不熟悉SQL它可能看起來有點怪異。 當(dāng)看到列及其相應(yīng)的數(shù)據(jù)類型的名稱是什么,那么也就對它有一些了解。在此腳本中,我們并不容許任何NULL字段(因此NOT NULL毗鄰每一列)。我們也創(chuàng)建了主鍵StatusId字段,我們設(shè)定的默認(rèn)值的dateCreated字段,使用(getdate())。

要運行此腳本,請執(zhí)行以下操作:

  1. 腳本復(fù)制到剪貼板
  2. 在SQL Server管理套件,單擊工具欄上的新建查詢按鈕:
  3. 腳本粘貼到查詢窗口
  4. 點擊!執(zhí)行該工具欄上的按鈕:

一旦腳本運行,你應(yīng)該看到一條消息,讀取命令已成功完成。

Screenshot of the New Query button

這里是腳本:

?
CREATE TABLE Status(
	StatusId int IDENTITY(1,1) NOT NULL,
	StatusName varchar(50) NOT NULL,
	DateCreated datetime NOT NULL CONSTRAINT DF_Status_DateCreated  DEFAULT (getdate()),
	CONSTRAINT PK_Status PRIMARY KEY CLUSTERED (StatusId)
)

鍵盤快捷鍵

注:也可以通過按F5鍵盤上運行一個查詢。

另外,你甚至可以通過選擇要運行的部分,然后按F5運行查詢的一部分。這非常上包含大量的SQL語句的較大的腳本,但是,當(dāng)由于某種原因,只要運行的一個或兩個(或甚至運行所有這些,但只是一次一個)。

通過SQL腳本添加數(shù)據(jù)

也可以通過SQL腳本添加數(shù)據(jù)。該腳本將使用INSERT語句將數(shù)據(jù)插入到指定的表。 你可以使用腳本插入數(shù)據(jù)到所有列在表中,或者只是那些指定的表。

下面的腳本將數(shù)據(jù)插入狀態(tài)表,然后選擇該數(shù)據(jù)(所以我們可以看到,它進入了)。運行此腳本,你做了上述腳本)以同樣的方式:

?
INSERT INTO Status (StatusName) VALUES ('To Do');
INSERT INTO Status (StatusName) VALUES ('In Progress');
INSERT INTO Status (StatusName) VALUES ('Done');

SELECT * FROM Status

這里是這個樣子的:

Screenshot SQL query results

正如你所看到的,查詢的結(jié)果顯示在底部窗格中。

交叉參考數(shù)據(jù)

現(xiàn)在,我們已經(jīng)得到了Status表,讓我們一值添加到任務(wù)表的StatusId字段中(還記得我們保留那個字段為空的所有記錄,因為我們還沒有Status表)。

所以我們增加值要任務(wù)表鏈接到Status表。 在任務(wù)表中的每個記錄現(xiàn)在將有一個StatusId,它的值可能是1,2或3(在狀態(tài)表的StatusId字段中匹配的值)。

要做到這一點,我們需要使用UPDATE語句(因為我們正在更新記錄,而不是插入新的)。

因此,事不宜遲,讓我們運行下面的腳本:

?
UPDATE Tasks
SET StatusId='1'
WHERE TaskId='1';

UPDATE Tasks
SET StatusId='1'
WHERE TaskId='2';

UPDATE Tasks
SET StatusId='2'
WHERE TaskId='3';

UPDATE Tasks
SET StatusId='3'
WHERE TaskId='4';

UPDATE Tasks
SET StatusId='3'
WHERE TaskId='5';

UPDATE Tasks
SET StatusId='2'
WHERE TaskId='6';

UPDATE Tasks
SET StatusId='1'
WHERE TaskId='7';

SELECT * FROM Tasks

現(xiàn)在應(yīng)該看到其StatusId字段中填寫的所有記錄您的任務(wù)表,完整。應(yīng)該是這樣的:

Screenshot SQL query results

合并腳本

事實上,我們可能只是很容易地結(jié)合上述所有腳本并運行它們?yōu)橐惑w。我只保留了它們,才能分離出來,使其更易于了解哪些部分做什么。

如果您想了解更多關(guān)于創(chuàng)建SQL語句,請看看SQL教程

區(qū)分大小寫

SQL不區(qū)分大小寫。所以下面的語句都是執(zhí)行同樣的事情:

  • SELECT * FROM TASKS
  • SELECT * FROM Tasks
  • Select * From Tasks
  • select * from tasks

數(shù)據(jù)庫管理

大多數(shù)的數(shù)據(jù)庫管理任務(wù)(如創(chuàng)建用戶,備份等),可以在SSMS通過圖形用戶界面進行編程,可以通過SQL腳本來執(zhí)行。本教程集中使用的圖形用戶界面,主要是因為它通常是一個更容易為新用戶得到一個簡單的入門。 當(dāng)你更熟悉SQL Server,就可以使用SQL腳本來執(zhí)行許多任務(wù),也可通過圖形用戶界面做自己的事情。

接下來,我們看一下查詢設(shè)計。