1.2 Transact-SQL語(yǔ)句的類(lèi)型
查詢(xún)就是獲取存儲在SQL Server中的數據。所有的查詢(xún)都使用SELECT語(yǔ)句為用戶(hù)提供一個(gè)結果集。一個(gè)結果集是運行SELECT語(yǔ)句后所得到的一個(gè)表數據集,包含行和列。 編寫(xiě)和運行Transact-SQL語(yǔ)句是向SQL Server發(fā)出查詢(xún)申請的一種方法。在編寫(xiě)這些語(yǔ)句時(shí),你將會(huì )用到下列類(lèi)型的Transact-SQL語(yǔ)句: 數據定義語(yǔ)句(DDL),允許你在數據庫中創(chuàng )建對象; 數據控制語(yǔ)句(DCL),允許你決定誰(shuí)能查看或更改數據; 數據操作語(yǔ)句(DML),允許你查詢(xún)或更改數據。
本課程主要講述的是數據操作語(yǔ)言(DML)的語(yǔ)句。
1.2.1 數據定義語(yǔ)言(DDL)
數據定義語(yǔ)句(DDL)通過(guò)創(chuàng )建數據庫、表和用戶(hù)自定義數據類(lèi)型來(lái)定義一個(gè)數據庫。你也可以使用DDL語(yǔ)句管理數據庫對象。DDL語(yǔ)句包括CREATE 、ALTER和 DROP 。 默認情況下,只有sysadmin、dbcreator、db_owner或db_ddladmin預定義角色(role)的成員才能執行DDL語(yǔ)句。一般不推薦其他角色的用戶(hù)使用DDL語(yǔ)句。如果不同的用戶(hù)在數據庫中創(chuàng )建了他們自己的對象,那么每個(gè)對象的所有者都需要給予其他用戶(hù)使用這些對象的權限。這將給管理工作帶來(lái)沉重的負擔,所以應當盡量避免發(fā)生這種情況。通過(guò)限制用戶(hù)使用語(yǔ)句的權限,還能夠避免對象所有權帶來(lái)的問(wèn)題。當對象所有者被從數據庫刪除,或者一個(gè)存儲過(guò)程、視圖的所有者并不擁有內部數據表的使用權的時(shí)候將導致這種問(wèn)題。
下面的腳本在數據庫Northwind中創(chuàng )建一個(gè)叫customer的表。表中包含cust_id, company、contact和phone字段。
USE northwind
CTRATE TABLE customer
(cust_id int, company varchar(40), contact varchar(30), phone char(12))
GO
1.2.2 數據控制語(yǔ)言(DCL)語(yǔ)句
數據控制語(yǔ)句(DCL)用于改變與某個(gè)數據庫用戶(hù)或角色的相關(guān)權限。
語(yǔ)句
描述
GRANT
允許用戶(hù)能夠訪(fǎng)問(wèn)數據或運行某些Transact-SQL語(yǔ)句。
DENY
禁止某個(gè)安全賬號的訪(fǎng)問(wèn)并阻止某個(gè)用戶(hù)、用戶(hù)組或角色從它的組和角色成員中繼承原有的權限。
REVOKE
刪除一個(gè)原來(lái)設置的允許或拒絕的權限。
默認情況下,只有屬于sysadmin、dbcreator、db_owner或db_secudtyadmin角色的成員才能運行這些語(yǔ)句。
下面的例子賦予public角色的成員查詢(xún)表products的權限。
USE nothwind
GRANT SELECT ON products TO public
GO
1.2.3 數據操作語(yǔ)句(DML)
數據操作語(yǔ)句(DML)對數據庫中的數據進(jìn)行操作。通過(guò)使用這些語(yǔ)句,你可以更改或獲取數據庫信息。DML語(yǔ)句包括SELECT、 INSERT、 UPDATE 和DELETE。
默認情況下,只有屬于sysadmin,dbcreator,db_owner或db_datawriter角色的成員能夠運行這些語(yǔ)句。
下面的例子從數據庫Northwind中查詢(xún)category ID,product name,product ID和unitprice的值。
USE northwind
SELECT category ID, product name, product ID, unitprice FROM products
GO