




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、SQL語言入門教程第一課 簡介SQL是英文Structured Query Language的縮寫,意思為結構化查詢語言。 SQL語言的主要功能就是同各種數據庫建立聯系,進行溝通。按照ANSI(美國國家標準協會)的規定,SQL被作為關系型數據庫管理系統的標準語言。SQL語句可以用來執行各種各樣的操作,例如更新數據庫中的數據,從數據庫中提取數據等。 目前,絕大多數流行的關系型數據庫管理系統,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL語言標準。雖然很多數據庫都對SQL語句進行了再開發和擴展,但是包括Select, Insert, Up
2、date, Delete, Create, 以及Drop在內的標準的SQL命令仍然可以被用來完成幾乎所有的數據庫操作。 下面,我們就來詳細介紹一下SQL語言的基本知識。一個典型的關系型數據庫通常由一個或多個被稱作表格的對象組成。數據庫中的所有數據或信息都被保存在這些數據庫表格中。數據庫中的每一個表格都具有自己唯一的表格名稱,都是由行和列組成,其中每一列包括了該列名稱,數據類型,以及列的其它屬性等信息,而行則具體包含某一列的記錄或數據。以下,是一個名為太平洋網絡學院的數據庫表格的實例。欄目用戶群新手上路電腦初學者軟件教室一般的電腦用戶設計教室電腦設計愛好者開發教室電腦編程人員該表格中“欄目”,
3、“用戶群”就是兩個不同的列,而表格中的每一行則包含了具體的表格數據。1. 創建表格2. 數據查詢3. 向表格中添加、更新、刪除記錄4. 刪除數據庫表格第二課 創建表格SQL語言中的create table語句被用來建立新的數據庫表格。create table語句的使用格式如下:create table tablename(column1 data type,column2 data type,column3 data type);如果用戶希望在建立新表格時規定列的限制條件,可以使用可選的條件選項:create table tablename(column1 data type constrai
4、nt,column2 data type constraint,column3 data type constraint);舉例如下:create table employee(firstname varchar(15),lastname varchar(20),age number(3),address varchar(30),city varchar(20);簡單來說,創建新表格時,在關鍵詞create table后面加入所要建立的表格的名稱,然后在括號內順次設定各列的名稱,數據類型,以及可選的限制條件等。注意,所有的SQL語句在結尾處都要使用“;”符號。使用SQL語句創建的數據庫表格和表
5、格中列的名稱必須以字母開頭,后面可以使用字母,數字或下劃線,名稱的長度不能超過30個字符。注意,用戶在選擇表格名稱時不要使用SQL語言中的保留關鍵詞,如select, create, insert等,作為表格或列的名稱。數據類型用來設定某一個具體列中數據的類型。例如,在姓名列中只能采用varchar或char的數據類型,而不能使用number的數據類型。SQL語言中較為常用的數據類型為:char(size):固定長度字符串,其中括號中的size用來設定字符串的最大長度。Char類型的最大長度為255字節。varchar(size):可變長度字符串,最大長度由size設定。number(size
6、):數字類型,其中數字的最大位數由size設定。Date:日期類型。number(size,d):數字類型,size決定該數字總的最大位數,而d則用于設定該數字在小數點后的位數。最后,在創建新表格時需要注意的一點就是表格中列的限制條件。所謂限制條件就是當向特定列輸入數據時所必須遵守的規則。例如,unique這一限制條件要求某一列中不能存在兩個值相同的記錄,所有記錄的值都必須是唯一的。除unique之外,較為常用的列的限制條件還包括not null和primary key等。not null用來規定表格中某一列的值不能為空。primary key則為表格中的所有記錄規定了唯一的標識符。第三課 數
7、據查詢在眾多的SQL命令中,select語句應該算是使用最頻繁的。select語句主要被用來對數據庫進行查詢并返回符合用戶查詢標準的結果數據。Select語句的語法格式如下:select column1 , column2,etc from tablenamewhere condition;( 表示可選項)select語句中位于select關鍵詞之后的列名用來決定那些列將作為查詢結果返回。用戶可以按照自己的需要選擇任意列,還可以使用通配符“*”來設定返回表格中的所有列。select語句中位于from關鍵詞之后的表格名稱用來決定將要進行查詢操作的目標表格。Select語句中的where可選從句用
8、來規定哪些數據值或哪些行將被作為查詢結果返回或顯示。在where條件從句中可以使用以下一些運算符來設定查詢標準:= 等于 大于= 大于等于= 小于等于 不等于除了上面所提到的運算符外,LIKE運算符在where條件從句中也非常重要。LIKE運算符的功能非常強大,通過使用LIKE運算符可以設定只選擇與用戶規定格式相同的記錄。此外,我們還可以使用通配符“%”用來代替任何字符串。舉例如下:select firstname, lastname, cityfrom employeewhere firstname LIKE E%;(注意,字符串必須被包含在單括號內)上述SQL語句將會查詢所有名稱以E開頭的
9、姓名。或者,通過如下語句:select * from employeewhere firstname = May;查詢所有名稱為May的行。第四課 向表格中添加、更新、刪除記錄添加新記錄SQL語言使用insert語句向數據庫表格中插入或添加新的數據行。Insert語句的使用格式如下:insert into tablename(first_column,.last_column)values (first_value,.last_value);例如:insert into employee(firstname, lastname, age, address, city)values (Li,Mi
10、ng,45, No.77 Changan Road,Beijing);簡單來說,當向數據庫表格中添加新記錄時,在關鍵詞insert into后面輸入所要添加的表格名稱,然后在括號中列出將要添加新值的列的名稱。最后,在關鍵詞values的后面按照前面輸入的列的順序對應的輸入所有要添加的記錄值。更新記錄SQL語言使用update語句更新或修改滿足規定條件的現有記錄。update語句的格式為:update tablenameset columnname = newvalue , nextcolumn = newvalue2.where columnname OPERATOR value and|or
11、 column OPERATOR value;例如:update employeeset age = age+1where first_name= Maryand last_name= Williams;使用update語句時,關鍵一點就是要設定好用于進行判斷的where條件從句。刪除記錄SQL語言使用delete語句刪除數據庫表格中的行或記錄。Delete語句的格式為:delete from tablenamewhere columnname OPERATOR value and|or column OPERATOR value;例如:delete from employeewhere la
12、stname = May;簡單來說,蕩需要刪除某一行或某個記錄時,在delete from關鍵詞之后輸入表格名稱,然后在where從句中設定刪除記錄的判斷條件。注意,如果用戶在使用delete語句時不設定where從句,則表格中的所有記錄將全部被刪除。第五課 刪除數據庫表格在SQL語言中使用drop table命令刪除某個表格以及該表格中的所有記錄。drop table命令的使用格式為:drop table tablename;例如:drop table employee;如果用戶希望將某個數據庫表格完全刪除,只需要在drop table命令后輸入希望刪除的表格名稱即可。drop table命
13、令的作用與刪除表格中的所有記錄不同。刪除表格中的全部記錄之后,該表格仍然存在,而且表格中列的信息不會改變。而使用drop table命令則會將整個數據庫表格的所有信息全部刪除。以上,我們對SQL語言主要的命令和語句進行了較為詳細的介紹。應該說SQL語句的語法結構和風格還是相當簡單和直觀的,只要用戶結合實踐多加練習,一定會在短期內迅速掌握。以Store_Information數據表為例,我們可以在GROUP BY一節中所使用的SQL命令中設置如下字段和數據表別名:SELECT A1.store_name Store, SUM(Sales) Total SalesFROM Store_Inform
14、ation A1GROUP BY A1.store_name查詢結果顯示為:Store Total SalesLos Angeles $1800San Diego $250Boston $700SQL循序漸進SQL循序漸進(目錄)SQL循序漸進(1)-介紹SQLSQL循序漸進(2)-表的基礎知識SQL循序漸進(3)-數據檢索SQL循序漸進(4)-創建表SQL循序漸進(5)-插入數據到表SQL循序漸進(6)-刪除表SQL循序漸進(7)-更新記錄SQL循序漸進(8)-刪除記錄SQL循序漸進(9)-SELECT語句SQL循序漸進(10)-合計函數SQL循序漸進(11)-GROUP BY子句SQL循序
15、漸進(12)-HAVING子句SQL循序漸進(13)-ORDER BY子句SQL循序漸進(14)-組合條件和布爾運算符SQL循序漸進(15)-IN 和 BETWEEN 條件運算符SQL循序漸進(16)-數學運算符SQL循序漸進(17)-JOIN子句SQL循序漸進(18)-索引SQL循序漸進(19)-DISTINCT和排除復制SQL循序漸進(20)-Aliases 、In以及子查詢SQL循序漸進(21)-更多的子查詢SQL循序漸進(22)-EXISTS 和 ALLSQL循序漸進 (23) -UNION 和 外部連接SQL循序漸進 (24) -嵌入SQL (1)介紹SQLSQL(Structure
16、d Query Language,結構查詢語言)是一個功能強大的數據庫語言。SQL通常使用于數據庫的通訊。ANSI(美國國家標準學會)聲稱,SQL是關系數據庫管理系統的標準語言。SQL語句通常用于完成一些數據庫的操作任務,比如在數據庫中更新數據,或者從數據庫中檢索數據。使用SQL的常見關系數據庫管理系統有:Oracle、 Sybase、 Microsoft SQL Server、 Access、 Ingres等等。雖然絕大多數的數據庫系統使用SQL,但是它們同樣有它們自立另外的專有擴展功能用于它們的系統。但是,標準的SQL命令,比如Select、 Insert、 Update、 Delete、
17、 Create和 Drop常常被用于完成絕大多數數據庫的操作。但是,不象其它的語言,如C、Pascal等,SQL沒有循環結構(比如if-then-else、do-while)以及函數定義等等的功能。而且SQL只有一個數據類型的固定設置,換句話說,你不能在使用其它編程語言的時候創建你自己的數據類型。SQL功能強大,但是概括起來,它可以分成以下幾組:DML(Data Manipulation Language,數據操作語言):用于檢索或者修改數據; DDL(Data Definition Language,數據定義語言): 用于定義數據的結構,比如 創建、修改或者刪除數據庫對象; DCL(Data
18、 Control Language,數據控制語言):用于定義數據庫用戶的權限。DML組可以細分為以下的幾個語句:SELECT:用于檢索數據; INSERT:用于增加數據到數據庫; UPDATE:用于從數據庫中修改現存的數據 DELETE:用于從數據庫中刪除數據。DDL語句可以用于創建用戶和重建數據庫對象。下面是DDL命令:CREATE TABLE ALTER TABLE DROP TABLE CREATE INDEX DROP INDEXDCL命令用于創建關系用戶訪問以及授權的對象。下面是幾個DCL命令: ALTER PASSWORD GRANT REVOKE CREATE SYNONYM為了
19、讓你對SQL有一個直觀的認識,下面先給出一個簡單SQL語句的例子:我們使用SQL語句來從Employees中檢索Department ID為CS的姓名:SELECT Employees.NameFROM EmployeesWHERE Employees.DeptID = CS可能你現在一開始不太理解這些語句,也許你會一頭霧水,不要緊的,通過本教程的學習后,你會發現這段語句是多么的普通。為了不讓你困惑,下面我也進行一番解釋:先對FROM子句吧,語句中的FROM Employees意思是從Employees表中檢索數據。而語句WHERE Employees.DeptID = CS意思是檢索Empl
20、oyees的DeptID列為”CS”的行,這樣SQL語句檢索的結果將是DeptID為CS的列的所有數據,比如:EmpIDNameDept123PurpleCS124ZscCS最后,我們來解釋一個SELECT子句,它指定了從Name列檢索來的所有數據,比如NamePurpleZsc好吧,開始我們下一節的教程-表的基本知識。(2)表的基礎知識關系數據庫通常包含多個表。數據庫實際上是表的集合,數據庫的數據或者信息都是存儲在表中的。表是對數據進行存儲和操作的一種邏輯結構,每一個表都代表一個對用戶意義的對象。例如,一個公司數據庫中,會有雇員表、部門表、庫存表、銷售表、工資表等等。我們經常見到的成績表就是
21、一種表,它是有行和列組成的,我們并且可以通過名字來識別數據。列包含了列的名字、數據類型以及列的其它屬性;行包含了列的記錄或者數據。下面給出一個成績單,其中姓名、語文、數學、英語都是列,而行包含了這個表的數據,即每個人的各科成績:姓名語文數學英語王小童7810087張柳風859295紫云飛658986黃天龍986775(3)數據檢索在SQL中SELECT語句通常用于檢索數據庫,或者檢索滿足你設定條件的數據,以下是簡單的SELECT語句的格式:select column1,column2,etc from tablenamewhere condition; = optional 其中列的名字跟著S
22、ELECT關鍵字,它決定了哪一列將被作為結果返回。你可以任意指定多個列,或者你可以使用*來選擇所有的列。表的名字是緊跟著FROM關鍵字的,它指出了哪個表格將作為最后結果被查詢。而WHERE子句(可選)指出哪個數據或者行將被返回或者顯示,它是根據關鍵字WHERE后面描述的條件而來的。在WHERE子句中可以有以下的條件選擇:= 等于 大于= 大于等于= 小于等于 不等于LIKE 參見以下注釋注釋:LIKE 模式匹配操作符同樣可以使用在WHERE子句的條件條件中。LIKE是一個功能強大的操作符,它可以讓你選擇你喜歡指定的行。百分號% 可以被用來匹配任何可能的字符,它可以出現在指定字符的前面或者后面,
23、例如:select first, last, cityfrom empinfowhere first LIKE Er%; 以上這條SQL語句將會匹配任何名字以Er開始的名字,這里必須使用單引號。或者你也可以使用%在字符的前面,例如: select first, last from empinfowhere last LIKE %s; 這條SQL語句將會匹配任何名字以s結尾的名字。這個%的作用就跟DOS命令的號很相似。select * from empinfowhere first = Eric; 以上的SQL語句只選擇first名字為Eric的行。(4)創建表這個create table語句是
24、用于創建一個新的表格。以下是一個簡單創建表格語句的格式: create table tablename(column1 data type,column2 data type, column3 data type);如果你想使用可選的約束,創建表格的格式為: create table tablename(column1 data type constraint,column2 data type constraint,column3 data type constraint); = optional 這里注意:你可以任意創建多列的表格,這個條件是可選的。為了更好的理解,下面舉個例子:creat
25、e table employee(first varchar(15),last varchar(20),age number(3),address varchar(30),city varchar(20),state varchar(20);為了創建一個新表格,你可以在關鍵字create table之后跟著表的名字,然后一個圓左括號”(”,然后是第一列的名字,再是這一列的數據類型,接著是任意的可選約束,最后是圓右括號”)”。確保在開始表格內容之前使用圓左括號并且在表的最后一列定義之后使用圓右括號是相當重要的。你還要保證每一個列定義之間有逗號分隔。最后在SQL語句結束時候加上分號;。表格和列名必
26、須以字母開頭,第二個字符開始可以是字母、數字或者下劃線,但是要保證名字的總長度不要超過30個字符。在定義表格和列名不要使用不要使用SQL預定的用于表格或者列名的關鍵字(比如select、create、 insert等等),以避免錯誤的發生。數據類型是指在特定的列使用什么樣數據的類型。如果一個列的名字為Last_Name,它是用來容納人名的,所以這個特定列就應該采用varchar (variable-length character,變長度的字符型) 數據類型。以下是幾種常見的數據類型:char(size) :固定長度的字符串型。Size是圓括號中指定的參數,它可以由用戶隨意設置,但是不能超過2
27、55個字節。varchar(size) :變長度的字符串型。它的最大長度是由括號中的參數size設定的。number(size):數值型。最大數字的位數由括號中的參數size設置。date :日期數值型。number(size,d) :數值型。它的最大數字的位數由括號中的參數sieze設定,而括號中的參數d是設置小數點的位數。什么是約束呢?當表被創建的時候,可以一列也可以多列共用一個約束。約束是一個跟列有關的基本準則,返回的數據必須遵循這個準則。下面舉個例子,一個約束指定在一列中不能有兩個記錄共用一個數值。它們必須單獨的。其它兩個流行的約束是:not null,它設置了列不能留空白,即一定要有
28、數據;以及primary key(主鍵),主鍵約束定義了表中每一個記錄(或行)的唯一標識。所有的這些將在以后的教程中再作進一步闡述。好吧,也許你已經有躍躍欲試的沖動了。作為本節練習,下面我們自己來設計和創建表格。你可以開始創建一個公司的雇員表格。你需要創建一個包含firstname、lastname、 title、 age和 salary的表格。(5)插入數據到表Insert語句用于往表格中插入或者增加一行數據,它的格式為:insert into tablename(first_column,.last_column)values (first_value,.last_value); = op
29、tional 簡單舉個例子:insert into employee(first, last, age, address, city)values (Luke, Duke, 45, 2130 Boars Nest, Hazard Co); 這里要注意:每一個字符竄都要用單引號括起來。為了往表中插入數據,要在關鍵字insert into之后緊跟著表名,然后是左圓括號,接著是以逗號分開的一系列的列名,再是一個右圓括號,然后在關鍵字values之后跟著一系列用圓括號括起的數值。這些數值是你要往表格中填入的數據,它們必須與指定的列名相匹配。字符串筆譯用單引號括起來,而數字就不用。在上面的例子中,Luk
30、e必須與列first相匹配,而45必須與列age相匹配。假如你想往employee表格中插入以下數據;Zhang Weiguo,28,北京601信箱,北京那么你要使用以下的SQL語句:insert into employee(first, last, age, address, city)values ( Zhang, Weiguo ,28, 北京601信箱, 北京);(6)刪除表Drop table命令用于刪除一個表格或者表中的所有行。其語法格式為:drop table tablename下面舉個例子:drop table employee; 為了刪除整個表(包括所有的行),可以使用drop
31、 table命令后加上tablename。Drop table命令跟從表中刪除所有記錄是不一樣的:刪除表中的所有記錄是留下表格(只是它是空的)以及約束信息;而drop table是刪除表的所有信息,包括所有行、表格以及約束信息等等。(7)更新記錄Update語句用于更新或者改變匹配指定條件的記錄,它是通過構造一個where語句來實現的。其語句格式如下:update tablenameset columnname = newvalue,nextcolumn = newvalue2.where columnname OPERATOR value and|or column OPERATOR val
32、ue; = optional 下面舉個例子來說明:update phone_bookset area_code = 623where prefix = 979;以上語句是在phone_book表中,在prefix=979的行中將area_code設置為623。update phone_bookset last_name = Smith, prefix=555, suffix=9292where last_name = Jones;而以上的這段語句是在phone_book中,在last_name= Jones的行中將last_name 設置為 Smith, prefix為555, suffix為
33、9292。update employeeset age = age+1where first_name=Mary and last_name=Williams;這段語句是在employee表中,在first_name=Mary 和last_name=Williams的行中將age加1。作為每課一練,你在結束本教程之后要好好作以下的練習:1 因為Jonie Weber 已經跟Bob Williams結婚,所以它需要將它的last名更新為Weber-Williams。2 Dirk Smith的生日是今天,所以他的年齡應該加1。3 所有的秘書都叫做Administrative Assistant.所
34、以要將所有的標題標題都相應地修改。就作這幾個練習,千萬不可大意喲。(8)刪除記錄Delete語句是用來從表中刪除記錄或者行,其語句格式為:delete from tablenamewhere columnname OPERATOR value and|or column OPERATOR value; = optional 下面還是舉個例子:delete from employee;這條語句沒有where語句,所以它將刪除所有的記錄,因此如果沒有使用where的時候,要千萬小心。如果你只要刪除其中一行或者幾行,可以參考以下的語句:delete from employeewhere lastna
35、me = May; 這條語句是從emplyee表中刪除lastname為May的行。delete from employeewhere firstname = Mike or firstname = Eric; 這條語句是從emplyee表中刪除firstname為Mike或者Eric的行。為了從表中刪除一個完整的記錄或者行,就直接在delete from后面加上表的名字,并且利用where指明符合什么條件的行要刪除即可。如果你沒有使用where子句,那么表中的所有記錄或者行將被刪除。(9)SELECT語句在上面的教程中已經有用到SELECT語句。在本節教程中將詳細對它進行闡述。SELECT語
36、句是SQL的核心,在你的SQL語句中可能用的最多的就是SELECT語句了。由于大量的選項可以用于SELECT語句,所以整個教程好象就是圍這SELECT語句轉。當我們構造SQL查詢語句(利用了SELECT語句)的時候,認識所有的可能選項和最好的或者最有效率的方法來實現是很有用的。這個教程將為你提供這些技能。SELECT語句用于查詢數據庫并檢索匹配你指定條件的選擇數據。SELECT語句有五個主要的子句子你可以選擇,而FROM是唯一必須的子句。每一個子句有大量的選擇項、參數等等。這些子句將羅列在下面,而且它們每一個都將在以后的教程有更為詳細的描述。以下是SELECT語句的格式:SELECT ALL
37、| DISTINCT column1,column2FROM table1,table2WHERE conditionsGROUP BY column-listHAVING conditionsORDER BY column-list ASC | DESC 下面舉個例子:SELECT name, age, salaryFROM employeeWHERE age 50; 上面的這個語句將從employee表中選擇age大于50的所有的name、age和salary列的數值。注意:一定要在SQL語句末尾加上一個分號。這個分號提示SQL語句已經結束并準備被解釋。以下的表格給出了各種比較運算符號:=
38、等于大于=大于等于=小于等于不等于LIKE字符串比較測驗舉個例子吧:SELECT name, title, deptFROM employeeWHERE title LIKE Pro%;上面的語句是從employee表中選擇title是以Pro為開頭的name、title和dept列中的所有行或者數值。另外ALL和DISTINCT也是SQL中的關鍵字,它們用于在你的查詢結果中選擇ALL(缺省)或者distinct或者單一記錄。如果你想在指定的列中檢索單一記錄,你可以使用DISTINCT 關鍵子。 因為DISTNCT 將會丟棄所有你在SELECT指定的列復制的記錄,比如 : SELECT DIS
39、TINCT age FROM employee_info; 這條語句將返回所有在employee_info表中單一的age數據。而ALL就將顯示所有指定的類,包括所有的復制數據。在沒有指定的時候,這個ALL關鍵字是缺省的。(10)合計函數所有的合計函數如下表所示:MIN返回一個給定列中最小的數值MAX返回一個給定列中最大的數值SUM返回一個給定列中所有數值的總和AVG返回一個給定列中所有數值的平均值COUNT返回一個給定列中所有數值的個數COUNT(*)返回一個表中的行數合計函數用于從SELECT語句中計算一個”返回列的數據”。它們是總結了所選數據列的結果。雖然它們需要GROUP BY子句(后
40、面一個教程介紹),但是這些函數也可以在不用使用GROUP BY子句的情況被使用,比如 :SELECT AVG(salary)FROM employee;這條語句將返回單一的結果,它包含了從employee表中所有salary列數據的平均值。為了更好的理解,我們再舉個例子:SELECT AVG(salary)FROM employee;WHERE title = Programmer; 以上這條語句將返回employee表中所有title列為Programmer的數據的平均值。下面的例子中使用的語句跟其它合計函數有點不用,因為沒有一個類被指定給COUNT函數。這條語句實際上將返回employee
41、表的行數,如下:SELECT Count(*)FROM employees;最后給出本節教程的配套練習:1)作一個公司的銷售表items_ordered,里面有price、product和amount。從items_ordered表中選擇price最大的數據。這里提示:使用MAX函數。 2) 計算items_ordered表中的行數。(11)GROUP BY子句GROUP BY子句首先講講GROUP BY 子句語法: SELECT column1, SUM(column2)FROM list-of-tablesGROUP BY column-list; 這個GROUP BY子句將集中所有的行在
42、一起,它包含了指定列的數據以及允許合計函數來計算一個或者多個列。當然最好解釋的方法是給出一個例子啦:假設我們將從employee表中搜索工資最高的列,可以使用以下的SQL語句:SELECT max(salary), deptFROM employee GROUP BY dept; 這條語句將在每一個單獨的部門中選擇工資最高的工資。結果他們的salary和dept將被返回。(12)HAVING子句HAVING子句下面先給出HAVING子句的語法:SELECT column1, SUM(column2)FROM list-of-tablesGROUP BY column-listHAVING co
43、ndition; 這個HAVING子句允許你為每一個組指定條件,換句話說,可以根據你指定的條件來選擇行。如果你想使用HAVING子句的話,它應該處再GROUP BY子句之后。下面將以一個例子來解釋HAVING子句。假設我們的employee表中包含雇員的name、departmen、salary和age。如果你想為每個部門中每個雇員選擇平均工資的話,你可以使用下面的SQL語句:SELECT dept, avg(salary)FROM employeeGROUP BY dept; 當然,如果你還想只計算和顯示salary大于20000的平均工資的話,你還可以加上HAVING子句:SELECT d
44、ept, avg(salary)FROM employeeGROUP BY deptHAVING avg(salary) 20000;(13)ORDER BY子句ORDER BY子句ORDER BY子句的語法為:SELECT column1, SUM(column2)FROM list-of-tablesORDER BY column-list ASC | DESC; = optional ORDER BY是一個可選的子句,它允許你根據指定要order by的列來以上升或者下降的順序來顯示查詢的結果。例如: ASC = Ascending Order 這個是缺省的DESC = Descendi
45、ng Order 下面舉個例子:SELECT employee_id, dept, name, age, salaryFROM employee_infoWHERE dept = SalesORDER BY salary; 這條SQL語句將從employee_info表中列dept等于Sales選擇employee_id,、dept、 name、 age和 salary,并且根據他們的salary按升序的順序來列出檢索結果。如果你想對多列排序的話,那么在列與列之間要加上逗號,比如 :SELECT employee_id, dept, name, age, salaryFROM employee
46、_infoWHERE dept = SalesORDER BY salary, age DESC;(14)組合條件和布爾運算符以下的SQL語句中就含有組合條件:SELECT column1, SUM(column2)FROM list-of-tablesWHERE condition1 AND condition2; AND運算符可以在WHERE子句中連接兩個或者多個條件。AND條件的兩旁必須都為true(真),即兩個條件都同時滿足的時候,這些行才將被顯示。當然,你也可以使用OR運算符,它也可以在WHERE子句中連接兩個或者多個條件。但是,只要OR運算符兩旁有一個為true的時候條件就滿足了,
47、因此行才會被顯示。所以你使用OR運算符的時候,可以是OR運算符兩旁只有一個為true或者兩旁都為true。下面舉個例子吧:SELECT employeeid, firstname, lastname, title, salaryFROM employee_infoWHERE salary = 50000.00 AND title = Programmer; 這條SQL語句是從employee_info表中選擇salary大于等于50000.00并且title等于Programmer的列employeeid、 firstname、 lastname、 title和 salary。此時必須AND運
48、算符兩旁的條件都為真,行才會最為檢索結果返回。如果其中有一個條件為假,那么就什么都沒有顯示。你可以使用圓括號將條件括起來,雖然它們也不一定是必須的,但是括起來看起來更清晰一些,這是一個編程習慣的問題。比如 :SELECT employeeid, firstname, lastname, title, salaryFROM employee_infoWHERE (salary = 50000.00) AND (title = Programmer); 下面再舉個例子:SELECT firstname, lastname, title, salaryFROM employee_infoWHERE
49、(title = Sales) OR (title = Programmer); 這條語句將從employee_info表中選擇title等于Sales或者等于Programmer的列firstname、 lastname, title和 salary。(15)IN 和 BETWEEN 條件運算符下面是IN條件運算符的SQL語句:SELECT column1, SUM(column2)FROM list-of-tablesWHERE column3 IN (list-of-values); 下面是BETWEEN條件運算符的SQL語句:SELECT column1, SUM(column2)FR
50、OM list-of-tablesWHERE column3 BETWEEN value1 AND value2; 實際上,IN條件運算符是一個設置成員測試運算符,也就是說,它用于測試是否一個數值處在IN關鍵字之后提供的數值之中。舉個例子如下:SELECT employeeid, lastname, salaryFROM employee_infoWHERE lastname IN (Hernandez, Jones, Roberts, Ruiz); 這條語句是從employee_info表中選擇lastname等于Hernandez、Jones、 Roberts或者 Ruiz名字之一的列em
51、ployeeid、 lastname和 salary。如果它在其中就將返回行。IN條件運算符可以使用混合條件來替代,比如你可以使用等號運算符或者使用OR運算符等等,但是結果是一樣的,例如:SELECT employeeid, lastname, salaryFROM employee_infoWHERE lastname = Hernandez OR lastname = Jones OR lastname = Roberts OR lastname = Ruiz; 你可以觀察到,利用IN運算符時語句會更加簡短并且容易讀,特別是在你測試兩個或者三個數值以上的時候尤為突出。當然你也可以使用NOT
52、 IN 來在你的列表中排除行的。而BETWEEN條件運算符是用與測試一個數值是否處在BETWEEN關鍵字兩邊指定數值的中間,比如:SELECT employeeid, age, lastname, salaryFROM employee_infoWHERE age BETWEEN 30 AND 40; 這條SQL語句是從employee_info表中選擇age處于30到40歲之間(包括30歲和40歲)的列employeeid、age、 lastname和salary。這條語句同樣可以不用BETWEEN運算符,而使用混合條件來替代,例如:SELECT employeeid, age, lastn
53、ame, salaryFROM employee_infoWHERE age = 30 AND age = 40; 當然,你也可以類似于NOT IN的方法,使用NOT BETWEEN來排除一些數據。(16)數學運算符標準的ANSI SQL-92支持下面四個基本的算術運算符:+加-減*乘/除%求余其中求余運算符決定除法的余數。這個運算符不是ANSI SQL支持的,但是,絕大多數的數據庫支持他。下面是一些有用的數學函數,因為可能要用到它,所以我這里要集中提一下。在ANSI SQL-92中不支持這些函數,但是它們可能對于某些特殊的RDBMS是有效的。然而它們對于幾個主要的數據庫系統都是有效的。下面就
54、說說這些數學函數吧:ABS(x)返回x的絕對值SIGN(x)當x為負數、零、正數的時候分別返回x的符號-1、0或者1MOD(x,y)返回x除以y的余數,跟x%y作用一樣FLOOR(x)返回小于等于x的最大整數CEILING(x) 或 CEIL(x)返回大于等于x的最小整數POWER(x,y)返回x的y次方的數值ROUND(x)返回最接近于x的數ROUND(x,d)返回小數點數為4的接近于x的數SQRT(x)返回x的平方根下面舉個例子:SELECT round(salary), firstnameFROM employee_info 上面這條語句將從employee_info表中選擇salary最接近的數以及firstname列。(17)JOIN子句不知你有沒有發現直到現在我們利用SEL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉鼠探究活動方案
- 仙女湖景點活動方案
- 代辦公司企業策劃方案
- 代言活動中秋節活動方案
- 代駕公司年會策劃方案
- 以班風促學風活動方案
- 儀征團建活動方案
- 任務沖刺活動方案
- 企業小型元旦活動方案
- 金昌市金川高級中學2025屆高三三模數學
- 手術患者評估制度
- 廣聯達GTJ建模進階技能培訓
- 色卡-CBCC中國建筑標準色卡(千色卡1026色)
- DB11∕T 2000-2022 建筑工程消防施工質量驗收規范
- 人臉識別門禁系統使用指南
- 酒店安全設施
- 水下機器人研究報告
- 建筑項目部考勤管理制度
- 中班健康課件《我不挑食》
- 中國鹽業集團有限公司招聘筆試題庫2024
- 2024年人教版小學四年級信息技術(上冊)期末試卷附答案
評論
0/150
提交評論