MySQL學(xué)習(xí)筆記

阿茄的數(shù)據(jù)庫學(xué)習(xí)筆記悠抹,將持續(xù)更新。扩淀。楔敌。。驻谆。卵凑。。胜臊。
歡迎大家留言交流討論蛤

MySQL服務(wù)的啟動和停止

 啟動:net start mysql5.5
 停止:net stop mysql5.5

MySQl服務(wù)的登入和退出

 登入:mysql -h localhost -P 3306 -u root -p
 退出:exit

SQL的語言分類

DQL(Data Query Language):數(shù)據(jù)查詢語言
    select 
DML(Data Manipulate Language):數(shù)據(jù)操作語言
    insert 勺卢、update、delete
DDL(Data Define Languge):數(shù)據(jù)定義語言
    create区端、drop、alter
TCL(Transaction Control Language):事務(wù)控制語言
    commit澳腹、rollback

MySQL常用命令

 顯示所有數(shù)據(jù):show databases;
 進(jìn)入數(shù)據(jù)庫中的某一個庫(比如test庫):use test;
 顯示所在庫的表:show tables;
 顯示其他庫的表:show tables from test;
 查看自己在哪一個庫:select database();
 顯示表的具體結(jié)構(gòu)(列):desc 表名织盼;(不用show)= SHOW COLUMNS FROM 表名;
 查看表的所有數(shù)據(jù):select * from 表名;

進(jìn)階一:基礎(chǔ)查詢

select 查詢列表(表中字段酱塔、常量值沥邻、表達(dá)式、函數(shù)) from 表名羊娃;
USE myemployees
SELECT first_name,last_name FROM employees;
SELECT * FROM employees
SELECT 100;
SELECT 100*90;
/*+號的特殊用法*/
SELECT '100'+90;#190
SELECT NULL+90;#NULL
SELECT 'chat'+90;#90
SELECT 'chat'+'char';#0
/*起別名*/
SELECT last_name 姓,first_name AS 名 FROM employees;
SELECT salary "out put" FROM employees;#有空格加引號
/*去重*/
SELECT department_id FROM employees;#有重覆
SELECT DISTINCT department_id FROM employees;
/*拼接*/
SELECT CONCAT(last_name,' ',first_name) AS "姓 名" FROM employees;

進(jìn)階二:條件查詢

 select 查詢列表(表中字段唐全、常量值、表達(dá)式蕊玷、函數(shù)) from 表名 where 篩選條件邮利;
 分類:
     一、按條件運算符篩選: >,<,=,!=(<>),<=,>=
     二垃帅、按邏輯運算符篩選:&&(and) ||(or) 延届!(not)
     三、模糊查詢:like, between and, in, is null
 模糊查詢:
 LIKE:配合通配符使用贸诚;
 BETWEEN AND:包含等號方庭;順序不能顛倒;
 IN:括號里面內(nèi)容不支持通配符酱固;
 IS NULL:=不能判斷NULL械念;<=>可以判斷NULL和其他(=升級版:安全等于)
 IS NOT NULL:判斷是否非空;
 IS NULL VS. <=> VS. =(三者比較):
    IS NULL:只能判斷是否為空运悲;
    <=>:可以判斷是否為空和普通數(shù)值龄减;
    =:只能判斷普通數(shù)值;USE `myemployees`
