资料库共同语言SQL指令.doc_第1页
资料库共同语言SQL指令.doc_第2页
资料库共同语言SQL指令.doc_第3页
资料库共同语言SQL指令.doc_第4页
资料库共同语言SQL指令.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

資料庫共同語言SQL指令資料庫的應用是為了解決企業問題,首先要了解問題領域的內涵,進而從企業流程的角度考量解決問題的步驟,分析每一步驟所用到的資料項(Data Item)有那些? 以及每一步驟的輸入資料、處理邏輯和輸出資料為何?資訊系統所用到的資料項必須用到資料庫來加以儲存,因此,先運用E-R Model技術找出(1) 儲存資料的實體名稱(2) 每一實體應用那些屬性(3) 每一實體的主鍵(PK)和外來鍵(FK)(4) 實體與實體之間的關係。然後再運用正規化技術來確認實體裡的屬性是否符合第一正規化、第二正規化及第三正規化型式,以避免產生更新異常現象( update anomalies)。至此,資料表的架構已具雛形,進一步須進行細部設計、決定每一個欄位的資料行名稱、資料型別、長度、是否可為虛值、是否要建立索引等資訊,然後就可正式的建立資料庫及資料表。SQL(Structured Query Language)讀為SEQUAL,是IBM公司在1970年代中期所發展出來的語言,最初是由一種稱為結構化英文查詢語言的實驗室產品所演進而來。第一版稱為SEQUEL-XRM(1974-1975),第二版稱為SEQUEL/2(1976-1977)。IBM System R率先於1976採用SEQUEL為其標準語言,並正式改名為SQL,接著1979年,ORACLE公司所開發的關聯式資料庫管理系統也以SQL為其資料庫語言,至此SQL便為大多數資料庫廠商所採用。SQL在1986年成為ANSI標準,經過多年修訂後,目前業界是以ANSI/ISO頒佈的SQL-92(SQL2)為關聯式資料庫的共通標準語言。至於SQL-99(SQL3)則適用於物件導向資料庫。SQL是一種以集合為導向(Set Oriented)的資料庫語言,它將資料庫視為一個邏輯上的集合,這些集合是由一個或一個以上的資料表(Table),以及檢視表(View)所組成。一個SQL資料表是由直行(Column)及橫列(Row)所組成,直行稱為資料行(欄),用來描述資料的屬性(Attribute)或特微(Property),而每一橫列稱為資料列,代表一筆記錄(Record)。SQL大約只有30個指令(Command),但足夠應付所有關聯式資料庫的運作使用。SQL是個非程序式語言(即4GL,第四代語言),只要指定條件,SQL便能提供結果,而中間過程則完全不必操心。這是SQL很重要的特色,也是它為何特別適用於Client/Server環境原因。不過SQL只著重於資料庫的操作(manipulation),至於使用者介面,如:資料輸出入介面、報表的產生、螢幕美化等則不是SQL的範疇。可是螢幕、報表、輸出入介面也是應用軟體很重要的一環,因此一般商用資料庫系統,多會包含SQL命令群及介面命令群兩大部份。SQL的內容一個資料庫語言最起碼必須具備以下功能 :l 建立資料庫及其資料表欄位l 能輸入、更新、刪除資料庫的內容(資料)l 能做各種擷取(query)資料的動作,並合成有意義的資訊SQL就是運作在資料庫物件(資料庫、資料表、檢視表、索引)上的資料庫語言。依以上目標來設計其指令集,這些指令可分成 DDL(Data Definition Language)資料定義語言 DML(Data Manipulation Language)資料處理語言 DCL(Data Control Language)資料控制語言DDL(Data Definition Language)資料庫定義語言,用來建立資料庫及其資料表欄位,包括建立、修改、刪除資料庫、資料表、檢視表、索引等,例如 Create Database, Create Table, Create Index, Alter Database, Alter Table, Alter Index, Drop Database, Drop Table, Drop Index, Create Procedure, Create Trigger, 及 Create Function。建立資料庫 Create Database (資料庫名稱)Create Database employee執行 Create Database指令後,SQL Server會自動產生下列兩個檔案1 資料檔案 : 以資料庫名稱_Data.MDF命名,用來儲存資料2 交易記錄檔 : 以資料庫名稱_Log.LDF命名,用來儲存對資料庫所作的異動記錄若沒有特別指定,上述兩個檔案將內定儲存於 C:Program FilesMicrosoft SQL ServerMSSQLdata 目錄之下。 叢集必須存值建立資料表l Create TABLE(建立資料表)Create TABLE table_name( field1 type(size) Not null Primary key unique Clustered,唯一值 限制條件主鍵 fieldn type(size) Constraint FK_fname Foreign Key外來鍵值域 References fname(fieldn)資料型別分類資料型別說明資料長度整數Int存放整數資料4Smallint2Bigint8Tinyint1Bit1精確位數Decimal(p,s)Numeric(p,s)存放帶有小數的數值資料 p:精確度(139)s:小數點位數5-17浮點數Float存放浮點數資料的近似值資料8Real4日期時間Datetime存放日期時間資料8Smalldatetime4字串Char(n)存放固定長度字元資料nVarchar(n)存放可變長度字元資料nchar(n)固定長度的unicode字元資料nnvarchar(n)變動長度的unicode字元資料本文Text存放本文資料不可建索引ntext存放unicode本文資料不可建索引影像Image存放影像資料不可建索引貨幣Money存放貨幣資料8smallmoney4時間郵戳Timestamp存放時間郵戳記憶8CREATE TABLE 資料表名稱 (欄位名稱 類型(n) NOT NULL, ); NOT NULL是指該欄必須要有值。通常主鍵(primary key)皆會指定為not null,以免造成個體完整性(entity integrity)的缺失。 CREATE TABLE employee (職員代號 INT NOT NULL Primary Key, 職員姓名 VARCHAR(30), 部門代號 CHAR(3), 年資 INT); CREATE TABLE department (部門代號 CHAR(3) not null Primary Key, 部門名稱 VARCHAR(15), 主管名稱 VARCHAR(10), 部門人數 INT);主鍵(Primary Key)的鍵值是不可以重複的,並且MS SQL Server會以叢集(Cluster)方式建立索引。叢集索引是一個B-tree結構,它是由一個根節點、一群中間節點以及一群樹葉節點所構成的平衡樹(Balance Tree),根節點和中間節點用來儲存鍵值索引,因此稱為索引頁。樹葉節點用來存放資料,稱為資料頁。B-tree的特性如下 : 1 它是一顆平衡樹,從樹根節點到樹葉的距離都相同,這表示在搜尋每一筆資料的效率都相同2 平衡樹不會因資料的增刪而嚴重影響搜尋資料的效率3 樹葉節點亦按鍵值順序,用索引指標互相連結,即表示,資料已經依鍵值大小排序好了 注意 : 要用來建立主鍵之資料行必須宣告為not null,要用來建立唯一索引(unique index)之資料行也必須宣告為not null。使用Constraint 宣告Foreign Key及 References表示該欄位值必須存在於某指定值域。Create Table Author(Au_idchar(6)Not Null Primary Key, Au_namechar(24)Not Null, Au_birthdaysmalldatetimeNot Null, Au_sexchar(2)Not Null, Provarchar(40)Not Null)Create Table Book(B_code char(9)Not Null Primary Key Clustered, B_namevarchar(30)Not Null, Au_idchar(6)Not NullConstraint FK_Book_Author1 Foreign Key References Author(Au_id), Publishervarchar(20)Not Null, BuydatesmalldatetimeNot Null)一個欄位若被定義為外來鍵(FK),表示這個欄位的資料值須要參考另外一個資料表的主要鍵建立檢視表檢視表是一種定義於資料表或檢視表的虛擬表格,建立檢視表時,系統只記錄它的定義,而不會像建立資料表般實際地在磁碟上儲存一個資料檔。當要使用檢視表時,系統才去讀取檢視表的定義,然後產生一個虛擬的檢視表並從中擷取資料。檢視表最主要的用途是限制使用者存取資料的範圍。讓不同的使用者,因不同的資料庫使用權限而看到不同範圍的資料。進而達到保護資料資料隱私性及安全性的功能。CREATE VIEW view_name (column) AsSelect_statementWith Check Option例:CREATE VIEW emp_view ASSELECT 職員代號,職員姓名FROM employee WHERE 年資 5With Check Option - 可避免更新異常現象的發生 Create View emp_view AsSelect Dept As 部門, Count(*) As 總人數, Avg(Salary) As 平均薪資, Max(Salary) As 最高薪, Min(Salary) As 最低薪From Emp A, Dept BWhere A.Dept_code = B.Dept_codeGroup By Dept檢視表的優缺點優點缺點可以用來過濾資料、隱藏資料,增加資料的安全性執行速度較慢,因為檢視表都是要用時,才經由檢視表的定義產生虛擬表可以簡化查詢,降低查詢的複雜度(將常用的查詢或複雜的查詢製作成檢視表,然後直接操作檢視表)可以增加可讀性 (另取較簡明易記的欄名)檢視表的限制1 產生檢視表的select_statement不能使用Order by、Into、Compute等子句2 對檢視表做異動(Insert、Update、Delete)時u 若檢視表沒有包含資料表的主鍵,則不能異動u 若產生檢視表的select_statement包含Distinct、彙總、Group by、Having等,則該檢視表僅供讀取而不能異動u 異動反應原始資料表時,必須符合原始資料表的條件約束u 異動反應原始資料表時,必須符合原始資料表的資料意含,不可產生更新異常現象修改資料表 - Alter Table : 指令用來修改資料表的結構,包括新增、修改、刪除資料行和新增、修改、刪除條件約束(Constraint)等l Alter TABLE(資料表名稱)增加欄位Alter TABLE table_name(ADD field type(size) |刪除欄位DROP column field_name)Alter TABLE Author-修改資料表,增加CK_sex條件約束With Check ADDConstraint CK_sex Check (Au_sex = 男or Au_sex = 女)刪除資料表 Drop Tablel Drop TABLE(資料表名稱)Drop TABLE table_nameDrop TABLE 業務員表 Drop Table不能用來刪除被Foreign Key條件約束所參照的資料表,必須先刪除Foreign Key條件約束或先刪除設定Foreign Key資料表後再刪除參考的資料表建立索引索引檔名索引欄位使用資料庫的人都知道索引的好處,但很多資料庫的宗引都是在建資料表時就同時指定好欄位,但事實上,往往在程式進行中又必須建立新的索引。SQL提供的索引指令就可以在任何時刻有效且快速的建立索引CREATE INDEX 職員代號ON employee(職員代號)建立索引與刪除索引 Create Index / Drop IndexCreate Unique Clustered | nonClustered Index 索引名稱On table | view (column ASC | DESC )Create Index Au_name_indCreate Unique Index Au_id_indOn Author (Au_name DESC)On Author(Au_id ASC)Drop Index 資料表名稱.索引名稱Drop Index Author.Au_name_ind DML(Data Manipulation Language)資料處理語言 : 用來新增、更新、查詢、或刪除資料等作業基本的指令有 SELECT、INSERT、UPDATE、DELETE。其他指令功能如下:新增資料 Insert : 若未指名的欄位,將依一對一方式將資料新增至資料表欄位內,l Insert INTO table_name field_list VALUES (value_value) 新增一筆資料到資料表時,當每一個欄位都有資料值時,可以省略欄位名稱,但資料值必須按資料表的欄位順序排列,語法如下 : INSERT INTO employeeVALUES (E0101,Chris Loo,s07,5); Insert 時可以改變欄位順序,只要欄位名稱與資料值相對應即可,允許Null值的欄位,例如:INSERT INTO employee (職員姓名, 年資, 職員代號, 部門代號)VALUES (Chris Loo ,5, E0101,s07); 將一個資料表裡 年資5的資料複製到另一資料表中Insert Into employee Select * from emp_list Where 年資 5修改資料 Update : 用來修改(更新)資料表的欄位值,若加上Where子句,則只有滿足條件的資料列才會被更改,請注意 : 若沒指定條件則會更新資料表內的全部記錄l Update 資料表名稱set fields 【where condiction】UPDATE employee SET 部門代號 = S07 WHERE 職員代號 = E0101Update employee Set 年資 = 年資 + 1 使用其他資料表來做修改 假設In_product(入庫)資料表記錄著生產完成等待入庫的產品資料,其中p01生產了100台,p03生產了200台,p05生產了300台,其語法如下 :Update productSetproduct.Inventory = product.Inventory + In_product.InventoryFrom product, In_productWhereproduct.pno = In_product.pno指定欄位時,須使用資料表名稱,不可使用別名刪除資料 Delete / Truncate : 使用Delete來刪除資料時,資料庫管理系統會將每一筆被刪除的資料列都記錄在交易記錄檔裡。而使用Truncate來刪除資料時,系統是以資料頁為刪除對象,交易記錄檔只記錄被刪除的資料頁,而不會記錄每一筆被刪除的資料列。因此,在執行時,Truncate的速度較快,Delete的速度較慢。l DELETE 資料表名稱| 檢視表名稱From table_sourceWHERE condiction使用Delete指令時,若有指定條件,則只會刪除符合條件的資料記錄,請注意 : 若沒指定條件則會刪除資料表內的全部記錄Delete From employeeWhere 職員代號 = E0101 Select * Into employee_tempFrom employeeDelete From employee_tempDelete employee_temp刪除資料表的所有資料列 Truncate 另一種移除資料列的方法Truncate Table 資料表名稱Insert Into employee_tempSelect * From employeeTruncate Table employee_temp查詢資料 Select : 用來查詢資料,Select可從資料表或檢視表擷取部份的資料列和資料行,然後以表格的型式呈現結果,這個查詢的結果稱為資料集。l SELECT 【ALL | Distinct】 Top n percent with ties 欄位名稱Into new_table FROM 資料表名稱 WHERE condictionGROUP BY expression HAVING condiction ORDER BY expression ASC|DESC Disctinct : 表示選出來的記錄若重複時,只會顯示一筆ALL : 全部顯示TOP n : 顯示前n筆Top n Percent : 顯示前n %筆WITH TIES : 指定可從基底結果集傳回的額外資料列,其值與 TOP n (PERCENT) 資料列最後項目所顯示的 ORDER BY 資料行值相同。只有在 ORDER BY 子句已指定完成後方可指定 TOP .WITH TIES。Where子句 : 用來設定查詢的條件Group By子句: 可將資料依設定的件作分組,組合成數個組別,並且使用集合函數來作分組統計(SUM、AVG、COUNT、MIN、MAX)Having子句 : 配合Group By設定查詢條件Order By子句 : 可將查詢的結果作排序 (ASC / DESC)SELECT 職員代號,職員姓名,部門代號 FROM employeeWHERE 年資 10; SELECT 貨單編號,成交月份,貨品單價,銷售數量,銷售金額FROM 銷售業績WHERE (成交月份=2 AND銷售數量20); SELECT 銷售業績.銷售地區,SUM(銷售業績.銷售數量) AS 總銷售數量FROM 銷售業績GROUP BY 銷售業績.銷售地區; Select Into(儲存至新資料表) : Select之後加上 Into 會將查詢結果存入一個新的資料表中。Select pno as a, name as b, price as c, inventory as d, price * inventory as eInto tempFrom productSelect Distinct : 當查詢的結果可能會有數筆相同的資料時,若只須顯示其中一筆,可以在Select後使用 Distinct保留字即可。Select Distinct 部門 From departmentSelect Top n | Top n Percent : Top n可以用來選取查詢結果集的前n筆資料列,而Top n Percent則表示要選取結果集的前百分之n筆資料列Select Top 2 Select Top 5 Percent From employeeFrom employeeSelect Top 20 percent with ties *from 銷售交易表order by 產品代號 - with ties 需配合order by使用Select Avg | Count | Max | Min | Sum : Select 配合彙總(Aggregate)函數(或稱聚合函數)。彙總函數的用法如下表:彙總函數傳回值Count(*)傳回資料列數,包括Null值和重復項目Count(expression)會評估資料列的expression,傳回非Null值的數目Count(all | Distinct expression)會評估資料列的expression,傳回唯一且非Null值的數目Avg(all | Distinct expression)平均值Min(expression)最小值Max(expression)最大值Sum(all | Distinct expression)加總下列為計算出product資料表之產品種類、平均單價、總價、最高單價及最低單價Use saleDB -開啟 saleDB資料庫Select Count(*) as產品種類,Avg(price) as 平均單價,Sum(price) as 總價,Max(price) as 最高單價,Min(price) as 最低單價From product Select Where(設定查詢條件) : Where子句用來設定查詢的條件,將不想要的資料列過濾掉。Wherer 常與比較運算子(=、!=、=、!、=、!=100台之產品,印產品代號、產品名稱及單價Select pno,pname,priceFrom productWhere price between 10000 and 40000And inventory = 100Select Group By(分群) : Group By子句會將滿足Where條件的資料列做分群處理,除了必須指明用那一個資料列來分群外,selece list必須使用彙總函數; Order By 將結果根據指定欄位或運算式排序計算出男女生的總人數Select S_sex, Count(*) as 人數From studentGroup By S_sex Order By 人數Select Having(設定群組或彙總的條件) : Having用來對Group By的結果作進一步的篩選Select Pno,Sum(Amount) 出貨數量- 省略 as 子句From OrderlistGroup By PnoHaving Sum(Amount) 100Select Join(聯結) : 聯結(Join)用來從兩個資料表中擷取資料。每一個聯結都會牽涉到兩個資料表,它以其中一個資料行(通常是主鍵)為基礎,與另一個資料表的資料行(通常是外來鍵)相互聯結來選取另一個資料表裡的資料。SQL的關聯能力關聯式資料庫最主要的特性,就是它具有關聯多個資料表的能力,例如上面所建立的employee與department兩個資料表。若要同時顯示兩個資料表的欄位資料,則必需在兩個資料表內有一個共同資料類型的欄位作關連,才能同時顯示資料。這兩個資料表中的部門代號為 department的主鍵(primary key),亦為employee的外來鍵(foreign key),因此可以建立關聯。SELECT department.部門名稱, employee.職員姓名, department.主管名稱FROM department, employee建立關聯 WHERE department.部門代號 = employee.部門代號; 聯結的型態有三種 : 1 內部聯結(Inner Join) : 聯結時只選取符合聯結條件(join_condition)的資料列,不符合聯結條件的資料列將被捨棄2 外部聯結(Outer Join) : 聯結時無論是否符合聯結條件,其中某一個資料表的所有滿足Where條件的資料列都要選取左資料表滿足Where條件的所有資料列都要選取之聯結稱為左外部聯結。反之,右資料表滿足Where條件的所有資料列都要選取之聯結稱為右外部聯結。外部聯結時,沒有資料的一方將用Null來替代。完全外部聯結(Full Join)則要選取左右兩資料表中滿足Where條件的所有資料列。3 交叉聯結(Cross Join) : 左資料表的每一資料列都要與右資料表的每一資料列聯結此即關聯式資料模式之卡笛生乘積。換言之,若左資料表有m筆資料列,右資料表有n筆資料列,做交叉聯結後之結果集將會有mxn筆資料列。當然,未符合Where條件者將被剔除。 內部聯結(Inner Join) : 用內部聯結找出同時在台北及台中都有銷售的產品及其銷售數量Select 台北_ as 台北, 台北_sale.Amount as 台北銷售量, 台中_ as 台中, 台中_sale.Amount as 台中銷售量 From 台北_sale INNER JOIN 台中_SALEON 台北_ = 台中_以From台北_sale Inner Join 台中_sale來指明台北_sale為左資料表,台中_sale為右資料表,兩者要做Inner Join以ON台北_ = 台中_為聯結條件,來指明要的是台北及台中都有銷售的產品上述SQL可改寫成 : Select 台北_ as 台北, 台北_sale.Amount as 台北銷售量, 台中_ as 台中, 台中_sale.Amount as 台中銷售量 From 台北_sale JOIN 台中_SALEON 台北_ = 台中_Select 台北_ as 台北, 台北_sale.Amount as 台北銷售量, 台中_ as 台中, 台中_sale.Amount as 台中銷售量 From 台北_sale, 台中_SALEWhere 台北_ = 台中_左外部聯結(Left Join 或 Left Outer Join)下列SQL將找出在台北銷售的產品及其銷售量,若台北銷售的產品在台中也有銷售的話亦一併列出台中的銷售情形Select 台北_ as 台北, 台北_sale.Amount as 台北銷售量, 台中_ as 台中, 台中_sale.Amount as 台中銷售量 From 台北_sale LEFT JOIN 台中_SALEON 台北_ = 台中_左資料表的資料會全部列出,而右半邊的資料,若沒有銷售資料,其相關欄位值用Null來表示。Left Join也可以寫成 Left Outer Join,此外也可以在Where子句中用*=來代表左外部聯結,因此可改寫成 : Select 台北_ as 台北, 台北_sale.Amount as 台北銷售量, 台中_ as 台中, 台中_sale.Amount as 台中銷售量 From 台北_sale, 台中_SALEWHERE 台北_ *= 台中_右外部聯結(Right Join 或 Right Outer Join)下列SQL將找出在台中銷售的產品及其銷售量,若台中銷售的產品在台北也有銷售的話亦一併列出台中的銷售情形Select 台北_ as 台北, 台北_sale.Amount as 台北銷售量, 台中_ as 台中, 台中_sale.Amount as 台中銷售量 From 台北_sale Right JOIN 台中_SALEON 台北_ = 台中_右資料表的資料會全部列出,而左半邊的資料,若沒有銷售資料,其相關欄位值用Null來表示。Right Join也可以寫成 Right Outer Join,此外也可以在Where子句中用=*來代表右外部聯結,因此可改寫成 : Select 台北_ as 台北, 台北_sale.Amount as 台北銷售量, 台中_ as 台中, 台中_sale.Amount as 台中銷售量 From 台北_sale, 台中_SALEWHERE 台北_ =* 台中_完全外部聯結(Full Outer Join或Full Join)上列SQL指令將列出在台北、台中銷售的所有產品及其銷售量,沒有相對應的產品則都以Null值表示Select 台北_ as 台北, 台北_sale.Amount as 台北銷售量, 台中_ as 台中, 台中_sale.Amount as 台中銷售量 From 台北_sale Full JOIN 台中_SALEON 台北_ = 台中_交叉聯結(Cross Join)Select 台北_ as 台北, 台北_sale.Amount as 台北銷售量, 台中_ as 台中, 台中_sale.Amount as 台中銷售量 From 台北_sale Cross JOIN 台中_SALE左資料表的每一筆資料皆會對應到右資料表內的每一筆資料,所以其執行結果將會是 n*m筆, 也可改寫成 :Select 台北_ as 台北, 台北_sale.Amount as 台北銷售量, 台中_ as 台中, 台中_sale.Amount as 台中銷售量 From 台北_sale, 台中_SALE聯結的應用從BookDB資料庫,找出旗標版的書籍及其作著資料Select B_name,Au_name,PublisherFrom Book Join Auhtor- 省略 InnerOn Book.Au_id = Auhtor.Au_idWhere Publisher = 旗標從SaleDB資料庫印出2002年12月10日的出貨清單,該清單須包含訂單編號、客戶名稱、產品代號、產品名稱、出貨數量等欄位,並依訂單編號、客戶名稱、產品代號遞增之順序列出資料。下列SQL指令,Cast為一個型態轉換函數Select A.Ono As 訂單編號, B.Name As 客戶名稱, C.Pno As 產品代號, D.Name 產品名稱, C.Amount 出貨數量Cast(Ddate As Char(10) As 出貨日期From Orders A, Customer B, Orderlist C, Product DWhere Cast(Ddate As Char(10) = 12 10 2002And A.Cno = B.CnoAnd A.Ono = C.CnoAnd C.Pno = D.PnoOrder By 1,2,3 從SaleDB資料庫,印出每一項產品的總出貨量報表,該報表須包含產品代號、產品名稱、總出貨量等欄位,並依產品代號、產品名稱來分群及遞增排序。Select A.Pno As 產品代號, B.Name As 產品名稱, Sum(Amount) As 總出貨量From Orderlist A, Product BWhere A.Pno = B.PnoGroup By A.Pno, B.NameOrder By 1,2- 預設為 asc 遞增用來做Group By運算式必須使用出現於Select選取清單中的資料行名稱,也不可用別名Union(聯集) : 用來將多個查詢的結果合併為一個結果集Select Name From 台北_SaleUnion - 合併多個查詢結果時會將重複資料列移除Select Name From 台中_SaleSelect Name From 台北_SaleUnion All - 重複的資料列仍然會被列印出來 Select Name From 台中_Sale子查詢(Subquery) : 子查詢的結果可能是單一資料值或是一資料清單。經常與子查詢一起使用的句子In、Any、All、Not Exist、及運算子(=、!=、=、!、=、! (Select Avg(Inventory)From Product)Order By InventoryIn在子查詢的應用 : 找出本次沒有入庫的產品及其現有庫存量Select Pno, Name, InventoryFrom ProductWhere Pno Not In (Select Pno From In_Product)找出那些同學向圖書館借了旗標出版的書籍Select s_name from student Where S_id In (Select S_idFrom LoanWhere B_code In (Select B_codeFrom BookWhere Publisher = 旗標) Any在子查詢的應用 : 找出同時在台北及台中及有銷售交易的產品及其銷售量 Select Name, A.AmountFrom 台北_sale AWhere Name = Any (Select NameFrom 台中_sale B)Exist在子查詢的應用 : 找出同時在台北及台中及有銷售交易的產品及其銷售量Select Name, A.amountFrom 台北_sale AWhere Exists (Select * From 台中_sale BWhere A.Name = B.Name)All在子查詢的應用 : 台北銷售量高於台中銷售冠亞軍之產品及其銷售量Select Name, A.amountFrom 台北_sale AWhere A.amount All (Select Top 2 AmountFrom 台中_sale BOrder By Amount DESC)差集(Different) : (A B)Select

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论