Download presentation
Presentation is loading. Please wait.
Published by蝶 繁 Modified 8年之前
1
SQL 指令應用介紹
2
何謂 SQL SQL 是「結構化查詢語言」 ( S tructured Q uery L anguage )的簡稱, 讀作「 Ess Que Ell 」或「 sequel 」。 SQL 最初是由 IBM 的研究中心在 1970 年代初期 所開發的,是專門用於關連式資料庫的一種查詢 語言。 利用 SQL 可以用來定義資料庫結構、建立表格、 指定欄位型態與長度,也能新增、異動或查詢資 料,它已經成為關聯式資料庫的標準語言。
3
查詢語言的標準 SQL 的標準化作業,主要是由 ANSI (美國國家 標準學會)與 ISO (國際標準組織)這兩個組織 所推動的。 最初是在 1986 年由 ANSI 制定其標準化規格,隨 後在 1992 年時再推出更新的版本,就是所謂的 「 SQL-92 」、「 SQL/92 」或「 SQL2 」。目前, 新一代的規格仍在持續發展中,即「 SQL-99 」規 格。 一般稱之為 ANSI-92
4
SQL 的普及性 資料庫廠商 –Microsoft Access for Windows – 現今市面上所有關聯性資料庫軟體幾乎都支援 SQL 。 – 市面上關聯性資料庫軟體例如: Oracle 、 Sybase 、 DB2 、 Microsoft SQL Server 。 Microsoft SQL Server 所使用的 SQL 稱之為 Transact-SQL (T-SQL) ,它強化了原有的 SQL 功能。
5
SQL 的分類 資料定義語言 ( Data Definition Language , DDL ) – 可以用來建立、更改或刪除 table 、 schema 、 domain 、 index 與 view 。 – 主要指令有三: CREATE 、 ALTER 與 DROP 。 資料操作語言 ( Data Manipulation Language , DML ) –DML 係用來操作資料。 – 主要指令有四: SELECT 、 INSERT 、 UPDATE 和 DELETE 。 資料控制語言 ( Data Control Language , DCL ) – DCL 提供資料庫的安全性。 – 主要指令有四: GRANT 和 REVOKE 、 COMMIT 、 ROLLBACK 。
6
資料表 (Tables) 在關聯式的資料庫系統中,表格是存放資料的地方。 在表格中,橫向的資料我們稱之為行 (Row) ,其意義 是一筆資料錄 (Record) ; 而縱向的資料我們稱之為欄位 (Column) ,其意義是在 同一表格中具有相同屬性的資料集合。
7
檢視表 (Views) 所謂的 VIEW 物件是從一個或多個實際儲存資料 的表格中所衍生出來的 可將它想像成只是一個定義在表格上的虛擬表格 而被 VIEW 參考使用到的表格則稱之為基底表格
8
Table 之間的關聯 Products 表格的 –PK(Primary Key 主鍵 ) 是 Prod_num+supp_code –FK(Forgien Key 外鍵 ) 是 supp_code Suppliers 表格的 –PK(Primary Key 主鍵 ) 是 supp_code 想查詢各產品的供應商名稱 – 必須將 Products 表格 FK 與 Suppliers 表格 PK 作串聯關係,才能將 供應商名稱 (supp_name) 找到。
9
SQL 基本語法 語法的四大基本敘述: –Select 敘述 –Updae 敘述 –Insert 敘述 –Delete 敘述
10
SELECT 敘述(選取查詢) 語法: SELECT {field list} FROM {table} WHERE {criteria} ORDER BY {order field list} 範例: SELECT StuID, Cname, Sex FROM USTD83A WHERE Dep="332" and Grade="2" ORDER BY StuID
11
關聯性 SELECT 語法: SELECT {field list} FROM {table1} INNER JOIN {table2} ON {table1.field} = {table2.field} WHERE {criteria} 範例: SELECT UCHC83A.StuID, USTD83A.Cname FROM UCHC83A INNER JOIN USTD83A ON UCHC83A.StuID= USTD83A.StuID WHERE UCHC83A.Crsno = "1589"
12
UPDATE 敘述(修改資料) 語法: UPDATE {table} SET {field} = new value WHERE {criteria} 範例: UPDATE USTD83A SET Grade = Grade + 1 WHERE Grade = 4
13
INSERT 敘述(新增資料) 語法: INSERT INTO {table} VALUES (new value) 範例: INSERT INTO ZIPCODE VALUES (“111”, “ 士林區 ”, “ 台北市 ")
14
DELETE 刪除資料(修改資料) 語法: DELETE FROM {table} WHERE {criteria} 範例: DELETE FROM USTD83A WHERE Grade = 4
15
聚合函數 一個您可以用來計算合計的函數, 例如 Sum 、 Count 、 Avg 及 Max 。 在撰寫運算式及在程式設計時,您可以使 用 SQL 聚合函數 及範圍聚合函數來計算各 種統計值。
16
SQL 指令實例介紹 進階 Select 查詢指令
17
基本的 Select 指令 SELECT ProductID, Name, ListPrice FROM Production.Product WHERE ListPrice > $40 ORDER BY ListPrice ASC
18
透過 AS 子句可指派別名給結果集資料行 USENorthwind SELECTCategoryName AS ' 產品名稱 ', Description AS ' 說明 ' FROM dbo.Categories
19
排序資料 (ORDER BY) SELECTcategoryid ' 產品類別代號 ',productname,unitprice ' 單價 ' FROMNorthWind.dbo.products ORDER BY unitprice ASC
20
移除重複的資料列 (DISTINCT) 使用 DISTINCT 關鍵字列出不重複的 Title 資料列 SELECT DISTINCT Title FROM AdventureWorks.HumanResources.Employee ORDER BY Title
21
使用運算式計算的結果 SELECT OrderID ' 訂單編號 ',ProductID ' 產品編號 ', (UnitPrice*Quantity)*(1-Discount) ' 總金額 ' FROM Northwind.dbo.[Order Details] Order By 3 DESC
22
透過 GETDATE() 系統函數取得當下執行的 日期與時間,並透過運算子示範加減日期。 SELECT GETDATE() ' 今天 ',GETDATE()+1 ' 明天 ',GETDATE()-2 ' 前天 '
23
加號「 + 」運用在字串與數值運算式中的執行結果 USE AdventureWorks; SELECT FullName=c.FirstName+'.'+c.LastName, VacationHours, SickLeaveHours, 休假總時數 =VacationHours + SickLeaveHours FROM HumanResources.Employee AS e JOIN Person.Contact AS c ON e.ContactID = c.ContactID ORDER BY 休假總時數 ASC
24
資料型別不同的資料無法計算 SELECT ProductID,Name,04+ProductNumber FROM AdventureWorks.Production.Product p
25
透過 CONVERT 轉換函數,將數值資料轉換 為字串型別,則兩個相同型別的字串即可相加 SELECT ProductID,Name,convert(nvarchar,'04')+ProductNumber FROM AdventureWorks.Production.Product p
26
查詢國家欄位內容為 USA 的員工資料 USE NorthWind SELECT country,city,lastname FROM employees WHERE country='USA'
27
透過不等運算子傳回所有位在 USA 以外的員工資料 USE NorthWind SELECT country,city,lastname FROM employees WHERE country<>'USA'
28
透過不等運算式找出庫存量大於 100 的產品資料 USE NorthWind SELECT ProductName,UnitPrice,UnitsInStock FROM dbo.Products WHERE UnitsInStock>110
29
使用萬用字元 SELECT Phone FROM AdventureWorks.Person.Contact WHERE Phone like '415%' SELECT Phone FROM AdventureWorks.Person.Contact WHERE Phone = '415%' ------------------------------------------------- USE AdventureWorks select distinct City, PostalCode from Person.Address where PostalCode LIKE '[A-E][A-Z][0-9][0-9]' GO
30
使用邏輯運算子 (AND 、 OR 與 NOT ) SELECT ProductID, ProductModelID, Color FROM AdventureWorks.Production.Product WHERE ProductModelID = 20 OR ProductModelID = 21 AND Color = 'Red' SELECT ProductID, ProductModelID, Color FROM AdventureWorks.Production.Product WHERE (ProductModelID = 20 OR ProductModelID = 21) AND Color = 'Red'
31
取回指定範圍內的資料 ( 使用 BETWEEN AND 關鍵字 ) SELECT ProductID, Name,ListPrice FROM AdventureWorks.Production.Product WHERE ListPrice BETWEEN 20 AND 25
32
使用清單當做搜尋條件 ( 使用 IN 關鍵字 ) USE Northwind SELECT companyname,country From suppliers WHERE country IN ('Japan','Italy','UK','Australia')
33
使用彙總函數 SELECT SUM(Quantity) as ' 訂購總數 ', COUNT(Quantity) as ' 訂單筆數 ', AVG(Quantity) as ' 平均數量 ', MIN(Quantity) as ' 單筆訂購最小值 ', MAX(Quantity) as ' 單筆訂購最大值 ' FROM Northwind.dbo.[Order Details] WHERE ProductID=51
34
列出前 N 筆資料 SELECT TOP (5) EmployeeID,count(EmployeeID) 訂單數量 FROM northwind.dbo.Orders GROUP BY EmployeeID ORDER BY 訂單數量 DESC
35
關連多個資料表 SELECT a.EmployeeID, LastName, FirstName, OrderDate FROM Employees a LEFT JOIN Orders b ON a.EmployeeID = b.EmployeeID
36
使用 SELECT INTO SELECT * INTO TT FROM ( SELECT companyname,country From suppliers WHERE country IN ('Japan','Italy','UK','Australia') ) TT1
37
使用 Truncate 與 Drop TRUNCATE TABLE TT DROPTABLETT
Similar presentations