mysql多表操作及練習(xí)筆記_第1頁
mysql多表操作及練習(xí)筆記_第2頁
mysql多表操作及練習(xí)筆記_第3頁
mysql多表操作及練習(xí)筆記_第4頁
mysql多表操作及練習(xí)筆記_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、mysql多表操作與練習(xí)數(shù)據(jù)庫備份與恢復(fù)u 數(shù)據(jù)庫備份u 數(shù)據(jù)庫恢復(fù)多表操作u 多表設(shè)計u 外鍵介紹與創(chuàng)建u 多表查詢介紹u 多表查詢-內(nèi)連接u 多表查詢-外連接u 多表查詢-子查詢SQL練習(xí)【內(nèi)容:數(shù)據(jù)庫備份與恢復(fù)】數(shù)據(jù)庫備份數(shù)據(jù)庫的備份是指將數(shù)據(jù)庫轉(zhuǎn)換成對應(yīng)的sql文件。數(shù)據(jù)庫導(dǎo)出sql腳本的命令如下:l mysqldump u用戶名 p密碼 數(shù)據(jù)庫名>生成的腳本文件路徑;以上備份數(shù)據(jù)庫的命令中需要用戶名和密碼,即表明該命令要在用戶沒有登錄的情況下使用數(shù)據(jù)庫恢復(fù)數(shù)據(jù)庫的恢復(fù)指的是使用備份產(chǎn)生的sql文件恢復(fù)數(shù)據(jù)庫,即將sql文件中的sql語句執(zhí)行就可以恢復(fù)數(shù)據(jù)庫內(nèi)容。因為數(shù)據(jù)庫備份只

2、是備份了數(shù)據(jù)庫內(nèi)容,所以備份產(chǎn)生的sql文件中沒有創(chuàng)建數(shù)據(jù)庫的sql語句,在恢復(fù)數(shù)據(jù)庫之前需要自己動手創(chuàng)建數(shù)據(jù)庫。l 在數(shù)據(jù)庫外恢復(fù)mysql -u root -p 數(shù)據(jù)庫名 < 文件路徑注意:要求數(shù)據(jù)庫必須先創(chuàng)建出來.l .在數(shù)據(jù)庫內(nèi)恢復(fù)source SQL腳本路徑:使用這種方式恢復(fù)數(shù)據(jù),首先要登錄數(shù)據(jù)庫【重點總結(jié)】備份Mysqldump u root p abc mydb>c:/mydb.sql恢復(fù)1. mysql u root p mydb<c:/mydb.sql2. source c:/mydb.sql掌握多表設(shè)計掌握外鍵的作用及創(chuàng)建方式了解多表查詢原理及迪卡爾積掌握

3、內(nèi)連接掌握外連接掌握子查詢【內(nèi)容:多表操作】多表設(shè)計當(dāng)我們要完成一個軟件系統(tǒng)時,需要把系統(tǒng)中的實體抽取出來,形成概念模型。例如部門、員工都是系統(tǒng)中的實體。概念模型中的實體最終會成為Java中的類、數(shù)據(jù)庫中的表。今天我們需要了解的概念模型包括以下兩個:l 對象模型:針對java中的實體類,例如我們之前學(xué)習(xí)的domain層中的User類等;l 關(guān)系模型:對應(yīng)數(shù)據(jù)庫中的表。在java中有以下三個關(guān)系描述:l is a:例如貓是動物,表示繼承關(guān)系;l has a:例如人有兩只手,表示的是類與成員的關(guān)系;l use a:表示類與方法之間的關(guān)系;我們今天主要關(guān)注的是第二個關(guān)系:類與成員的關(guān)系。這種關(guān)聯(lián)關(guān)系

4、可以分為如下三種:l 一對一關(guān)聯(lián):例如身份證與人就是一對一的關(guān)系,一個人只有一個身份證,一個身份證號只屬于一個人。l 一對多關(guān)聯(lián):例如用戶與訂單,一個用戶可以擁有多個訂單,多個訂單可以屬于同一個用戶,這是一個很明顯的一對多關(guān)聯(lián)。l 多對多關(guān)聯(lián):例如商品與訂單,一個訂單中可以包含多個商品,而一個商品也可以存在于多個訂單中,這就是一個多對多關(guān)聯(lián)。概念模型在java中對應(yīng)這實體類,在實體類中使用成員變量完成關(guān)聯(lián)關(guān)系,而且一般都是雙向關(guān)聯(lián),以下是java中實體類與成員之間的關(guān)聯(lián)關(guān)系,如下所示:一對一關(guān)聯(lián)/身份證類 一的一方public class IDCard private Person perso

