數(shù)據(jù)庫查詢語句_第1頁
數(shù)據(jù)庫查詢語句_第2頁
數(shù)據(jù)庫查詢語句_第3頁
數(shù)據(jù)庫查詢語句_第4頁
數(shù)據(jù)庫查詢語句_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、數(shù)據(jù)庫操作歸納SqlServer數(shù)據(jù)庫操作語句(步驟):1. 新建數(shù)據(jù)庫:create database 數(shù)據(jù)庫名稱 ; 例:create database LianXi;use 數(shù)據(jù)庫名稱 ; 例:use LianXi;2. 新建表:create table 表名稱(屬性名/字段名 屬性/字段類型 identity(1,1) primary key not null,屬性名/字段名 屬性/字段類型 not null,屬性名/字段名 屬性/字段類型);例:create table yonghu(uid int identity(1,1) primary key not null,uname c

2、har(10) not null,upass char(10) not null,gender char(2),shouru int,birthday datetime,note text );3. 查詢數(shù)據(jù) : 基本查詢:-簡單查詢- select * from 表名稱; 例:select * from yonghu; SELECT DISTINCT 表中字段名 AS 字段名別名, YEAR(GETDATE()-YEAR(字段名如生日) AS 如年齡FROM 表名例:select distinct uname as 姓名 , year(getdate()-year(birthday) as

3、年齡 from yonghu; 如下圖所示: SELECT COUNT(*) AS 總數(shù) FROM 表名 -獲取表中行的總數(shù)例:select count(*) as 總數(shù) from yonghu;SELECT AVG(字段名) AS 平均值 FROM 表名 -獲取平均值例:select avg(shouru) as 平均收入 from yonghu;-帶條件查詢-條件表達式:可以是單表的條件表達式,又可以是多表之間的條件表達式。比較符:=(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、<>(不等于) 例:在用戶表中,列出

4、收入在2000元以上的員工記錄SELECT * FROM yonghu WHERE shouru > 2000; 例:在用戶表中,查出男用戶的平均收入SELECT AVG(shouru) AS 平均收入 FROM yonghu WHERE gender=男; 例:某表如employee表,查詢出市場部和銷售部的員工名單SELECT d.employee_name, e.employee_name FROM employee.e INNER JOIN department d ON e.department_id = d.department_id WHERE d.department_n

5、ame IN (市場部,銷售部)-或-SELECT d.employee_name, e.employee_name FROM employee.e INNER JOIN department d ON e.department_id = d.department_id WHERE (d.department_name = 市場部) OR (d.department_name = 銷售部 ) 對yonghu表,查出月工資在2000-3000元之間的員工名單SELECT * FROM yonghu WHERE shouru BETWEEN 2000 AND 3000-或-SELECT * FRO

6、M yonghu WHERE shouru >= 2000 AND shouru <= 3000 對yonghu 表,查出所有姓“張”的員工名單SELECT * FROM yonghu WHERE uname LIKE 張%-或-SELECT * FROM yonghu WHERE LEFT(uname,1) = 張 -查詢結果處理- 排序輸出(ORDER BY) -ASC:(默認) 按升序排列;DESC:按降序排列SELECT uid,uname,upass, shouru FROM yonghu ORDER BY gender , shouru DESC 重定向輸出(INTO)

7、INTO子句用于把查詢結果放到一個新建的表中例:某表如,對部門表department和員工表employee,查詢出市場部所有員工的信息,并將結果存入newtable中。SELECT employee.* INTO newtable FROM employee INNER JOIN department ON employee .department_id = department.department_id WHERE department.department_name = 市場部 輸出合并(UNION)合并查詢就是使用UNION操作符將來自不同查詢的數(shù)據(jù)組合起來,形成一個具有綜合信息的查

8、詢結果,UNION操作會自動將重復的數(shù)據(jù)剔除。必須注意的是,參加合并查詢的各子查詢使用的表結構應該相同,即各子查詢中的數(shù)據(jù)數(shù)目和對應的數(shù)據(jù)類型都必須相同。 例:對某表:如employee表,列出部門編號為D001或D002的所有員工姓名SELECT employee_name,department_id FROM employee WHERE department_id = D001UNION SELECT employee_name,department_id FROM employee WHERE department_id = D002 如下圖示 分組統(tǒng)計(GROUP BY)與篩選(HA

9、VING)例:對某表,如對employee表,分別統(tǒng)計男女員工人數(shù)SELECT sex,COUNT(sex) as 人數(shù) FROM employee GROUP BY sex 如下圖所示例:某表,如對employee表,分別統(tǒng)計個部門男女員工的人數(shù)SELECT department_id,sex,COUNT(*) AS 人數(shù) FROM employee GROUP BY department_id,sex 如下圖所示例:某表,如對employee表,查出部門平均工資大于2000元的部門編號SELECT department_id,AVG(wages) AS 平均工資FROM employee

10、GROUP BY department_id HAVING AVG(wages)>=2000 使用COMPUTE和COMPUTE BY子句匯總:使用COMPUTE子句可以在查詢的結果集中產生成匯總行的同時,還生成明細行,可以計算子組的匯總值。使用COMPUTE BY子句可以對結果集數(shù)據(jù)進行分組統(tǒng)計,即計算分組的匯總值。例:某表,如對employee表中部門編號臥位D001的員工工資,按照其部門編號生成匯總行和明細行SELECT department _id ,wages FROM employee WHERE department_id = D001ORDER BY department

11、_id COMPUTE sum(wages) 如下圖所示例:某表,如對employee表中的部門編號為D001或D002的員工工資,按照其部門編號生成分組匯總行和明細行SELECT department_id,wages FROM employee WHERE department_id = D001OR department_id = D002 ORDER BY department_id COMPUTE sum(wages) BY department_id 如下圖所示 嵌套查詢:(由里向外處理。子查詢的SELECT語句中不能使用ORDER BY子句,ORDER BY子句只能對最終查詢結果

12、排序) 單值嵌套查詢-子查詢的返回結果是一個值的嵌套查詢例:某表,如對Sales數(shù)據(jù)庫,查詢出市場部的所有員工的編號SELECT employee_id FROM employee WHERE department_id = (SELECT department_id FROM department WHERE department_name=市場部) 多值嵌套查詢-子查詢的返回結果是一列值的嵌套查詢 a. ANY運算符用法:例:某表,如對Sales數(shù)據(jù)庫,列出D001號部門中工資比D002號部門的員工最低工資高的員工和工資SELECT employee_id,wages FROM emplo

13、yee WHERE department_id = D001AND wages>ANY (SELECT wages FROM employee WHERE department_id = D002)b. All運算符的用法:例:某表,如對Sales數(shù)據(jù)庫,查詢出部門編號為D001的員工,這些員工的工資比部門為D002的員工的最高工資還要高的員工的編號和工資。SELECT employee_id,wages FROM employee WHERE department_id =D001AND wages>All(SELECT wages FROM employee WHERE dep

14、artment_id =D002) c. IN運算符的用法:例:某表,如對Sales數(shù)據(jù)庫,列出部門為市場部或銷售部的所有員工的編號SELECT employee_id FROM employee WHERE department_id IN (SELECT department_id FROM department WHERE department_name = 市場部 OR department_name=銷售部) 連接查詢:(通過連接運算符可以實現(xiàn)多個表查詢。連接是關系數(shù)據(jù)庫模型的主要特點,也是它區(qū)別于其它類型數(shù)據(jù)庫管理系統(tǒng)的一個標志。)例:某表,如對Sales數(shù)據(jù)庫輸出所有員工的銷售單

15、,要求給出員工編號、姓名、商品編號、商品名和銷售數(shù)量。SELECTemployee.employee_id,employee.employee_name,goods.goods_id,goods.goods_name,sell_order.order_num FROM employee,sell_order,goods WHERE employee.employee_id = sell_order.employee_id and sell_order.goods_id = goods.goods_id 如下圖所示 內連接a. 等值連接:在連接條件中使用等號(=)運算符比較被連接列的列值,按對應

16、列的共同值將一個表中的記錄與另一個表中的記錄相連接,包括其中的重復列。例:某表,如Sales數(shù)據(jù)庫中部門表department和員工表employee的等值連接。SELECT * FROM department INNER JOIN employee ON employee.department_id = department.department_idb. 不等值連接:在連接條件中用除等于(=)運算符以外的其他比較運算符比較被鏈接的列的列值。這些運算符包括>、>=、<=、<、!>、!<和<>。例:某表,如Sales數(shù)據(jù)庫,列出銷售G00001產

17、品的員工中,銷售數(shù)量大于編號為E001的員工銷售該類產品銷售數(shù)量的那些員工的編號和銷售數(shù)量。SELECT a.employee_id,a.order_num FROMsell_order a INNER JOIN sell_order b ON a.order_num> b.order_num AND a.goods_id = b.goods_id WHERE(b.goods_id = G00001)AND (b.employee_id = E001)c. 自然連接:在連接條件中使用等于(=)運算符比較被連接列的列值,它使用選擇列表方式來指出查詢結果集合中所包括的列,并刪除連接表中的重復

18、列。例:某表,如Sales數(shù)據(jù)庫中部門表department和員工表employee的自然連接。SELECT a.department_name,b.*FROM department a INNER JOIN employee b ON b.department_id = a.department_id 外連接:在內連接查詢時,返回查詢結果集合中的僅是符合查詢條件(WHERE搜索條件或HAVING條件)和連接條件的行。而采用外連接時,它返回到查詢結果集合中的不僅包含符合連接條件的行,而且還包括左表(左外連接時)、右表(右外連接時)或兩個連接表(全外連接)中的所有數(shù)據(jù)行。a. 使用作外連接:左外

19、連接通過左向外連接引用左表的所有行。例:某表,如員工表employee做外連接銷售表sell_order.SELECTa.employee_id,a.employee_name,b.goods_id,b.order_num,b.send_date FROM employee a LEFT OUTER JOIN sell_order b ON a.employee_id = b.employee_id 如圖所示b. 使用右外連接:右外連接通過右向外連接引用右表的所有行例:某表,如員工表employee右外連接銷售表sell_order。為了說明方便,先在sell_order表中插入一條銷售信息。

20、INSERT INTO sell_order(order_id1,goods_id,employee_id,customer_id,transporter_id,order_num,discount,order_date,send_date,arrival_date,cost)VALUES(S0006,G0005,C0006,T0002,21,0.5,GETDATE(),GETDATE(),100)SELECT a.employee_id,a.employee_name,b.goods_id,b.order_num,b.send_date,b.order_id1 FROM employee a

21、 RIGHT OUTER JOIN sell_order b ON a.employee_id = b.employee_idb. 使用全外連接全外連接返回兩個表的所有行。不管兩個表的行是否滿足連接條件,均返回查詢結果集。對不滿足連接條件的記錄,另一個表相對應字段用NULL代替。SELECT a.employee_id,a.employee_name,b.goods_id,b.order_num,b.send_date,b.order_id1 FROM employee a FULL OUTER JOIN sell_order b ON a.employee_id = b.employee_i

22、d 如下圖所示 交叉連接:交叉連接不帶WHERE子句,它返回被連接的兩個表所有數(shù)據(jù)行的笛卡爾積,返回到結果集合中的數(shù)據(jù)行數(shù)等于第一個表中符合查詢條件的數(shù)據(jù)行數(shù)乘以第二個表中符合查詢條件的數(shù)據(jù)行數(shù)。例:SELECT a.department_id,a.department_name,b.employee_id,b.employee_name FROM department a CROSS JOIN employee b 如下圖所示 4插入數(shù)據(jù)INSERT INTO 表名 (屬性1,屬性2,屬性3,) VALUES (屬性值1,屬性值2,屬性值3,) 。注:into 可省略。例:INSERT IN

23、TO yonghu (uname,upass) VALUES ('土豆','321');5. 刪除數(shù)據(jù)DELETE FROM 表名 WHERE 條件例:DELETE FROM yonghu WHERE uid=1;例:在DELETE中使用聯(lián)接或子查詢某表操作,如下:-基于Transact-SQL,使用表的聯(lián)接DELETE Sell_Order FROM Sell_Order SO INNER JOIN customer2 C ON SO.customer_id = C.customer_id WHERE C.address LIKE 東方市% 注:SO,C均為別名-等同于下列命令DELETE Sell_Order FROM Sell_Order SO,customer2 C WHERE SO.customer_id = C.customer_id AND C.address LIKE 東方市%-基于SQL-92標準,須使用子查詢DELETE FROM Sell_Order WHERE customer_id IN (SELECT customer_id FROM customer2 WHERE address LIKE 東方市%)6. 更新數(shù)據(jù)UPDATE 表名 SET 屬性名=屬性值,屬性名=屬

溫馨提示

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

評論

0/150

提交評論