SQL數(shù)據(jù)語(yǔ)言的入門(mén)教程_第1頁(yè)
SQL數(shù)據(jù)語(yǔ)言的入門(mén)教程_第2頁(yè)
SQL數(shù)據(jù)語(yǔ)言的入門(mén)教程_第3頁(yè)
SQL數(shù)據(jù)語(yǔ)言的入門(mén)教程_第4頁(yè)
SQL數(shù)據(jù)語(yǔ)言的入門(mén)教程_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、SQL數(shù)據(jù)語(yǔ)言的快速入門(mén)【簡(jiǎn)介】SQL是英文Structured Query Language的縮寫(xiě),意思為結(jié)構(gòu)化查詢(xún)語(yǔ)言.SQL語(yǔ)言的主要功能就是同各種數(shù)據(jù)庫(kù)建立聯(lián)系,進(jìn)行溝通.根據(jù)ANSI 美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)的規(guī)定,SQL被作為關(guān)系型數(shù)據(jù)庫(kù)治理系統(tǒng)的標(biāo)準(zhǔn)語(yǔ)言.SQL語(yǔ)句可以用來(lái)執(zhí)行各種各樣的操作,例如更新數(shù)據(jù)庫(kù)中的數(shù)據(jù),從數(shù)據(jù)庫(kù)中提取數(shù)據(jù) 等.目前,絕大多數(shù)流行的關(guān)系型數(shù)據(jù)庫(kù)治理系統(tǒng),如Oracle, Sybase, Microsoft SQL Server, Access 等都采用了 SQL語(yǔ)言標(biāo)準(zhǔn).雖然很多數(shù)據(jù)庫(kù)都對(duì) SQL語(yǔ)句進(jìn)行了再開(kāi)發(fā)和擴(kuò)展,但是包括Select, Insert,

2、Update, Delete, Create,以及Drop在內(nèi)的標(biāo)準(zhǔn)的SQL命令仍然可以被用來(lái)完成幾乎所有的數(shù)據(jù)庫(kù)操作.下面,我 們就來(lái)詳細(xì)介紹一下 SQL語(yǔ)言的根本知識(shí).一個(gè)典型的關(guān)系型數(shù)據(jù)庫(kù)通常由一個(gè)或多個(gè)被稱(chēng)作表格的對(duì)象組成.數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)或信息都被保存 在這些數(shù)據(jù)庫(kù)表格中.數(shù)據(jù)庫(kù)中的每一個(gè)表格都具有自己唯一的表格名稱(chēng),都是由行和列組成,其中每一 列包括了該列名稱(chēng),數(shù)據(jù)類(lèi)型,以及列的其它屬性等信息,而行那么具體包含某一列的記錄或數(shù)據(jù).以下, 是一個(gè)名為天氣的數(shù)據(jù)庫(kù)表格的實(shí)例.QUOTE:城市最高氣溫最低氣溫北京10 5上海15 8天津8 2重慶20 13該表格中城市最高氣溫和最低氣溫

3、就是三個(gè)不同的列,而表格中的每一行那么包含了具體的表格數(shù)據(jù).數(shù)據(jù)查詢(xún)?cè)诒姸嗟腟QL命令中,select語(yǔ)句應(yīng)該算是使用最頻繁的.Select語(yǔ)句主要被用來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢(xún)并返回符合用戶(hù)查詢(xún)標(biāo)準(zhǔn)的結(jié)果數(shù)據(jù).Select語(yǔ)句的語(yǔ)法格式如下:QUOTE:select column1 , column2,etc from tablenamewhere condition;表示可選項(xiàng)select語(yǔ)句中位于select關(guān)鍵詞之后的列名用來(lái)決定那些列將作為查詢(xún)結(jié)果返回.用戶(hù)可以根據(jù)自己的需要選擇任意列,還可以使用通配符“* 設(shè)定返回表格中的所有列.select語(yǔ)句中位于from關(guān)鍵詞之后的表格名稱(chēng)用來(lái)決定將

4、要進(jìn)行查詢(xún)操作的目標(biāo)表格.Select語(yǔ)句中的where可選從句用來(lái)規(guī)定哪些數(shù)據(jù)值或哪些行將被作為查詢(xún)結(jié)果返回或顯示.在where條件從句中可以使用以下一些運(yùn)算符來(lái)設(shè)定查詢(xún)標(biāo)準(zhǔn):QUOTE:=等于大于小于 =大于等于v =小于等于O不等于除了上面所提到的運(yùn)算符外,LIKE運(yùn)算符在where條件從句中也非常重要.LIKE運(yùn)算符的功能非常 強(qiáng)大,通過(guò)使用口KE運(yùn)算符可以設(shè)定只選擇與用戶(hù)規(guī)定格式相同的記錄.此外,我們還可以使用通配符“用來(lái)代替任何字符串.舉例如下:QUOTE:select firstname, lastname, cityfrom employeewhere firstname LI

