SQL Server SQL腳本

2018-08-16 18:15 更新

本節(jié)的主要內(nèi)容是要教大家怎么通過編寫 SQL 腳本來查詢、更新并且運(yùn)行數(shù)據(jù)庫。

利用 SQL 腳本我們能做很多事情,比如插入數(shù)據(jù)、讀取數(shù)據(jù)、更新數(shù)據(jù)以及刪除數(shù)據(jù)等;它們也可以用于創(chuàng)建數(shù)據(jù)庫對象,如表,視圖,存儲(chǔ)過程,他們甚至可以用于創(chuàng)建整個(gè)數(shù)據(jù)庫、數(shù)據(jù)、用戶等。

什么是 Transact-SQL

SQL Server 支持 Transact-SQL 作為腳本語言。

Transact-SQL 是基于 SQL(結(jié)構(gòu)化查詢語言),它是用于應(yīng)用程序和它們的數(shù)據(jù)庫之間的接口的編程語言。

Transact-SQL 是一個(gè)相對容易的語言學(xué)習(xí),這里提到的 SQL 腳本,意思就是一個(gè) Transact-SQL 腳本。

SQL 語句

SQL 腳本通常由一個(gè)或多個(gè)“語句”得來的,每個(gè)語句告訴 SQL Server 該怎么做。

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

SQL語句示例

最簡單的 SQL 語句就是 SELECT 語句。

下述是一個(gè)SELECT語句最簡單的例子:

SELECT * FROM Tasks

上述語句表示從任務(wù)表中選擇所有列,其中(*)表示 “所有列”。

稍微修改上述語句就可以只返回一個(gè)特定的列。

我們添加一個(gè) WHERE 子句來過濾數(shù)據(jù),只選擇我們想要的數(shù)據(jù):

SELECT TaskName FROM Tasks
WHERE StatusId = "3"

上述語句從任務(wù)表 TaskName 中選擇特定列,只返回那些具有 StatusId 為3的記錄,值為3 的記錄表示了具體的意思。在我們的 TaskTracker 數(shù)據(jù)庫中,我們將創(chuàng)建一個(gè)新的表稱為Status,我們將指定“3”是指什么。這些數(shù)字只是在 StatusId 字段中(我們指定為標(biāo)識列 - 一個(gè)自動(dòng)編號)的值。這些數(shù)字在 StatusName 字段每個(gè)相應(yīng)值將告訴我們實(shí)際上是什么狀態(tài)。

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

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

下面使用SQL腳本在我們的數(shù)據(jù)庫中新建一個(gè)名為 Status 的表。

在此腳本中,我們并不容許任何 NULL 字段(因此 NOT NULL 毗鄰每一列)。

我們也將創(chuàng)建主鍵 StatusId 字段,我們設(shè)定的默認(rèn)值的 dateCreated 字段,使用(getdate())。

請執(zhí)行以下操作:

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

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

下面提供的是腳本:

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 鍵來運(yùn)行一個(gè)查詢。

另外,你甚至可以通過選擇要運(yùn)行的部分,然后按 F5 運(yùn)行查詢的一部分。

這包含大量的 SQL 語句的較大的腳本,但是,當(dāng)由于某種原因,只要運(yùn)行的一個(gè)或兩個(gè)(或甚至運(yùn)行所有這些,但只是一次一個(gè))。

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

通過 SQL 腳本添加數(shù)據(jù)將使用 INSERT 語句將數(shù)據(jù)插入到指定的表。 

你可以使用腳本插入數(shù)據(jù)到所有列在表中,或者只是那些指定的表。

使用下面的腳本將數(shù)據(jù)插入 Status 表,然后選擇該數(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

這里是這個(gè)樣子的:

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

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

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

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

現(xiàn)在,我們需要使用 UPDATE 語句(因?yàn)槲覀冋诟掠涗洠皇遣迦胄碌模?/p>

運(yùn)行下面的腳本:

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ù)表:

合并腳本

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

更多關(guān)于 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 通過圖形用戶界面進(jìn)行編程,可以通過 SQL 腳本來執(zhí)行。

本教程集中使用的圖形用戶界面,主要是因?yàn)樗ǔJ且粋€(gè)更容易為新用戶得到一個(gè)簡單的入門。 當(dāng)你更熟悉 SQL Server,就可以使用 SQL 腳本來執(zhí)行許多任務(wù),也可通過圖形用戶界面做自己的事情。

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


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號