5、n; /身份證關(guān)聯(lián)人類 一對一/人類 一的一方public class Person private IDCard idcard; /人類關(guān)聯(lián)身份證類 一對一一對多關(guān)聯(lián)/用戶 一的一方public class User private List<Order> orders; /用戶可以有多個訂單,在用戶中關(guān)聯(lián)訂單/訂單 多的一方public class Order private User user; /多個訂單可以屬于一個用戶 ,在訂單中關(guān)聯(lián)用戶 多對多關(guān)聯(lián)/ 訂單 多的一方public class Order private List<Product> produc

6、ts; /訂單中可以包含多個商品,訂單關(guān)聯(lián)商品/ 商品 多的一方public class Product private List<Order> orders; /一個商品可以包含在多個訂單中 在商品關(guān)聯(lián)訂單外鍵約束概念模型在數(shù)據(jù)庫中就對應(yīng)數(shù)據(jù)表,那么表與表之間的關(guān)系也包括:一對一,一對多,多對多。而表與表之間關(guān)系是通過外鍵來維護的。外鍵約束特性如下:l 外鍵必須是另一表或自身表的主鍵的值;l 外鍵可以重復(fù);l 外鍵可以為空;l 一張表中可以有多個外鍵。表之間關(guān)聯(lián)關(guān)系l 一對一person表CREATE TABLE person(id INT PRIMARY KEY AUTO_IN

7、CREMENT, NAME VARCHAR(20) - 姓名)idcard表CREATE TABLE idcard(id INT PRIMARY KEY AUTO_INCREMENT,num VARCHAR(20) - 身份證號)上述是我們創(chuàng)建的person表與idcard表,它們之間是一對一關(guān)系,那么我們怎樣來描述一個人只有一個身份證,而一個身份證只能屬于一個人哪?我們只需要在任意一張表中添加一個外鍵字段,與主表中的主鍵字段對應(yīng)就可以描述其一對一的關(guān)系。person表CREATE TABLE person(id INT PRIMARY KEY AUTO_INCREMENT, NAME VAR

8、CHAR(20), - 姓名idcard_id int)idcard表CREATE TABLE idcard(id INT PRIMARY KEY AUTO_INCREMENT,num VARCHAR(20), - 身份證號pid int)l 一對多用戶表CREATE TABLE USER(id INT PRIMARY KEY AUTO_INCREMENTNAME VARCHAR(20)訂單表CREATE TABLE orders(id INT PRIMARY KEY AUTO_INCREMENT,price DOUBLE,)上述是訂單與用戶表,一個用戶是可以有多個訂單的,它們是很明顯的一個一

9、對多(多對一)的關(guān)系,那么我們怎樣在表中描述它們的對應(yīng)關(guān)系。CREATE TABLE USER(id INT PRIMARY KEY AUTO_INCREMENTNAME VARCHAR(20)CREATE TABLE orders(id INT PRIMARY KEY AUTO_INCREMENT,price DOUBLE,uid INT)l 多對多訂單表CREATE TABLE orders(id INT PRIMARY KEY AUTO_INCREMENT,price DOUBLE)商品表CREATE TABLE products(id INT PRIMARY KEY AUTO_INCR

10、EMENT,NAME VARCHAR(30)訂單與商品之間是一個很明顯的多對多關(guān)系,那么我們怎樣在表中描述它們的關(guān)系訂單表CREATE TABLE orders(id INT PRIMARY KEY AUTO_INCREMENT,price DOUBLE)商品表CREATE TABLE products(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(30)訂單與商品關(guān)聯(lián)表-中間表CREATE TABLE orderitem(oid INT,pid INT,PRIMARY KEY(oid,pid)總結(jié):對于一對一關(guān)系,我們在表中描述時,可以在任意一

11、方描述對于一對多關(guān)系,我們在表中描述時,在多的一方描述對于多對多關(guān)系,我們在表中描述時,會產(chǎn)生一個中間表外鍵約束作用:通過外鍵約束可以保證數(shù)據(jù)的完整性。我們以用戶與訂單(一對多關(guān)聯(lián))來說明一下關(guān)于外鍵約束作用:- 用戶表CREATE TABLE USER(uid INT PRIMARY KEY AUTO_INCREMENT, - 用戶編號NAME VARCHAR(20) - 用戶姓名)- 訂單表CREATE TABLE orders(id INT PRIMARY KEY AUTO_INCREMENT, - 訂單編號money DOUBLE, - 訂單總價receiveraddress VARC

12、HAR(50), - 訂單收貨地址uid INT - 用戶id)我們向表中插入數(shù)據(jù)INSERT INTO USER VALUES(NULL,"tom");INSERT INTO USER VALUES(NULL,"fox");INSERT INTO orders VALUES(NULL,1000,"北京",1);INSERT INTO orders VALUES(NULL,2000,"上海",1);INSERT INTO orders VALUES(NULL,3000,"廣州",2);INSER

13、T INTO orders VALUES(NULL,4000,"深圳",2);通過數(shù)據(jù)很明顯可以看出,tom有兩個訂單,訂單編號為1,2.fox有兩個訂單,訂單編號為3,4那么我們執(zhí)行下面這條sql:DELETE FROM USER WHERE uid=1;這時,我們會發(fā)現(xiàn),在user表中已經(jīng)將uid=1的用戶刪除了,但是在orders表中還存在uid=1的用戶的訂單,破壞了數(shù)據(jù)的完完整性。(不應(yīng)該出現(xiàn)無用戶的訂單)那么如果我們修改一下表結(jié)構(gòu),將orders表中的uid設(shè)置成外鍵,在看一下結(jié)果。對于添加外鍵方式我們可以在創(chuàng)建表時添加,也可以在表創(chuàng)建后在添加外鍵。l 表創(chuàng)建后

14、添加外鍵ALTER TABLE orders ADD CONSTRAINT FK_UID FOREIGN KEY(uid) REFERENCES USER(uid);注意:上面操作中已經(jīng)將uid=1的用戶刪除了,所以在添加外鍵時,會報錯,將數(shù)據(jù)重新添加或重新建表就可以。l 創(chuàng)建表時指定外鍵CREATE TABLE orders(id INT PRIMARY KEY AUTO_INCREMENT, - 訂單idmoney DOUBLE, - 訂單總價receiveraddress VARCHAR(50), - 訂單收貨地址uid INT, - 用戶idCONSTRAINT FK_UID FORE

15、IGN KEY orders(uid) REFERENCES USER(uid)當(dāng)我們給orders表中的uid添加外鍵后,我們在執(zhí)行DELETE FROM USER WHERE uid=1;會發(fā)現(xiàn)報錯Query : delete from user where uid=1Error Code : 1451Cannot delete or update a parent row: a foreign key constraint fails (mydbtest.orders, CONSTRAINT FK_UID FOREIGN KEY (uid) REFERENCES user (uid)原因

16、就是因為我們添加了外鍵,所以我們在刪除主表中數(shù)據(jù)時,要先將子表中數(shù)據(jù)刪除后,才可以刪除主表數(shù)據(jù)。也就是說,我們?nèi)绻趧h除uid=1的用戶必須先在orders表將將uid=1的數(shù)據(jù)刪除,然后才可以在user表中刪除。多表查詢-內(nèi)連接內(nèi)連接(inner join)是應(yīng)用程序中用的普遍的"連接"操作,它一般都是默認連接類型。內(nèi)連接基于連接謂詞將兩張表(如 A 和 B)的列組合在一起,產(chǎn)生新的結(jié)果表。查詢會將 A 表的每一行和 B 表的每一行進行比較,并找出滿足連接謂詞的組合。當(dāng)連接謂詞被滿足,A 和 B 中匹配的行會按列組合(并排組合)成結(jié)果集中的一行。連接產(chǎn)生的結(jié)果集,可以定義

17、為首先對兩張表做笛卡爾積(交叉連接) - 將 A 中的每一行和 B 中的每一行組合,然后返回滿足連接謂詞的記錄。實際上 SQL 產(chǎn)品會盡可能用其他方式去實現(xiàn)連接,笛卡爾積運算是非常沒效率的.SQL 定義了兩種不同語法方式去表示"連接"。首先是"顯式連接符號",它顯式地使用關(guān)鍵字 JOIN,其次是"隱式連接符號",它使用所謂的"隱式連接符號"。隱式連接符號把需要連接的表放到 SELECT 語句的 FROM 部分,并用逗號隔開。這樣就構(gòu)成了一個"交叉連接&qu

18、ot;,WHERE 語句可能放置一些過濾謂詞(過濾條件)。那些過濾謂詞在功能上等價于顯式連接符號.內(nèi)連接"可以進一步被分為: 相等連接,自然連接,和交叉連接.我們還是使用訂單與用戶表來說明內(nèi)連接。1.交叉連接 cross join交叉連接(cross join),又稱笛卡爾連接(cartesian join)或叉乘(Product),它是所有類型的內(nèi)連接的基礎(chǔ)。把表視為行記錄的集合,交叉連接即返回這兩個集合的笛卡爾積。這其實等價于內(nèi)連接的鏈接條件為"永真",或連接條件不存在.笛卡爾積引用自數(shù)學(xué),在數(shù)學(xué)中,兩個集合X和Y的笛卡爾積(Cartesian pr

19、oduct),又稱直積。假設(shè)集合A=a,b,集合B=0,1,2,則兩個集合的笛卡爾積為(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)。可以擴展到多個集合的情況。SELECT * FROM USER CROSS JOIN orders;2.自然連接 natural join 相等連接,是比較連接一種特例,它的連接謂詞只用了相等比較。l natural join:它可以通過兩張表中的相等字段(關(guān)聯(lián)字段自動消除迪卡爾積)SELECT * FROM USER NATURAL JOIN orders;得到了兩條正確結(jié)果,natural join會將兩張表中的關(guān)聯(lián)字段 uid自動關(guān)

20、聯(lián) 消除了迪卡爾積3.相等連接 inner joinon inner join usingl innser join onSELECT * FROM USER INNER JOIN orders ON user.uid=orders.uid;通過on后面的條件,將兩張表中的數(shù)據(jù)過濾。l inner join using:它可以通過指定兩張表中比較的字段來進行等式消除迪卡爾積SELECT * FROM USER INNER JOIN orders USING(uid);上面我們講過inner join on,inner join using,可以將inner省略,因為join默認就是內(nèi)連接(in

21、ner join),,省略inner后的語句變?yōu)镾ELECT * FROM USER JOIN orders ON user.uid=orders.uid;SELECT * FROM USER JOIN orders USING(uid);.效果與寫上inner是一樣的。4.隱式內(nèi)連接我們在實際開發(fā)中,使用最多的還有一種叫做隱匿內(nèi)連接,其實就是將inner join省略,也不在使用on進行條件過濾,而是直接使用where進行過濾。如下面SELECT * FROM USER,orders WHERE user.uid=orders.uid;結(jié)果與inner join on一樣??偨Y(jié):cross

22、join 它只是將兩個表連接起來,產(chǎn)生笛卡爾積。natural join 它是使用表中主外鍵關(guān)聯(lián)來消除迪卡爾積。inner join using 可以省略inner ,在using后面直接書寫比較的字段名稱,注意要加括號 inner join on 它可以省略inner,在on后面直接書寫比較條件,通過條件來消除迪卡爾積。隱式內(nèi)連接,它在開發(fā)應(yīng)用比較多,我們可以省略inner join 表與表之間使用逗號分開,通過where條件來消除迪卡爾積多表查詢-外連接下面我們通過一個示例來說明一下關(guān)于外連接操作。向user表中插入一條記錄INSERT INTO USER VALUES(NULL,&quo

23、t;james");User表中的記錄如下:Orders表中記錄如下:如果我們還是使用內(nèi)連接來查詢所有用戶的訂單那么結(jié)果如下:SELECT * FROM USER,orders WHERE user.uid=orders.uid;我們會發(fā)現(xiàn),沒有查找到j(luò)ames的信息,原因就是它沒有訂單,而內(nèi)連接只是將有關(guān)聯(lián)的數(shù)據(jù)匯集查詢出來。那么如果我們在開發(fā)中需要將所有用戶及其訂單查詢出來,如果用戶沒有訂單,也要查詢出用戶信息。那么使用內(nèi)連接很顯然是做不到了,這時就需要使用外連接。外連接并不要求連接的兩表的每一條記錄在對方表中都一條匹配的記錄. 連接表保留所有記錄 - 甚至這條記錄沒有匹配的記錄

24、也要保留. 外連接可依據(jù)連接表保留左表, 右表或全部表的行而進一步分為左外連接, 右外連接和全連接.注意:mysql只支持左外連接與右外連接,而不支持全連接。1. 左外連接 left outer join on 注意outer 可以省略2. 右外連接 right outer join on 注意 outer可以省略我們執(zhí)行下面sql語句查看一下結(jié)果:SELECT * FROM USER LEFT OUTER JOIN orders ON user.uid=orders.uid;我們發(fā)現(xiàn),這時查詢出了james的信息,但是因為它沒有訂單,所有關(guān)于orders表中的數(shù)據(jù)以null顯示出來。SELE

25、CT * FROM USER LEFT OUTER JOIN orders ON user.uid=orders.uid;這段sql我們使用的是左外連接,也就是說以user表為準(zhǔn),保留user表中所有數(shù)據(jù),右表orders中沒有關(guān)聯(lián)的數(shù)據(jù),那么我們就以null關(guān)聯(lián)顯示出來,右外連接也是同理,如下:SELECT * FROM orders RIGHT OUTER JOIN USER ON orders.uid=user.uid;多表查詢-子查詢在sql語言中,selectfrom語為一個查詢塊,將一個查詢塊嵌套在另一個查詢塊中作為條件稱為嵌套查詢,也稱為子查詢.外層的查詢塊稱為父查詢,內(nèi)層的查詢

26、塊稱為子查詢。按查詢結(jié)果分類Ø 單行單列子查詢n 可以使用關(guān)系運算符操作例如:查詢出訂單id=1的用戶的名稱。i. 先根據(jù)訂單的id查詢出用戶的uidSelect uid from orders where id=1;-得到了一個結(jié)果 1ii. 根據(jù)用戶的uid查詢出用戶的名稱Select name from user where uid=(Select uid from orders where id=1);Ø 單列多行子查詢n 可以使用in,any或all操作>any:大于子查詢中的最小值。>all: 大于子查詢中的最大值。<any:小于子查詢中的最大

27、值。<all: 小于子查詢中的最小值。>=any:大于等于子查詢中的最小值。>=all:大于等于子查詢中的最大值。<=any:小于等于子查詢中最大值。<=all:小于等于子查詢中最小值。!=any或<>any:不等于子查詢中的任意值。!=all或<>all:不等于子查詢中的所有值。=any:等于子查詢中任意值。=all:等于子查詢中所有值(無意義)例如:查詢出訂單的價格>=2000的所有用戶信息。i. 先查詢出所有訂單價格>=200的用戶的uid.Select distinct uid from orders where mon

28、ey>=2000;ii. 根據(jù)上面查詢出的結(jié)果,在用戶表中查詢出用戶信息Select * from user where uid in (Select distinct uid from orders where money>=2000)Ø 多行多列子查詢子查詢返回的就是一張表,我們直接對這張表操作即可。例如:將訂單價格大于2000的訂單信息得到,并查詢出用戶的相關(guān)信息。i. 先得到訂單價格大于2000的訂單信息Select * from orders where money>2000;ii. 在查詢出用戶信息,與上面的多行多列關(guān)聯(lián)Select * from use

29、r,( Select * from orders where money>2000) myorder where user.uid=myorder.uid;上面的操作,不使用子查詢也可以完成:Select * from user,orders where user.uid=orders.uid and orders.money>2000;【筆試面試題】描述外鍵約束的作用怎樣添加外鍵【重點總結(jié)】表與表之間存在一對多,多對多,一對一的關(guān)系,在表中描述它們的關(guān)系有以下規(guī)則:一對一 在任意一方添加外鍵一對多 在多的一方添加外鍵多對多 產(chǎn)生一個中間表,在表中描述對應(yīng)關(guān)系掌握添加外鍵的語句多表

30、查詢方式1. 內(nèi)連接2. 外連接3. 子查詢【第三階段】【學(xué)習(xí)目標(biāo)】完成所有練習(xí)題【內(nèi)容:SQL練習(xí)】基本表結(jié)構(gòu)與數(shù)據(jù)部門表CREATE TABLE DEPT(DEPTNO INT PRIMARY KEY, - 部門編號 DNAME VARCHAR(14) , - 部門名稱 LOC VARCHAR(13) ) ; - 部門地址INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK');INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');IN

31、SERT INTO DEPT VALUES (30,'SALES','CHICAGO');INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON');員工表CREATE TABLE EMP (EMPNO INT PRIMARY KEY, - 員工編號 ENAME VARCHAR(10), - 員工名稱 JOB VARCHAR(9), - 工作 MGR DOUBLE, - 直屬領(lǐng)導(dǎo)編號 HIREDATE DATE, - 入職時間 SAL DOUBLE, - 工資 COMM DOUBLE, -

32、 獎金 DEPTNO INT, - 部門號 FOREIGN KEY(DEPTNO) REFERENCES DEPT(DEPTNO);SELECT * FROM emp; INSERT INTO EMP VALUES(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);INSERT INTO EMP VALUES(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);INSERT INTO EM

33、P VALUES(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);INSERT INTO EMP VALUES(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);INSERT INTO EMP VALUES(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);INSERT

34、INTO EMP VALUES(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);INSERT INTO EMP VALUES(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);INSERT INTO EMP VALUES(7788,'SCOTT','ANALYST',7566,'1987-07-13',3000,NULL,20);I

35、NSERT INTO EMP VALUES(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);INSERT INTO EMP VALUES(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);INSERT INTO EMP VALUES(7876,'ADAMS','CLERK',7788,'1987-07-13',1100,NULL,2

36、0);INSERT INTO EMP VALUES(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);INSERT INTO EMP VALUES(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);INSERT INTO EMP VALUES(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,

37、10); 工資等級表CREATE TABLE SALGRADE ( GRADE INT, - 工資等級 LOSAL DOUBLE, - 最低工資 HISAL DOUBLE ); - 最高工資INSERT INTO SALGRADE VALUES (1,700,1200);INSERT INTO SALGRADE VALUES (2,1201,1400);INSERT INTO SALGRADE VALUES (3,1401,2000);INSERT INTO SALGRADE VALUES (4,2001,3000);INSERT INTO SALGRADE VALUES (5,3001,99

38、99);SELECT * FROM salgrade;第一部分練習(xí)1、查找部門30中員工的詳細信息。2、找出從事clerk工作的員工的編號、姓名、部門號。3、檢索出獎金多于基本工資的員工信息。4、檢索出獎金多于基本工資60%的員工信息。5、找出10部門的經(jīng)理、20部門的職員 的員工信息。6、找出10部門的經(jīng)理、20部門的職員 或者既不是經(jīng)理也不是職員但是工資高于2000元的員工信息。7、找出獲得獎金的員工的工作。8、找出獎金少于100或者沒有獲得獎金的員工的信息。9、找出姓名以A、B、S開始的員工信息。10、找到名字長度為7個字符的員工信息。11、名字中不包含R字符的員工信息。12、返回員工的

39、詳細信息并按姓名排序。13、返回員工的信息并按員工的工作年限降序排列。14、返回員工的信息并按工作降序工資升序排列。15、計算員工的日薪(按30天)。16、找出姓名中包含A的員工信息。第二部分練習(xí)1、返回擁有員工的部門名、部門號。(dept,emp)2、工資水平多于smith的員工信息。3、返回員工和所屬經(jīng)理的姓名。(自連接)4、返回雇員的雇傭日期早于其領(lǐng)導(dǎo)雇傭日期的員工及其領(lǐng)導(dǎo)姓名。(在日期類型可以直接比較)5、返回員工姓名及其所在的部門名稱。6、返回從事clerk工作的員工姓名和所在部門名稱。7、返回部門號及其本部門的最低工資。8、返回銷售部(sales)所有員工的姓名。9、返回工資多于平

40、均工資的員工。10、返回與SCOTT從事相同工作的員工。11、返回與30部門員工工資水平相同的員工姓名與工資。12、返回工資高于30部門所有員工工資水平的員工信息。13、返回部門號、部門名、部門所在位置及其每個部門的員工總數(shù)。14、返回員工的姓名、所在部門名及其工資。15、返回員工的詳細信息。(包括部門名)16、返回員工工作及其從事此工作的最低工資。17、返回不同部門經(jīng)理的最低工資。18、計算出員工的年薪,并且以年薪排序。19、返回工資處于第四級別的員工的姓名。20、返回工資為二等級的職員名字、部門所在地、和二等級的最低工資和最高工資21、返回工資為二等級的職員名字、部門所在地、二等級員工工資

41、的最低工資和最高工資SELECT * FROM emp WHERE DEPTNO=30;SELECT EMPNO,ENAME,DEPTNO FROM emp WHERE job = 'CLERK'SELECT * FROM emp WHERE comm > sal;SELECT * FROM emp WHERE comm > sal*1.6;SELECT * FROM emp WHERE (job='MANAGER' AND deptno=10) OR (job='CLERK' AND deptno=20);SELECT * FROM emp WHERE (job!='MANAGER&#

溫馨提示

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

評論

0/150

提交評論