5、KE E%'(注意,字符串必須被包含在單括號(hào)內(nèi))上述SQL語(yǔ)句將會(huì)查詢(xún)所有名稱(chēng)以E開(kāi)頭的姓名.或者,通過(guò)如下語(yǔ)句:QUOTE:select * from employeewhere firstname = Ma;'查詢(xún)所有名稱(chēng)為May的行.SQL語(yǔ)言中的create table語(yǔ)句被用來(lái)建立新的數(shù)據(jù)庫(kù)表格.Create table語(yǔ)句的使用格式如下:QUOTE:create table tablename(column1 data type,column2 data type,column3 data type);如果用戶(hù)希望在建立新表格時(shí)規(guī)定列的限制條件,可以使用可選的條件選

6、項(xiàng):QUOTE:create table tablename(columnl data type constraint,column2 data type constraint,column3 data type constraint);舉例如下:QUOTE:create table employee(firstname varchar(15),lastname varchar(20),age number(3),address varchar(30),city varchar(20);簡(jiǎn)單來(lái)說(shuō),創(chuàng)立新表格時(shí),在關(guān)鍵詞create table后面參加所要建立的表格的名稱(chēng),然后在括號(hào)內(nèi)順次設(shè)定各

7、列的名稱(chēng),數(shù)據(jù)類(lèi)型,以及可選的限制條件等.注意,所有的SQL語(yǔ)句在結(jié)尾處都要使用;“符號(hào).使用SQL語(yǔ)句創(chuàng)立的數(shù)據(jù)庫(kù)表格和表格中列的名稱(chēng)必須以字母開(kāi)頭,后面可以使用字母,數(shù)字或下劃線(xiàn),名稱(chēng)的長(zhǎng)度不能超過(guò)30個(gè)字符.注意,用戶(hù)在選擇表格名稱(chēng)時(shí)不要使用SQL語(yǔ)言中的保存關(guān)鍵詞,如select,create, insert等,作為表格或列的名稱(chēng).數(shù)據(jù)類(lèi)型用來(lái)設(shè)定某一個(gè)具體列中數(shù)據(jù)的類(lèi)型.例如,在姓名列中只能采用varchar或char的數(shù)據(jù)類(lèi)型,而不能使用number的數(shù)據(jù)類(lèi)型.SQL語(yǔ)言中較為常用的數(shù)據(jù)類(lèi)型為:QUOTE:char(size):固定長(zhǎng)度字符串,其中括號(hào)中的size用來(lái)設(shè)定字符串的最

8、大長(zhǎng)度.Char類(lèi)型的最大長(zhǎng)度為255字節(jié).varchar(size):可變長(zhǎng)度字符串,最大長(zhǎng)度由size設(shè)定.number(size):數(shù)字類(lèi)型,其中數(shù)字的最大位數(shù)由size設(shè)定.Date :日期類(lèi)型.number(size,d):數(shù)字類(lèi)型,size決定該數(shù)字總的最大位數(shù),而d那么用于設(shè)定該數(shù)字在小數(shù)點(diǎn)后的位數(shù).最后,在創(chuàng)立新表格時(shí)需要注意的一點(diǎn)就是表格中列的限制條件.所謂限制條件就是當(dāng)向特定列輸入數(shù)據(jù) 時(shí)所必須遵守的規(guī)那么.例如,unique這一限制條件要求某一列中不能存在兩個(gè)值相同的記錄,所有記錄的 值都必須是唯一的.除 unique之外,較為常用的列的限制條件還包括not null和p

9、rimary key等.Not null用來(lái)規(guī)定表格中某一列的值不能為空.Primary key那么為表格中的所有記錄規(guī)定了唯一的標(biāo)識(shí)符.向表格中插入數(shù)據(jù)SQL語(yǔ)言使用insert語(yǔ)句向數(shù)據(jù)庫(kù)表格中插入或添加新的數(shù)據(jù)行.Insert語(yǔ)句的使用格式如下:QUOTE:insert into tablename(first_column,.last_column)values (first_value,.last_value); 例如:/quoteinsert into employee(firstname, lastname, age, address, city)values ( Li '

10、; , Ming ' , 45, No.77 Changan Road ' , Beijing ); /quote簡(jiǎn)單來(lái)說(shuō),當(dāng)向數(shù)據(jù)庫(kù)表格中添加新記錄時(shí),在關(guān)鍵詞insert into后面輸入所要添加的表格名稱(chēng),然后在括號(hào)中列岀將要添加新值的列的名稱(chēng).最后,在關(guān)鍵詞values的后面根據(jù)前面輸入的列的順序?qū)?yīng)的輸入所有要添加的記錄值.更新記錄SQL語(yǔ)言使用update語(yǔ)句更新或修改滿(mǎn)足規(guī)定條件的現(xiàn)有記錄.Update語(yǔ)句的格式為:QUOTE:update tablenameset columnname = newvalue , nextcolumn = newvalue2whe