/*條件表達(dá)式*/
SELECT * FROM employees WHERE department_id=90;
SELECT last_name,department_id FROM employees WHERE department_id=90;
/*邏輯表達(dá)式*/
#查詢部門編號不是90-100之間班眯,或者工資高于30000的員工信息
SELECT * FROM employees WHERE NOT(department_id >=90 AND department_id<=100) OR salary>30000;
/*模糊查詢*/
/*LIKE:匹配*/
#查詢員工名中包含a字符的員工信息
SELECT last_name FROM employees WHERE last_name LIKE '%a%';#包含a
SELECT last_name FROM employees WHERE last_name LIKE 'a%';#以a開頭
SELECT last_name FROM employees WHERE last_name LIKE '%a';#以a結(jié)尾
SELECT last_name FROM employees WHERE last_name LIKE '_a_a%';
SELECT last_name FROM employees WHERE last_name LIKE '_\_%';#轉(zhuǎn)義
SELECT last_name FROM employees WHERE last_name LIKE '_&_%' ESCAPE '&';#自定義轉(zhuǎn)義
/*BETWEEN AND*/
SELECT * FROM employees WHERE salary>=10000 AND salary<=30000;
SELECT * FROM employees WHERE salary BETWEEN 10000 AND 30000;#10000~30000
/*IN:屬于*/
#查詢工種編號為‘SH_CLERK’或‘AD_VP’的員工信息
SELECT * FROM employees WHERE job_id = 'SH_CLERK' OR job_id='AD_VP';
SELECT * FROM employees WHERE job_id IN('SH_CLERK','AD_VP');
/*IS NULL*/
#查詢沒有獎金的員工姓名和工資
#SELECT CONCAT(last_name,' ',first_name) AS '姓 名', salary FROM employees WHERE commission_pct= null;#錯誤寫法
SELECT CONCAT(last_name,' ',first_name) AS '姓 名', salary FROM employees WHERE commission_pct <=> NULL;
SELECT CONCAT(last_name,' ',first_name) AS '姓 名', salary FROM employees WHERE commission_pct IS NULL;
/*IS NOT NULL*/
#查詢有獎金的員工姓名和工資
SELECT CONCAT(last_name,' ',first_name) AS '姓 名', salary FROM employees WHERE commission_pct IS NOT NULL;
#查詢員工號為176的員工的姓名欺殿,部門編號和年薪
SELECT 
      CONCAT(last_name,' ',first_name) AS '姓 名',
      department_id,
      salary*12*(1+IFNULL(commission_pct,0)) AS '年 薪'
FROM  
      employees
WHERE 
      employee_id = 176;
面試案例:
SELECT * FROM employees;#(1)
SELECT * FROM employees WHERE commission_pct LIKE '%%' AND last_name LIKE '%%';#like不能匹配null寄纵,所以結(jié)果和(1)不一樣
SELECT * FROM employees WHERE commission_pct LIKE '%%' OR last_name LIKE '%%';#last_name沒有null,所以結(jié)果和(1)一樣

進(jìn)階三:排序查詢

 select   查詢列表
 from     表
 where    條件
 order by 排序的字段|表達(dá)式|函數(shù)|別名 (asc/desc)(不寫默認(rèn)升序);
#查詢部門編號>=90的員工信息脖苏,并按照薪水降序排序
SELECT * FROM employees WHERE department_id>=90 ORDER BY salary DESC;     
#先按工資降序排程拭,再按員工編號降序排:支持多字段排序
SELECT * FROM employees WHERE department_id>=90 ORDER BY salary DESC, employee_id DESC;
     

進(jìn)階四:常用函數(shù)

單行函數(shù)
字符函數(shù)
  • length:獲取字節(jié)個數(shù)(漢字占用三個字節(jié))(只有l(wèi)ength以字節(jié)為尺度)
  • concat: 拼接字符串
  • substr:截取子串
#與java中不同,需要留意
SELECT SUBSTR('fatcat',2) AS out_put;#actcat:索引從1開始而不是0
SELECT SUBSTR('fatcat',1,4) AS out_put;#fatc:第二位表示截取長度而不是結(jié)束索引
  • instr:返回子串第一次出現(xiàn)的索引棍潘,找不到返回0
SELECT INSTR('fatcat','cat') AS out_put;#4
  • upper:轉(zhuǎn)換成大寫
  • lower:轉(zhuǎn)換成小寫
  • trim:去前后指定的空格和字符
#只去前后(不去中間)指定字符恃鞋,不指定指的空格
SELECT TRIM('k' FROM 'kkkkfatkkkcatkkkk') AS out_put;#fatkkkcat
  • ltrim:去左邊空格(只能去空格不能指定)
  • rtrim:去右邊空格(只能去空格不能指定)
  • replace:替換
#全部替換
SELECT REPLACE('catfatcatcat','cat','dog') AS out_put;#dogfatdogdog
  • lpad:左填充
  • rpad:右填充
