tags:繼續(xù)
2.添加數(shù)據(jù)表記錄
添加記錄到數(shù)據(jù)表中
插入記錄
語法:
INSERT 表名 (字段列表) VALUES (值列表);
1咖气、給表中所有字段都插入新值
#插入4條新記錄到staff表中
INSERT user(id,name,sex,salary,dept,hiredate)
VALUES? (NULL,'郭靖',1,3500,'財(cái)務(wù)部','2012-12-10'),
(NULL,'洪七公',0,3865.38,'開發(fā)部','2010-02-19'),
(NULL,'楊過',1,5302.56,'市場(chǎng)部','2014-09-22'),
(NULL,'小龍女',0,3500,'客服部','2010-01-20');
#查看user表中全部記錄 ? ?(插入數(shù)據(jù)記錄時(shí),為一一對(duì)應(yīng)的關(guān)系 )
SELECT * FROM user;
注意:
主鍵是自增的挖滤,賦值為NULL崩溪,空或0均可,不影響其自增運(yùn)算結(jié)果斩松;
主鍵從1001開始計(jì)數(shù)悯舟,因?yàn)榻ū頃r(shí)指定自增起始值為1001。
2砸民、給表中指定字段插入新值
#插入4條新記錄到user表中
INSERT user (name,salary,hiredate)
VALUES? ('武松',1900.28,'2010-07-20'),
('西門慶',19800.99,'2008-12-02'),
('潘金蓮',980.21,'2016-03-20'),
('宋江',5500,'2002-02-10');
#查看user表中全部記錄
SELECT * FROM user;
注意:
>[warning] * 字段列表中僅列出三個(gè)字段,沒有列出的字段全部取默認(rèn)值奋救;
>* 自增字段不需要賦值,會(huì)自動(dòng)根據(jù)上次結(jié)果增加的
三:查詢數(shù)據(jù)表
查詢表結(jié)構(gòu):DESC 表名;
查詢當(dāng)前庫中所有數(shù)據(jù)表:SHOW TABLES;
數(shù)據(jù)表查詢技術(shù)
基本語法
SELECT 字段列表? WHERE 數(shù)據(jù)表
[GOURP BY 分組字段] [HAVING 分組查詢條件]
[ORDER BY 排序字段] [LIMIT [起始索引],顯示數(shù)量]
注意:
字段列表最好將需要顯示字段名稱寫出來,盡可能不要用’*'星號(hào)替代;
GROUP BY 與 HAVING 配對(duì)使用,常用于統(tǒng)計(jì)查詢剩膘,字段常用聚合函數(shù)您宪;
ORDER BY 默認(rèn)為升序ASC揖铜,常與LIMIT聯(lián)合使用;
在書寫時(shí),GROURP 語句一定寫在ORDER 語句之前,最后才是LIMIT語句,否則會(huì)執(zhí)行錯(cuò)誤,切記!
下面用實(shí)例講解詳細(xì)用法:
1、[單條件]查詢工資大于3000元的員工姓名噪伊,部門和入職時(shí)間
分析:
>[info] * 顯示字段:姓名豆励、部門伍玖、入職時(shí)間,使用[AS]別名,讓結(jié)果看上去再直觀;
> * 查詢條件:工資大于3000元;
SELECT id AS '編號(hào)', name AS '姓名', dept AS '部門', hiredate AS '入職時(shí)間'
FROM? user
WHERE? salary > 3000;
as 起別名的作用 主要是防止重名造成的數(shù)據(jù)庫表的沖突剑令。
2靶累、[復(fù)合條件]查詢工資大于3000元的開發(fā)部員工姓名急黎,部門和入職時(shí)間
分析:
>[info] * 顯示字段:姓名故源、部門门驾、入職時(shí)間,使用[AS]別名诫隅,讓結(jié)果看上去再直觀兔毒;
> * 查詢條件:復(fù)合查詢[AND]工資大于3000元豪嗽,并且部門名稱是開發(fā)部;
語句:
SELECT id AS '編號(hào)', name AS '姓名', dept AS '部門', hiredate AS '入職時(shí)間'
FROM? user
WHERE? (salary > 3000) AND (dept = '開發(fā)部');
復(fù)合條件中,各個(gè)子條件推薦用括號(hào)包起來撩嚼,顯示結(jié)構(gòu)清晰聘鳞!
3采盒、[分組查詢]查詢每個(gè)部門的最高叉橱、最低和平均工資
關(guān)于分組查詢的字段說明:
>[info] 1、結(jié)果集的字段列表(SELECT 后面)泻仙,必須包括分組字段,或者聚合函數(shù)绑嘹。
? ? ? ? ? ?2 畅卓、當(dāng)然也可以包括其它字段,但是沒有意義,因?yàn)檫@些無關(guān)字段僅取分組中第一條記錄的值。
? ? ? ? ? ?3有送、舉例:計(jì)算每個(gè)部門,最高工資是多少肌稻?如果在結(jié)果列字段中清蚀,出現(xiàn)員工姓名name,其實(shí)他不一定是工資最高的那個(gè)員工爹谭,他只是分組中第一個(gè)出現(xiàn)的記錄對(duì)應(yīng)的name字段轧铁。真正的最高工資的員工有可能出現(xiàn)在第二或第三個(gè)位置上。
聚合函數(shù):也叫統(tǒng)計(jì)函數(shù)旦棉,指僅返回一個(gè)值的函數(shù)齿风,常用的有以下五個(gè):
序號(hào)? ? ? ? ?聚合? ? ? ? ? ? 函數(shù)說明
? ? ? ?1? ? ? ? ? ?COUNT()? ? ? ?返回滿足條件的記錄數(shù)量,如COUNT( * )
? ? ? ?2? ? ? ? ? ? SUM()? ? ? ? ? 參數(shù)為數(shù)值型字段绑洛,返回一列總和
? ? ? ?3? ? ? ? ? ? AVG()? ? ? ? ? ?參數(shù)為數(shù)值型字段或表達(dá)式救斑,返回一列平均值
? ? ? ?4? ? ? ? ? ? MAX()? ? ? ? ?參數(shù)為數(shù)值型、字符串或表達(dá)式真屯,返回一列中最大值
? ? ? ?5? ? ? ? ? ? MIN()? ? ? ? ? ?參數(shù)為數(shù)值型脸候、字符串或表達(dá)式,返回一列中最小值
查詢語句:
SELECT dept AS 部門 ,? MAX(salary) AS 最高工資,MIN(salary) AS 最低工資,AVG(salary) AS 平均工資
FROM user
GROUP BY dept? ;
注意:
>[success] 查詢結(jié)果集中绑蔫,不要出現(xiàn)除分組字段和聚合函數(shù)以外的字段名稱运沦。
4、[多條件分組查詢]按性別查詢每個(gè)部門的最高配深、最低和平均工資
分析:根據(jù)任務(wù)携添,要先按性別進(jìn)行分組,然后再按部門查詢各個(gè)數(shù)據(jù)
查詢流程是:
先按性別分組篓叶,此處分為二個(gè)大組烈掠,男性(值為1)組、女性(值為0)組缸托;
在性別分組中左敌,再按部門進(jìn)一步分組,如:開發(fā)部俐镐、市場(chǎng)部矫限、財(cái)務(wù)部等。
查詢語句:
SELECT sex AS 性別, dept AS 部門 ,? MAX(salary) AS 最高工資,MIN(salary) AS 最低工資,AVG(salary) AS 平均工資
FROM? user
GROUP BY sex ,dept? ;
注意:? ? ?查詢結(jié)果集中,分組字段必須全部出現(xiàn)叼风,并且順序與group by 完全一致幸斥。
5、[分組條件查詢]查詢各部門平均工資大于2000的人數(shù)
掌握HAVING 語句的用法(僅用于GROUP BY 分組篩選)
分析:根據(jù)任務(wù)咬扇,必須對(duì)分組中的統(tǒng)計(jì)數(shù)據(jù)進(jìn)行條件篩選。
查詢流程是:
先按部門分組廊勃, 如:開發(fā)部懈贺、市場(chǎng)部、財(cái)務(wù)部坡垫、客服服等梭灿;
再統(tǒng)計(jì)各部門的平均工資,只查詢平均工資大于2000元冰悠;
最后堡妒,只有符合條件的部門才會(huì)出現(xiàn)在查詢結(jié)果中。
查詢語句:
SELECT? dept AS 部門 ,? COUNT(*)? AS? 人數(shù)
FROM? ?user
GROUP BY dept? HAVING? AVG(salary) > 2000;
注意:
查詢結(jié)果集中溉卓, 只會(huì)顯示符合條件的記錄皮迟,除分組和聚合字段外,其它字段不要有桑寨;
HAVING 分組條件只能是聚合函數(shù) 或者 常量 或來自子查詢伏尼。
這里簡(jiǎn)單擴(kuò)展一下:
再查詢一個(gè)平均工資大于1500元的部門員工人數(shù)
查詢語句修改一個(gè)HAVING 條件
(仔細(xì)看代碼 條件是選擇什么:分組有什么作用,要理清楚)
SELECT? dept AS 部門 ,? COUNT(*)? AS? 人數(shù)
FROM user
GROUP BY dept? HAVING? AVG(salary) > 1500;
6尉尾、[排序查詢]
查詢工資最高的三個(gè)員工的編號(hào)爆阶、姓名、工資\部門和入職時(shí)間
關(guān)鍵字:ORDER BY 排序字段 LIMIT [偏移量,]顯示數(shù)量
該實(shí)例比較簡(jiǎn)單沙咏,我們直接上代碼:
SELECT? id AS 編號(hào),name AS 姓名 , ROUND(salary,0) AS 工資 , dept AS 部門, hiredate AS 入職時(shí)間
FROM? user
ORDER BY salary DESC? LIMIT 3;
根據(jù) 任務(wù)說明 : 編號(hào) 辨图,姓名, 工資肢藐,部門故河,入職時(shí)間? ?羅列 出來 ,然后 條件判斷 工資最高的 三個(gè) 倒排序 吆豹;
7忧勿、[綜合實(shí)例]查詢各部門最高工資,并按降序排序
降序:指由高到低排序瞻讽,系統(tǒng)默認(rèn)是升序鸳吸,即由低到高。
分析:本案例用到了:GROUP BY 和 ORDER BY 操作
先查詢出每個(gè)部門的最高工資金額速勇;
再按最高工資金額字段進(jìn)行降序排序晌砾。
SELECT? dept AS 部門, ROUND(MAX(salary),0) AS 最高工資
FROM? user
GROUP BY dept
ORDER BY salary DESC;