11、re columnname OPERATOR value and or column OPERATOR value;例如:QUOTE:update employee set age = age+1where first_name= Mary ' iasd_name= Williams '使用update語(yǔ)句時(shí),關(guān)鍵一點(diǎn)就是要設(shè)定好用于進(jìn)行判斷的where條件從句.刪除記錄SQL語(yǔ)言使用delete語(yǔ)句刪除數(shù)據(jù)庫(kù)表格中的行或記錄.Delete語(yǔ)句的格式為:QUOTE:delete from tablenamewhere columnname OPERATOR value and

12、or column OPERATOR value;例如:QUOTE:delete from employeewhere lastname = May;簡(jiǎn)單來(lái)說(shuō),當(dāng)需要?jiǎng)h除某一行或某個(gè)記錄時(shí),在delete from 關(guān)鍵詞之后輸入表格名稱(chēng),然后在 where從句中設(shè)定刪除記錄的判斷條件.注意,如果用戶(hù)在使用delete語(yǔ)句時(shí)不設(shè)定 where從句,那么表格中的所有記錄將全部被刪除.刪除數(shù)據(jù)庫(kù)表格在SQL語(yǔ)言中使用drop table命令刪除某個(gè)表格以及該表格中的所有記錄.Drop table命令的使用格式為:QUOTE:drop table tablename ;例如:QUOTE:drop t

13、able employee;如果用戶(hù)希望將某個(gè)數(shù)據(jù)庫(kù)表格完全刪除,只需要在drop table命令后輸入希望刪除的表格名稱(chēng)即可.Droptable命令的作用與刪除表格中的所有記錄不同.刪除表格中的全部記錄之后,該表格仍然存在,而且表格 中列的信息不會(huì)改變.而使用drop table命令那么會(huì)將整個(gè)數(shù)據(jù)庫(kù)表格的所有信息全部刪除.以上,我們對(duì)SQL語(yǔ)言主要的命令和語(yǔ)句進(jìn)行了較為詳細(xì)的介紹.應(yīng)該說(shuō)SQL語(yǔ)句的語(yǔ)法結(jié)構(gòu)和風(fēng)格還是相當(dāng)簡(jiǎn)單和直觀的,只要用戶(hù)結(jié)合實(shí)踐多加練習(xí),一定會(huì)在短期內(nèi)迅速掌握.SELECTFROM為方便講解,我們?cè)跀?shù)據(jù)庫(kù)中創(chuàng)立名為Store_Information 的如下數(shù)據(jù)表QUO

14、TE:Store_lnformationStore_NameSalesDateLos Angeles$1500Jan-10-2000San Diego$250Jan-11-2000Los Angeles$300Jan-12-2000Boston$700Jan-12-2000SQL語(yǔ)言中用于數(shù)據(jù)庫(kù)查詢(xún)的最簡(jiǎn)單的命令就是SELECTFROM語(yǔ)法格式為:QUOTE:SELECT "column_name" FROM "table_name"例如,如果我們希望查詢(xún) Store_Information 數(shù)據(jù)表中所有的商店名稱(chēng)時(shí),可以使用如下命令:QUOTE:SEL

15、ECT store_name FROM Store_Information查詢(xún)結(jié)果顯示為:QUOTE:Store_NameLos AngelesSan DiegoLos AngelesBoston如果用戶(hù)希望一次查詢(xún)多個(gè)字段,可以將所要查詢(xún)的字段名稱(chēng)依次參加SELECT關(guān)鍵字之后,中間用隔開(kāi)即可.DISTINCTSELECT關(guān)鍵字支持用戶(hù)查詢(xún)數(shù)據(jù)表中指定字段的所有數(shù)據(jù),但是這樣有時(shí)就會(huì)不可防止的岀現(xiàn)重復(fù)信息.如果用戶(hù)希望只查詢(xún)那些具有不同記錄值的信息的話(huà),可以使用SQL語(yǔ)言的DISTINCT關(guān)鍵字.語(yǔ)法格式如下:QUOTE:SELECT DISTINCT "column_name&q