#中間是最終總長度而不是需要填充的長度
#無論左填充還是右填充,長度不足是均是從左到右截取
SELECT LPAD('fatcat',8,'k') AS out_put;#kkfatcat
SELECT LPAD('fatcat',3,'k') AS out_put;#fat
SELECT RPAD('fatcat',8,'k') AS out_put;#fatcatkk
SELECT RPAD('fatcat',3,'k') AS out_put;#fat
數(shù)學(xué)函數(shù)
  • round:四舍五入
SELECT ROUND(-1.54) AS out_put;#-2
SELECT ROUND(-1.547,2) AS out_put;#-1.55:表示小數(shù)點后保留兩位
  • rand:隨機(jī)數(shù)([0,1)
#用rand產(chǎn)生[i,j]的隨機(jī)數(shù):floor(i+rand()*(j-i+1))
  • floor:向下取整
  • ceil:向上取整
SELECT CEIL(-1.1) AS out_put;#-1
SELECT FLOOR(-9.9) AS out_put;#-10
  • mod:取余
#符號和被除數(shù)一致(a-a/b*b)
SELECT MOD(-10,3) AS out_put;#-1
SELECT MOD(10,-3) AS out_put;#1
  • truncate:截斷
SELECT TRUNCATE(-9.987,2) AS out_put;#-9.98:小數(shù)點后保留兩位亦歉,直接截斷恤浪,不用四舍五入
日期函數(shù)
  • now:當(dāng)前系統(tǒng)日期+時間
  • curdate:當(dāng)前系統(tǒng)日期
  • curtime:當(dāng)前系統(tǒng)時間
  • year: 獲取年(同理:month,day,hour,minute,second)
  • str_to_date:將字符轉(zhuǎn)換成日期
  • date_format:將日期轉(zhuǎn)換成字符
  • datediff:求兩個日期的天數(shù)差
流程控制函數(shù)(挺有意思的)
  • if:類似三元運算符
if(條件表達(dá)式,表達(dá)式1肴楷,表達(dá)式2):如果條件表達(dá)式成立水由,返回表達(dá)式1,否則返回表達(dá)式2
SELECT IF(10>5,'large','small');#large
  • case:
case 情況1
case 變量或表達(dá)式或字段
when 常量1 then 值1
when 常量2 then 值2
...
else 值n
end
#根據(jù)部門編號就算加權(quán)工資
SELECT salary,department_id,
CASE department_id
WHEN 50 THEN salary*2
WHEN 80 THEN salary*3
WHEN 100 THEN salary*4
ELSE salary
END AS 'wighted salary'
FROM employees
ORDER BY department_id
case 情況2
case 
when 條件1 then 值1
when 條件2 then 值2
...
else 值n
end
#根據(jù)工資顯示級別
SELECT last_name,salary,
CASE 
WHEN salary>=20000 THEN 'A'
WHEN salary>=10000 THEN 'B'
WHEN salary>=5000 THEN 'C'
ELSE 'D'
END AS '級別'
FROM employees
ORDER BY 級別 
其他函數(shù)
  • version(): 版本
  • database(): 當(dāng)前庫
  • user(): 當(dāng)前連接用戶
分組函數(shù)(統(tǒng)計函數(shù))
  • max:最大值
  • min:最小值
  • sum:和
  • avg:平均值
  • count:計算個數(shù)
特點:
1赛蔫、以上五個分組函數(shù)都忽略null值砂客,除了count(*)
2、sum和avg一般用于處理數(shù)值型呵恢,max鞠值、min、count可以處理任何數(shù)據(jù)類型
3渗钉、都可以搭配distinct使用彤恶,用于統(tǒng)計去重后的結(jié)果:select sum(distinct salary) from employees;
4、count的參數(shù)可以支持:字段鳄橘、*声离、常量值,一般放1瘫怜,建議使用 count(*)
5抵恋、count(1)和count(*):統(tǒng)計結(jié)果集的行數(shù)
6、效率上:MyISAM存儲引擎宝磨,count(*)最高弧关;InnoDB存儲引擎笙隙,count(*)和count(1)效率>count(字段)
7碧注、和分組函數(shù)一同查詢的字段,要求是group by后出現(xiàn)的字段

進(jìn)階五:分組查詢

語法:
select 分組函數(shù)/group by后面的字段
from 表
(where 分組前篩選條件)
group by 分組的字段(即懂算,按該字段分組)
(having 分組后篩選條件)
(order by 子句)
特點:
    1窿祥、可以按單個字段分組
    2株憾、和分組函數(shù)一同查詢的字段最好是分組后的字段
    3、分組篩選
       分組前篩選:原始表,group by的前面嗤瞎,關(guān)鍵字where
       分組后篩選:分組后的結(jié)果集墙歪,group by的后面,關(guān)鍵字having
    4贝奇、可以按多個字段分組虹菲,字段之間用逗號隔開
    5、可以支持排序
    6掉瞳、having后可以支持別名
/*單字段分組查詢*/
#下述兩種寫法效果一樣(都是按照部門分組輸出毕源,不重復(fù))
SELECT department_id
FROM employees
GROUP BY department_id;

SELECT DISTINCT department_id
FROM employees;

#查詢每個領(lǐng)導(dǎo)手下有獎金的員工的最高工資
SELECT MAX(salary),manager_id
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY manager_id;

#查詢沒有獎金的員工所屬的部門的最低工資
SELECT MIN(salary),department_id
FROM employees
WHERE commission_pct IS NULL
GROUP BY department_id;

#(上面案例相當(dāng)于先篩選后分組,下面這個案例需要先分組計算出相應(yīng)結(jié)果后再篩選)
#查詢哪個部門的員工數(shù)大于7
#首先得先查出各個部門的員工數(shù)陕习,然后判斷是否大于7
#引入新關(guān)鍵字having(用于分組后的篩選)
SELECT COUNT(*), department_id
FROM employees
GROUP BY department_id
HAVING COUNT(*)>7;

#查詢公種編號和員工最高工資(要求該工種下有獎金的員工的工資最高工資高于12000)
SELECT MAX(salary),job_id
FROM employees
WHERE commission_pct IS NOT NULL 
GROUP BY job_id 
HAVING MAX(salary)>12000;

#查詢領(lǐng)導(dǎo)ID(要求ID>102且手下員工的最低工資高于5000)
SELECT manager_id
FROM employees
WHERE manager_id>102 
GROUP BY manager_id
HAVING MIN(salary)>5000;
/*多字段分組查詢*/
#查詢每個部門每個工種的平均工資
SELECT AVG(salary),department_id,job_id
FROM employees
GROUP BY department_id,job_id;

進(jìn)階六:多表連接查詢

笛卡爾乘積現(xiàn)象:如果連接條件省略或無效則會出現(xiàn)全部匹配的情況(表1為m行霎褐,表2為n行,輸出結(jié)果為m*n行)该镣。
解決辦法:添加上連接條件冻璃。
分類:
    按標(biāo)準(zhǔn)分類:
             sql92(在mysql中僅支持內(nèi)連接)
             sql99(在mysql中不支持全外連接)
    按功能分類:
             內(nèi)連接:等值連接、非等值連接损合、自連接
             外連接:左外連接省艳、右外連接、全外連接
             交叉連接
思想:多張表的匹配塌忽,沒有加連接條件情況下就是每一行匹配拍埠,加上連接條件相當(dāng)與加了約束后匹配失驶。
內(nèi)連接
(表的交集)

sql92標(biāo)準(zhǔn)等值連接:

#查詢員工名和對應(yīng)的部門名
SELECT CONCAT(last_name,' ',first_name) fullname, department_name
FROM employees, departments
WHERE employees.department_id = departments.department_id;

#查詢員工名及其對應(yīng)的工種號和工種名(為表起別名)
SELECT last_name,e.job_id,job_title
FROM employees AS e,jobs AS j
WHERE e.job_id = j.job_id;

#查詢每個工種的工種名和員工的個數(shù)土居,并按員工個數(shù)降序排序
SELECT job_title, COUNT(*)
FROM employees e ,jobs j
WHERE e.job_id = j.job_id 
GROUP BY job_title
ORDER BY COUNT(*) DESC;

#三表連接:查詢員工名、部門名和所在城市
SELECT last_name,department_name,city
FROM employees e,departments d,locations l
WHERE e.department_id = d.department_id
AND d.location_id = l.location_id
AND city LIKE 's%'
ORDER BY LENGTH(city);

sql92標(biāo)準(zhǔn)非等值連接:

#查詢員工的工資和工資級別
SELECT salary, grade_level
FROM employees e, job_grades g
WHERE salary BETWEEN g.lowest_sal AND g.highest_sal
ORDER BY grade_level;

sql92標(biāo)準(zhǔn)自連接:

#利用給同一張表其不同的別名實現(xiàn)區(qū)分
#查詢員工名和其領(lǐng)導(dǎo)的名字
SELECT e.employee_id,e.last_name, m.employee_id 對應(yīng)領(lǐng)導(dǎo)ID, m.last_name 對應(yīng)領(lǐng)導(dǎo)名
FROM employees e,employees m
WHERE e.manager_id = m.employee_id;

sql99語法結(jié)構(gòu):

select 查詢列表
from 表1 別名
【inner|left outer|right outer|cross】join 表2 別名 on  連接條件
【inner|left outer|right outer|cross】join 表3 別名 on  連接條件
【where 篩選條件】
【group by 分組字段】
【having 分組后的篩選條件】
【order by 排序的字段或表達(dá)式】
好處:語句上嬉探,連接條件和篩選條件實現(xiàn)了分離擦耀,簡潔明了!

sql99標(biāo)準(zhǔn)等值連接:

#查詢部門個數(shù)大于3的城市名和相應(yīng)的部門個數(shù)
#sql92
SELECT city,COUNT(*)
FROM locations l,departments d
WHERE l.location_id = d.location_id
GROUP BY city
HAVING COUNT(*)>3;

#sql99
SELECT city,COUNT(*)
FROM locations l
INNER JOIN departments d
ON l.location_id = d.location_id
GROUP BY city
HAVING COUNT(*)>3;

#查詢員工名涩堤、部門名眷蜓、工種名、并按部門名降序排序(三表連接)
#sql92
SELECT last_name,department_name,job_title
FROM employees e,departments d,jobs j
WHERE e.department_id = d.department_id
AND j.job_id = e.job_id
ORDER BY department_name DESC;

#sql99
SELECT last_name,department_name,job_title
FROM employees e
INNER JOIN departments d
ON e.department_id = d.department_id
INNER JOIN jobs j
ON j.job_id = e.job_id
ORDER BY department_name DESC;

sql99標(biāo)準(zhǔn)非等值連接:

#查詢員工的工資和工資級別
SELECT salary, grade_level
FROM employees e
INNER JOIN job_grades g
ON salary BETWEEN g.lowest_sal AND g.highest_sal
ORDER BY grade_level;

sql99標(biāo)準(zhǔn)自連接:

#利用給同一張表其不同的別名實現(xiàn)區(qū)分
#查詢員工名和其領(lǐng)導(dǎo)的名字
SELECT e.employee_id,e.last_name, m.employee_id 對應(yīng)領(lǐng)導(dǎo)ID, m.last_name 對應(yīng)領(lǐng)導(dǎo)名
FROM employees e
INNER JOIN employees m
ON e.manager_id = m.employee_id;
外連接
(查詢一張表中有胎围,另一張表中沒有的記錄)
特點:
    1吁系、外連接會顯示主表的所有記錄
       如果從表中有和它匹配的,則顯示匹配的值白魂;
       如果從表中沒有和它匹配的汽纤,則顯示null;
       外連接查詢=內(nèi)連接結(jié)果+主表中有但從表中沒有的記錄
    2福荸、左外連接:left join左邊是主表
       右外連接:right join右邊是主表
    3蕴坪、左外和右外交換兩個表順序,結(jié)果一致;

sql99左外和右外連接:(查詢主表中有背传,從表中沒有的記錄)

#查詢那個部門沒有員工
SELECT department_name,d.department_id,e.employee_id
FROM departments d
LEFT JOIN employees e
ON d.department_id = e.department_id
WHERE e.employee_id IS NULL;

SELECT department_name,d.department_id,e.employee_id
FROM employees e
RIGHT JOIN departments d
ON d.department_id = e.department_id
WHERE e.employee_id IS NULL;

sql99全外連接:(內(nèi)連接+表一中有表二沒有記錄+表二中有表一沒有記錄)

mysql不支持呆瞻。
交叉連接
害,就是笛卡爾乘積的叫法糖而已径玖,用cross join表征痴脾。

進(jìn)階七:子查詢(內(nèi)查詢)

含義:
    一條查詢語句中又嵌套了另一條完整的select語句,其中被嵌套的select語句挺狰,稱為子查詢或內(nèi)查詢明郭;
    在外面的查詢語句,稱為主查詢或外查詢丰泊;
分類:
    1薯定、按出現(xiàn)位置
        select后面:
                  僅僅支持標(biāo)量子查詢
        from后面:
                  表子查詢
        where/having后面:(重點)
                  標(biāo)量子查詢
                  列子查詢
                  行子查詢
        exists后面:
                  標(biāo)量子查詢
                  列子查詢
                  行子查詢
                  表子查詢

    2、按結(jié)果集的行列
        標(biāo)量子查詢(單行子查詢):結(jié)果集為一行一列
        列子查詢(多行子查詢):結(jié)果集為多行一列
        行子查詢:結(jié)果集一般為一行多列(也可以多行多列)
        表子查詢:結(jié)果集一般為多行多列
特點:
    1瞳购、子查詢都放在小括號內(nèi)
    2话侄、子查詢可以放在from后面、select后面学赛、where后面年堆、having后面,但一般放在條件的右側(cè)
    3盏浇、子查詢優(yōu)先于主查詢執(zhí)行变丧,主查詢使用了子查詢的執(zhí)行結(jié)果
    4、子查詢根據(jù)查詢結(jié)果的行數(shù)不同分為以下兩類:
    ① 單行子查詢
        結(jié)果集只有一行
        一般搭配單行操作符使用:> < = <> >= <= 
        非法使用子查詢的情況:
        a绢掰、子查詢的結(jié)果為一組值
        b痒蓬、子查詢的結(jié)果為空
    ② 多行子查詢
        結(jié)果集有多行
        一般搭配多行操作符使用:any、all滴劲、in攻晒、not in
        in: 屬于子查詢結(jié)果中的任意一個就行
        any和all往往可以用其他查詢代替

where/having后面:

#查詢誰的工資比高 Greenberg高
#首先查出Greenberg的工資
#再查比他高的員工信息
SELECT *
FROM employees
WHERE salary>(
    SELECT salary 
    FROM employees  
    WHERE last_name = 'Greenberg'
);

#返回job_id和141號員工相同,salary比143號員工多的員工信息
SELECT * 
FROM employees
WHERE job_id=(
    SELECT job_id
    FROM employees
    WHERE employee_id = 141 
) 
AND salary>(
    SELECT salary
    FROM employees
    WHERE employee_id = 143
);

#返回公司中工資最少的員工的last_name,job_id,salary
SELECT last_name,job_id,salary
FROM employees
WHERE salary=(
    SELECT MIN(salary)
    FROM employees
);

#查詢最低工資大于50號部門最低工資的部門id及其最低工資
SELECT department_id,MIN(salary)
FROM employees
GROUP BY department_id
HAVING MIN(salary)>(
    SELECT MIN(salary)
    FROM employees
    WHERE department_id = 50
);

select后面:

#查詢每個部門的員工個數(shù)
SELECT department_id,(
    SELECT COUNT(*) 
    FROM employees e
    WHERE e.department_id = d.department_id
) AS 個數(shù)
FROM departments d

SELECT department_id,COUNT(*)
FROM employees
GROUP BY department_id;

from后面:

#查詢每個部門的平均工資的工資級別
SELECT ag_dep.*, jg.grade_level
FROM job_grades jg
INNER JOIN(
    SELECT AVG(salary) ag,department_id
    FROM employees
    GROUP BY department_id
)ag_dep
ON ag_dep.ag BETWEEN lowest_sal AND highest_sal
ORDER BY grade_level;

exit后面:(相關(guān)子查詢)

#查詢有員工名和部門名
SELECT department_name
FROM departments d
WHERE EXISTS(#(是否有值的意思)
    SELECT * 
    FROM employees e
    WHERE d.department_id = e.department_id
);

練習(xí):

#查詢各個部門中比部門平均工資高的員工的信息
SELECT *
FROM employees e
INNER JOIN (
    SELECT AVG(salary) ag,department_id
    FROM employees
    GROUP BY department_id
) AS avg_dep
ON e.department_id = avg_dep.department_id
WHERE salary>ag;

SELECT AVG(salary), department_id
FROM employees
GROUP BY department_id

#查詢和姓名中包含u的員工在同一個部門的員工的員工號和姓名
SELECT employee_id,last_name
FROM employees
WHERE department_id IN (
    SELECT DISTINCT department_id
    FROM employees
    WHERE last_name LIKE '%u%'
);

#查詢在部門的location_id為1700的部門工作的員工的員工號
SELECT employee_id
FROM employees
WHERE department_id IN (
    SELECT DISTINCT department_id 
    FROM departments
    WHERE location_id = 1700
);

#查詢領(lǐng)導(dǎo)為King的員工的姓名和工資
SELECT last_name, salary
FROM employees
WHERE manager_id IN (
    SELECT employee_id 
    FROM employees 
    WHERE last_name = 'K_ing'
);

#查詢工資最高的員工的姓名班挖,要求姓名整合成一列
SELECT CONCAT(last_name,' ',first_name) 姓名,salary
FROM employees
WHERE salary = (
    SELECT MAX(salary)
    FROM employees 
);


#查詢和K_ing 相同部門的員工姓和工資
SELECT last_name,salary
FROM employees
WHERE department_id IN (
    SELECT department_id
    FROM employees
    WHERE last_name = 'K_ing'
);

#查詢工資比公司平均工資高的員工的員工號和姓名
SELECT employee_id, last_name
FROM employees
WHERE salary>(
    SELECT AVG(salary)
    FROM employees
);

Quiet and Quick! Salute !

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鲁捏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子萧芙,更是在濱河造成了極大的恐慌给梅,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件双揪,死亡現(xiàn)場離奇詭異动羽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)盟榴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門曹质,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事羽德〖该В” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵宅静,是天一觀的道長章蚣。 經(jīng)常有香客問我,道長姨夹,這世上最難降的妖魔是什么纤垂? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮磷账,結(jié)果婚禮上峭沦,老公的妹妹穿的比我還像新娘。我一直安慰自己逃糟,他們只是感情好吼鱼,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绰咽,像睡著了一般菇肃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上取募,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天琐谤,我揣著相機(jī)與錄音,去河邊找鬼玩敏。 笑死斗忌,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的聊品。 我是一名探鬼主播飞蹂,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼几苍,長吁一口氣:“原來是場噩夢啊……” “哼翻屈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起妻坝,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤伸眶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后刽宪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厘贼,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年圣拄,在試婚紗的時候發(fā)現(xiàn)自己被綠了嘴秸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖岳掐,靈堂內(nèi)的尸體忽然破棺而出凭疮,到底是詐尸還是另有隱情,我是刑警寧澤串述,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布执解,位于F島的核電站,受9級特大地震影響纲酗,放射性物質(zhì)發(fā)生泄漏衰腌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一觅赊、第九天 我趴在偏房一處隱蔽的房頂上張望右蕊。 院中可真熱鬧,春花似錦吮螺、人聲如沸尤泽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坯约。三九已至,卻和暖如春莫鸭,著一層夾襖步出監(jiān)牢的瞬間闹丐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工被因, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留卿拴,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓梨与,卻偏偏與公主長得像堕花,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子粥鞋,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容