第一章 SQL語(yǔ)句簡(jiǎn)介
內(nèi)容摘要 Transact-SQL編程語(yǔ)言; Transact-SQL的語(yǔ)句類(lèi)型; Transact-SQL的語(yǔ)法元素;
SQL Query Analyzer的基本功能;
如何使用SQL Query Analyzer中的對(duì)象瀏覽工具;
如何使用SQL Query Analyzer中的模板;
如何使用osql命令行工具;
使用不同的方法執(zhí)行Transact-SQL語(yǔ)句;
使用SELECT語(yǔ)句從表中查詢(xún)數(shù)據(jù);
通過(guò)在WHERE子句中指定不同的搜索條件過(guò)濾數(shù)據(jù);
格式化結(jié)果集;
查詢(xún)是如何進(jìn)行的;
進(jìn)行數(shù)據(jù)查詢(xún)時(shí),影響性能的幾個(gè)注意事項(xiàng)。
考點(diǎn)提示:
osql命令行用法;
消除重復(fù)的行;
改變字段的名字。
1.1 什么是Transact-SQL編程語(yǔ)言
Transact-SQL 語(yǔ)言是在微軟的SQL Server中使用的編程語(yǔ)言,它是一個(gè)數(shù)據(jù)定義、操作和控制語(yǔ)言。
美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)(ANSI)和國(guó)際標(biāo)準(zhǔn)組織(ISO)制訂了SQL語(yǔ)言的標(biāo)準(zhǔn)。SQL-92是由ANSI和ISO在1992年發(fā)布的SQL標(biāo)準(zhǔn),通過(guò)使用Transact-SQL,微軟SQLServer2000支持SQL-92入口級(jí)別的實(shí)現(xiàn)。同ANSI-SQL兼容的Transact-SQL語(yǔ)句,能夠在與ANSI-SQL兼容的任何入口級(jí)產(chǎn)品中運(yùn)行。Transact-SQL同時(shí)還包含幾種擴(kuò)展用以增強(qiáng)其性能。
1.2 Transact-SQL語(yǔ)句的類(lèi)型
查詢(xún)就是獲取存儲(chǔ)在SQL Server中的數(shù)據(jù)。所有的查詢(xún)都使用SELECT語(yǔ)句為用戶(hù)提供一個(gè)結(jié)果集。一個(gè)結(jié)果集是運(yùn)行SELECT語(yǔ)句后所得到的一個(gè)表數(shù)據(jù)集,包含行和列。 編寫(xiě)和運(yùn)行Transact-SQL語(yǔ)句是向SQL Server發(fā)出查詢(xún)申請(qǐng)的一種方法。在編寫(xiě)這些語(yǔ)句時(shí),你將會(huì)用到下列類(lèi)型的Transact-SQL語(yǔ)句: 數(shù)據(jù)定義語(yǔ)句(DDL),允許你在數(shù)據(jù)庫(kù)中創(chuàng)建對(duì)象; 數(shù)據(jù)控制語(yǔ)句(DCL),允許你決定誰(shuí)能查看或更改數(shù)據(jù); 數(shù)據(jù)操作語(yǔ)句(DML),允許你查詢(xún)或更改數(shù)據(jù)。
本課程主要講述的是數(shù)據(jù)操作語(yǔ)言(DML)的語(yǔ)句。 1.2.1 數(shù)據(jù)定義語(yǔ)言(DDL)
數(shù)據(jù)定義語(yǔ)句(DDL)通過(guò)創(chuàng)建數(shù)據(jù)庫(kù)、表和用戶(hù)自定義數(shù)據(jù)類(lèi)型來(lái)定義一個(gè)數(shù)據(jù)庫(kù)。你也可以使用DDL語(yǔ)句管理數(shù)據(jù)庫(kù)對(duì)象。DDL語(yǔ)句包括CREATE 、ALTER和 DROP 。 默認(rèn)情況下,只有sysadmin、dbcreator、db_owner或db_ddladmin預(yù)定義角色(role)的成員才能執(zhí)行DDL語(yǔ)句。一般不推薦其他角色的用戶(hù)使用DDL語(yǔ)句。如果不同的用戶(hù)在數(shù)據(jù)庫(kù)中創(chuàng)建了他們自己的對(duì)象,那么每個(gè)對(duì)象的所有者都需要給予其他用戶(hù)使用這些對(duì)象的權(quán)限。這將給管理工作帶來(lái)沉重的負(fù)擔(dān),所以應(yīng)當(dāng)盡量避免發(fā)生這種情況。通過(guò)限制用戶(hù)使用語(yǔ)句的權(quán)限,還能夠避免對(duì)象所有權(quán)帶來(lái)的問(wèn)題。當(dāng)對(duì)象所有者被從數(shù)據(jù)庫(kù)刪除,或者一個(gè)存儲(chǔ)過(guò)程、視圖的所有者并不擁有內(nèi)部數(shù)據(jù)表的使用權(quán)的時(shí)候?qū)?dǎo)致這種問(wèn)題。
下面的腳本在數(shù)據(jù)庫(kù)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