16、uot;FROM "table_name"例如,我們可以使用以下命令查詢(xún)Store_lnformation 數(shù)據(jù)表具有不同記錄值的所有記錄.QUOTE:SELECT DISTINCT Store_Name FROM Store_lnformation 查詢(xún)結(jié)果如下:QUOTE:Store_NameLos AngelesSan DiegoBostonWHERE除了選擇具有不同記錄值的記錄之外,有時(shí)我們可能還會(huì)需要根據(jù)某些條件對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行查詢(xún).例如,我們可能需要查詢(xún) Store_lnformation 數(shù)據(jù)表中銷(xiāo)售額超過(guò) 1000美圓的商店.為此,我們可以使用SQL語(yǔ)言

17、的WHERE關(guān)鍵字設(shè)定查詢(xún)條件.語(yǔ)法格式如下:QUOTE:SELECT "column_name"FROM "table_name"WHERE "condition"由此,我們可以使用如下命令查詢(xún)銷(xiāo)售額超過(guò)1000美圓的商店信息:QUOTE:SELECT store_name FROM Store_Information WHERE Sales > 1000查詢(xún)結(jié)果顯示為:QUOTE:store_nameLos Angeles運(yùn)算函數(shù)現(xiàn)在,我們已經(jīng)了解到在使用 SQL語(yǔ)言進(jìn)行數(shù)據(jù)庫(kù)查詢(xún)操作時(shí)可以通過(guò)對(duì)數(shù)值的判斷設(shè)定靈活的查詢(xún)條件

18、.為了增強(qiáng)對(duì)運(yùn)算的支持水平,SQL提供了眾多實(shí)用的運(yùn)算函數(shù)供廣闊用戶(hù)使用.例如,我們可以直接在SQL命令中調(diào)用SUM或AVG這兩個(gè)分別用于計(jì)算總數(shù)和平均數(shù)的函數(shù).語(yǔ)法格式如下:QUOTE:SELECT "function type"("column_name")FROM "table_name"如果我們希望查詢(xún)Store_lnformation 數(shù)據(jù)表中所有商店的總銷(xiāo)售額的話(huà),可以使用如下命令:QUOTE:SELECT SUM(Sales) FROM Store_Information查詢(xún)結(jié)果顯示為:QUOTE:SUM(Sales)$

19、2750COUNT除了 SUM和AVG函數(shù)之外,COUNT函數(shù)是SQL語(yǔ)言中另一個(gè)較為常用的運(yùn)算函數(shù).COUNT函數(shù)可以用來(lái)計(jì)算數(shù)據(jù)表中指定字段所包含的記錄數(shù)目.語(yǔ)法格式為:QUOTE:SELECT COUNT("column_name")FROM "table_name"例如,如果我們希望查詢(xún) Store_Information 數(shù)據(jù)表中的有關(guān)商店的記錄條數(shù)時(shí),可以使用如下命令:QUOTE:SELECT COUNT(store_name)FROM Store_Information查詢(xún)結(jié)果顯示為:QUOTE:Count(store_name)4COUN

20、T函數(shù)可以和DISTINCT關(guān)鍵字一起使用從而可以查詢(xún)數(shù)據(jù)表中指定字段中所有具有不同記錄值的記 錄數(shù)目.例如,如果我們希望查詢(xún) Store_lnformation 數(shù)據(jù)表中不同商店的數(shù)目時(shí),可以使用如下命令:QUOTE:SELECT COUNT(DISTINCT store_name)FROM Store_lnformation查詢(xún)結(jié)果顯示為:QUOTE:Count(DISTINCT store_name)3GROUP BY下面我們來(lái)進(jìn)一步看一下 SQL語(yǔ)言中的集合函數(shù).上文中,我們?cè)褂肧UM函數(shù)計(jì)算所有商店的銷(xiāo)售總額,如果我們希望計(jì)算每一家商店各自的總銷(xiāo)售額時(shí)該怎么辦呢?要實(shí)現(xiàn)這一目的我們

21、需要做兩件事:首 先,我們需要查詢(xún)商店名稱(chēng)和銷(xiāo)售額兩個(gè)字段;然后,我們使用SQL語(yǔ)言的GROUP BY命令將銷(xiāo)售額根據(jù)不同的商店進(jìn)行分組,從而計(jì)算出不同商店的銷(xiāo)售總額.GROUP BY命令的語(yǔ)法格式為:QUOTE:SELECT "column_name1", SUM("column_name2")FROM "table_name"GROUP BY "column_name1"我們可以使用如下命令實(shí)現(xiàn)上述查詢(xún)目的:QUOTE:SELECT store_name, SUM(Sales)FROM Store_lnform

22、ationGROUP BY store_name查詢(xún)結(jié)果顯示為:QUOTE:store_name SUM(Sales)Los Angeles $1800San Diego $250Boston $700小注:GROUP BY關(guān)鍵字一般應(yīng)用于同時(shí)查詢(xún)多個(gè)字段并對(duì)字段進(jìn)行算術(shù)運(yùn)算的SQL命令中HAVING用戶(hù)在使用SQL語(yǔ)言的過(guò)程中可能希望解決的另一個(gè)問(wèn)題就是對(duì)由sum或其它集合函數(shù)運(yùn)算結(jié)果的輸出進(jìn)行限制.例如,我們可能只希望看到 Store_lnformation 數(shù)據(jù)表中銷(xiāo)售總額超過(guò) 1500美圓的商店的信息, 這時(shí)我們就需要使用 HAVING從句.語(yǔ)法格式為:QUOTE:SELECT &qu

23、ot;column_name1", SUM("column_name2")FROM "table_name"GROUP BY "column_name1"HAVING (arithematic function condition)(GROUP BY從句可選)由此,我們可以使用如下命令實(shí)現(xiàn)上述查詢(xún)目的:QUOTE:SELECT store_name, SUM(sales)FROM Store_lnformationGROUP BY store_nameHAVING SUM(sales) > 1500查詢(xún)結(jié)果顯示為:QU

24、OTE:store_name SUM(Sales)Los Angeles $1800小注:SQL語(yǔ)言中設(shè)定集合函數(shù)的查詢(xún)條件時(shí)使用HAVING從句而不是 WHERE從句.通常情況下,HAVING從句被放置在SQL命令的結(jié)尾處.ALIAS下面,我們重點(diǎn)介紹一下如何在SQL命令中設(shè)定別名.SQL語(yǔ)言中一般使用兩種類(lèi)型的別名,分別為字段別名和數(shù)據(jù)表別名.簡(jiǎn)單的說(shuō),使用字段別名可以幫助我們有效的組織查詢(xún)的輸岀結(jié)果.例如,上文所列舉的多個(gè)實(shí)例中,當(dāng)我們計(jì)算商店銷(xiāo)售總額時(shí),顯示結(jié)果中就會(huì)出現(xiàn)SUM(sales).雖然SUM(sales)并不會(huì)對(duì)我們理解查詢(xún)結(jié)果帶來(lái)不便,但是如果我們需要在查詢(xún)中使用多項(xiàng)復(fù)雜

25、運(yùn)算時(shí),顯示結(jié)果就不會(huì)這么直觀了.如果這時(shí)我們 使用字段別名就會(huì)極大的提升查詢(xún)結(jié)果的可讀性.對(duì)于數(shù)據(jù)表別名,我們可以通過(guò)將別名直接放置在FROM從句中數(shù)據(jù)表名稱(chēng)的后面設(shè)定.數(shù)據(jù)表別名在我們下面將要講述的連接多個(gè)數(shù)據(jù)表進(jìn)行查詢(xún)的操作中極為有用.字段和數(shù)據(jù)表別名的語(yǔ)法格式如下:QUOTE:SELECT "table_alias"."column_name1" "column_alias"FROM "table_name" "table_alias"即別名都直接放置在各自對(duì)應(yīng)名稱(chēng)的后面,中間用空格分開(kāi)

26、.以Store_lnformation 數(shù)據(jù)表為例,我們可以在 GROUP BY 一節(jié)中所使用的SQL命令中設(shè)置如下字段和數(shù) 據(jù)表別名:QUOTE:SELECT A1.store_name Store, SUM(Sales) "Total Sales"FROM Store_lnformation A1GROUP BY A1.store_name查詢(xún)結(jié)果顯示為:QUOTE:Store Total SalesLos Angeles $1800San Diego $250Boston $700連接多個(gè)數(shù)據(jù)表最后,我們來(lái)看一下如果使用SQL語(yǔ)言連接多個(gè)數(shù)據(jù)表,實(shí)現(xiàn)對(duì)多個(gè)數(shù)據(jù)表的查詢(xún).為方便講解,我們?cè)跀?shù)據(jù)庫(kù)中分別創(chuàng)立了兩個(gè)名為Store_Information 和Region的數(shù)據(jù)表.QUOTE:Store_InformationStore_NameSalesDateLos Angeles$1500Jan-10-2000San Diego$250Jan-11-2000Los Angeles$300Jan-12-2000Boston$700Jan-12-2000QUOTE:RegionRegion_NameStore_NameEastBostonEastNew YorkWestLos AngelesWestSan Diego

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論