一、資料庫操作
-
查看所有資料庫
show databases;
-
創建資料庫
create database db_name charset=utf8;
create database db_name character set utf8mb4;
說明:CREATE:創建命令;DATABASE:資料庫關鍵字;db_name:用戶自定義資料庫名稱
-
查看當前使用的資料庫
select database();
-
使用/切換資料庫
use 資料庫名;
-
洗掉資料庫
drop database 資料庫名;
-
重命名資料庫
rename DATABASE old_name TO new_name; # innodb不支持,mysql默認就是innodb
二、資料表操作
1 查看資料表
-
查看當前資料庫中所有表
show tables;
-
查看表結構
desc 表名;
2 創建資料表
CREATE TABLE table_name(
column1 type [約束 comment 注釋],
column2 type,
column3 type,
.....
columnN type
);
注意:最后一個欄位后不能添加逗號
例:創建班級表
create table class(
id int unsigned auto_increment primary key not null,
name varchar(10)
);
例2:創建職員表
comment 為欄位的注釋,可選
CREATE TABLE employee(
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '職員編號',
emp_name VARCHAR(50) COMMENT '職員姓名',
emp_date DATETIME COMMENT '入職時間'
)DEFAULT CHARACTER SET 'UTF8MB4';
3 修改表結構
資料表創建完成后,在需求變動時可能需要對資料表中的欄位進行修改、增加、洗掉等各種維護操作
-
增加欄位
alter table 表名 add 欄位名 型別 [first/after 列名];
例
-- 末尾添加一列:地址
alter table employee add address varchar(200);
-- 指定位置添加一列:生日
alter table employee add birthday datetime after emp_name;
-- 開頭位置
alter table employee add empid int first;
查看表結構 desc employee;
-
洗掉欄位
alter table 表名 drop 欄位名;
例:
alter table employee drop empid;
查看表結構 desc employee;
-
修改欄位
- 修改欄位:修改名字和型別約束
alter table 表名 change 原名 新名 型別及約束;
例:
-- 修改欄位名
alter table employee change emp_name empname varchar(100);
- 修改欄位:修改型別約束
alter table 表名 modify 欄位名 型別及約束;
-- 修改是否為空
alter table employee modify empname varchar(100) not null;
- 修改默認值
alter table 表名 alter 欄位名 set default 默認值;
-- 修改地址默認值
alter table employee alter address set default "空";
注意:默認值型別要和欄位型別保持一致,
4 洗掉表
drop table 表名;
例:
drop table class;
5 重命名表
RENAME TABLE 原名 TO 新名;
-- 修改表名
rename table employee to emp;
6 查看表的創建陳述句
show create table 表名;
例:
show create table emp;
三、資料庫的增刪改查(crud)
curd的解釋: 代表創建(Create)、更新(Update)、讀取(Retrieve)和洗掉(Delete)
創建職員表用于測驗
-- 創建職員表
CREATE TABLE employee(
empno int auto_increment primary key comment '人物編號',
empname VARCHAR(10) comment '人物名稱',
nickname varchar(20) comment '昵稱',
job VARCHAR(9) comment '作業崗位',
mgr int comment '上級編號',
hirdate DATE comment '入伙時間',
salary int comment '薪水待遇',
comm int comment '獎金',
deptno int comment '所屬部門'
);
-- 創建部門表
CREATE TABLE department (
deptno int auto_increment primary key comment '部門編號',
deptname varchar(50) comment '部門名稱',
location varchar(100) comment '部門地點'
);
(一)INSERT 增加資料
-- 完整格式
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
-- 常用格式
INSERT INTO 表名(欄位1,欄位2....) values(...),(...);
1 單行插入
-
全列插入:值的順序與表中欄位的順序對應
-- 格式
insert into 表名 values(...)
-- 實體
INSERT INTO department VALUES(10, '中央', '梁山本部');
INSERT INTO department VALUES(20, '近衛', '梁山本部');
INSERT INTO department VALUES(21, '軍委1部', '梁山本部');
INSERT INTO department VALUES(22, '軍委2部', '梁山本部');
-
部分列插入:值的順序與給出的列順序對應
-- 格式
insert into 表名(列1,...) values(值1,...)
-- 實體
INSERT INTO department(deptno, deptname, location)
VALUES(50, '后勤部', '梁山本部');
INSERT INTO department(deptno, deptname, location)
VALUES(60, '軍情部', '梁山本部');
INSERT INTO department(deptno, deptname, location)
VALUES(70, '迎賓部', '梁山本部');
INSERT INTO department(deptno, deptname, location)
VALUES(80, '刑罰部', '梁山本部');
2 多行插入
-- 全列插入
insert into 表名 values(...),(...)...;
-- 指定列插入
insert into 表名(列1,...) values(值1,...),(值2...)...
-- 實體
INSERT INTO employee
VALUES
(1, '宋江', '天魁星·及時雨', '頭領', null,'2015-11-8', 800, 200000, 1),
(2, '盧俊義', '天罡星·玉麒麟','盧俊義', 1,'2018-4-6', 800, 100000, 1),
(3, '吳用', '天機星·智多星', '頭領', 1,'2012-8-10', 800, 100000, 1),
(21, '關勝', '天勇星·大刀','五虎上將', 1,'2017-4-6', 20000, 2000, 20),
(22, '林沖', '天雄星 豹子頭','五虎上將', 1,'2018-4-6', 21000, 1800, 20),
(23, '秦明', '天猛星 霹靂火','五虎上將', 1,'2018-4-6', 19000, 1900, 20),
(24, '呼延灼', '天威星 雙鞭','五虎上將', 1,'2019-4-6', 22000, 1100, 20),
(25, '董平', '天立星·雙槍將','五虎上將', 1,'2017-4-6', 18000, 1200, 20),
(2101, '花榮', '天英星 小李廣','騎兵頭領', 1,'2016-4-6', 16000, 2000, 21),
(2102, '徐寧', '天佑星 金槍手','騎兵都統', 2101,'2015-4-6', 12000, 1200, 21),
(2103, '楊志', '天暗星 青面獸','騎兵都統', 2101,'2016-4-6', 13000, 1200, 21),
(2104, '索超', '天空星 急先鋒','騎兵都統', 2101,'2018-4-6', 16000, 1100, 21),
(2105, '張青', '地刑星 菜園子','騎兵都統', 2101,'2016-4-6', 14000, 1000, 21),
(2106, '史進', '天微星 九紋龍','騎兵都統', 2101,'2017-4-6', 15000, 1100, 21),
(2107, '穆虹', '天究星 沒遮攔','騎兵都統', 2101,'2015-4-6', 14000, 1000, 21),
(2108, '朱仝', '天滿星 美髯公','騎兵都統', 2101,'2016-4-6', 14000, 1000, 21),
(2109, '王英', '地微星 矮腳虎','騎兵都統', 2101,'2017-4-6', 12000, 900, 21),
(2110, '扈三娘', '地慧星 一丈青','騎兵都統', 2101,'2017-4-6', 11000, 800, 21),
(2111, '呂方', '地佐星 小溫侯','騎兵都統', 2101,'2016-4-6', 12000, 900, 21),
(2112, '郭盛', '地佑星 賽仁貴','騎兵都統', 2101,'2016-4-6', 12000, 900, 21),
(2201, '魯智深', '天孤星 花和尚','步軍頭領', 1,'2015-4-6', 16000, 2000, 22),
(2202, '武松', '天傷星 行者','步軍都統', 2201,'2015-4-6', 16000, 1400, 22),
(2203, '劉唐', '天異星 赤髪鬼','步軍都統', 2201,'2014-4-6', 13000, 1200, 22),
(2204, '雷橫', '天退星 插翅虎','步軍都統', 2201,'2016-4-6', 12000, 1200, 22),
(2205, '李逵', '天殺星 黑旋風','步軍都統', 2201,'2018-4-6', 11000, 1200, 22),
(2206, '燕青', '天巧星 浪子','步軍都統', 2201,'2016-4-6', 13000, 1200, 22),
(2207, '石秀', '天慧星·拚命三郎','步軍都統', 2201,'2015-4-6', 12000, 1200, 22),
(2208, '楊雄', '天牢星 病關索','步軍都統', 2201,'2014-4-6', 13000, 1200, 22),
(2209, '解珍', '天暴星 兩頭蛇','步軍都統', 2201,'2013-4-6', 12000, 1200, 22),
(2210, '解寶', '天哭星 雙尾蝎','步軍都統', 2201,'2013-4-6', 12000, 1200, 22),
(2211, '孔明', '地猖星 毛頭星','步軍偏將', 2201,'2015-4-6', 13000, 1100, 22),
(2212, '孔亮', '地狂星 獨火星','步軍偏將', 2201,'2016-4-6', 13000, 1000, 22),
(2213, '樊瑞', '地默星 混世魔王','步軍偏將', 1201,'2014-4-6', 12000, 1000, 22),
(2214, '鮑旭', '地暴星 喪門神','步軍偏將', 1201,'2015-4-6', 12000, 900, 22),
(2215, '項充', '地飛星 八臂哪吒','步軍偏將', 2201,'2016-4-6', 11000, 900, 22),
(2216, '李袞', '地走星 飛天大圣','步軍偏將', 2201,'2016-4-6', 12000, 1100, 22),
(2217, '薛永', '地幽星 病大蟲','步軍偏將', 2201,'2014-4-6', 11000, 900, 22),
(2218, '施恩', '地伏星 金眼彪','步軍偏將', 2201,'2014-4-6', 12000, 900, 22),
(2219, '穆春', '地鎮星 小遮攔','步軍偏將', 2201,'2015-4-6', 12800, 900, 22),
(2220, '李忠', '地僻星 打虎將','步軍偏將', 2201,'2013-4-6', 11000, 1100, 22),
(2221, '鄭天壽', '地異星·白面郎君','步軍偏將', 2201,'2016-4-6', 12000, 1100, 22),
(2222, '宋萬', '地魔星 云里金剛','步軍偏將', 2201,'2016-4-6', 11000, 900, 22),
(2223, '杜遷', '地妖星 摸著天','步軍偏將', 2201,'2017-4-6', 10000, 900, 22),
(2224, '鄒淵', '地短星 出林龍','步軍偏將', 2201,'2017-4-6', 10000, 900, 22),
(2225, '鄒潤', '地角星 獨角龍','步軍偏將', 2201,'2018-4-6', 10000, 1100, 22),
(2226, '龔旺', '地捷星 花項虎','步軍偏將', 2201,'2018-4-6', 11000, 1000, 22),
(2227, '丁得孫', '地速星 中箭虎','步軍偏將', 2201,'2018-4-6', 12000, 900, 22),
(2228, '焦挺', '地惡星 沒面目','步軍偏將', 2201,'2018-4-6', 11000, 900, 22),
(2229, '石勇', '地丑星 石將軍','步軍偏將', 2201,'2018-4-6', 13000, 900, 22),
(2301, '李俊', '天壽星 混江龍','水軍頭領', 1,'2016-4-6', 16000, 2000, 23),
(2302, '張橫', '天平星 船火兒','水軍都統', 2301,'2017-4-6', 13000, 1000, 23),
(2303, '張順', '天損星 浪里白條','水軍都統', 2301,'2018-4-6', 12000, 1100, 23),
(2304, '阮小二', '天劍星 立地太歲','水軍都統', 2301,'2014-4-6', 14000, 1000, 23),
(2305, '阮小五', '天罪星 短命二郎','水軍都統', 2301,'2014-4-6', 14000, 1200, 23),
(2306, '阮小七', '天敗星 活閻羅','水軍都統', 2301,'2014-4-6', 14000, 1000, 23),
(2307, '童威', '地進星 出洞蛟','水軍偏將', 2301,'2018-4-6', 13000, 1100, 23),
(2308, '童猛', '地退星 翻江蜃','水軍偏將', 2301,'2018-4-6', 12000, 1000, 23),
(3001, '柴進', '天貴星 小旋風','財務部長', 1,'2014-4-6', 15000, 2000, 30),
(3002, '李應', '天富星 撲天雕','財務會計', 3001,'2014-4-6', 13000, 2000, 30),
(3003, '皇甫端', '地獸星 紫髯伯','財務會計', 3001,'2015-4-6', 13000, 2000, 30),
(4001, '公孫勝', '天閑星 入云龍','參謀長', 1,'2015-8-6', 15000, 2000, 40),
(4002, '張清', '天捷星 沒羽箭','參謀', 4001,'2016-9-15', 13000, 2000, 40),
(4003, '朱武', '地魁星 神機軍師','參謀', 4001,'2017-6-20', 13000, 2000, 40),
(4004, '安道全', '地靈星 神醫','參謀', 4001,'2015-10-18', 13000, 2000, 40),
(4005, '宋清', '地俊星 鐵扇子','參謀', 4001,'2018-11-16', 13000, 2000, 40),
(5001, '金大堅', '地巧星 玉臂匠','后勤部長', 1,'2015-2-1', 9000, 3000, 50),
(5002, '蔣敬', '地會星 神算子','后勤雜事', 5001,'2015-4-20', 9000, 2000, 50),
(5003, '孟康', '地滿星 玉幡竿','后勤雜事', 5001,'2016-5-10', 9000, 2000, 50),
(5004, '侯鍵', '地遂星 通臂猿','后勤雜事', 5001,'2016-8-16', 9000, 2000, 50),
(5005, '裴宣', '地正星 鐵面孔目','后勤雜事', 5001,'2017-12-3', 9000, 2000, 50),
(5006, '湯隆', '地孤星 金錢豹子','后勤雜事', 5001,'2017-1-20', 9000, 2000, 50),
(5007, '凌陣', '地輔星 轟天雷','后勤雜事', 5001,'2018-8-20', 9000, 2000, 50),
(5008, '李云', '地察星 青眼虎','后勤雜事', 5001,'2018-8-21', 9000, 2000, 50),
(5009, '曹正', '地羈星 操刀鬼','后勤雜事', 5001,'2018-9-10', 9000, 2000, 50),
(5010, '朱富', '地藏星 笑面虎','后勤雜事', 5001,'2018-9-15', 9000, 2000, 50),
(5011, '陶宗旺', '地理星 九尾龜','后勤雜事', 5001,'2018-9-22', 9000, 2000, 50),
(5012, '郁保四', '地健星 險道神','后勤雜事', 5001,'2018-10-6', 9000, 2000, 50),
(6001, '戴宗', '天速星 神行太保','軍情部長', 1,'2014-2-16', 5000, 10000, 50),
(6002, '樂和', '地樂星 鐵叫子','軍情都統', 6001,'2015-12-13', 2000, 8000, 50),
(6003, '時遷', '地賊星 鼓上蚤','軍情都統', 6001,'2015-10-16', 2000, 8000, 50),
(6004, '段景住', '地狗星 金毛犬','軍情都統', 6001,'2016-6-19', 2000, 8000, 50),
(6005, '白勝', '地耗星 白日鼠','軍情都統', 6001,'2016-8-20', 2000, 8000, 50),
(6006, '黃信', '地煞星 鎮三山','軍情遠哨', 6001,'2017-4-6', 2000, 8000, 50),
(6007, '孫立', '地勇星 病尉遲','軍情遠哨', 6001,'2018-12-6', 2000, 8000, 50),
(6008, '宣贊', '地杰星 丑郡馬','軍情遠哨', 6001,'2018-9-30', 2000, 8000, 50),
(6009, '郝思文', '地雄星 井木犴','軍情遠哨', 6001,'2018-5-21', 2000, 8000, 50),
(6010, '韓滔', '地威星 百勝將','軍情遠哨', 6001,'2018-5-21', 2000, 8000, 50),
(6011, '彭屺', '地英星 天目將','軍情遠哨', 6001,'2017-2-16', 2000, 8000, 50),
(6012, '單廷圭', '地奇星 圣水將','軍情遠哨', 6001,'2016-10-6', 2000, 8000, 50),
(6013, '魏定國', '地猛星 神火將','軍情遠哨', 6001,'2018-12-3', 2000, 8000, 50),
(6014, '歐鵬', '地辟星 摩云金翅','軍情遠哨', 6001,'2017-11-4', 2000, 8000, 50),
(6015, '鄧飛', '地闔星 火眼狻猊','軍情遠哨', 6001,'2017-11-5', 2000, 8000, 50),
(6016, '燕順', '地強星 錦毛虎','軍情遠哨', 6001,'2018-10-16', 2000, 8000, 50),
(6017, '馬麟', '地明星 鐵笛仙','軍情遠哨', 6001,'2018-10-16', 2000, 8000, 50),
(6018, '陳達', '地周星 跳澗虎','軍情遠哨', 6001,'2018-9-20', 2000, 8000, 50),
(6019, '楊春', '地隱星 白花蛇','軍情遠哨', 6001,'2018-9-20', 2000, 8000, 50),
(6020, '楊林', '地暗星 錦豹子','軍情遠哨', 6001,'2018-9-20', 2000, 8000, 50),
(6021, '周通', '地空星 小霸王','軍情遠哨', 6001,'2018-5-30', 2000, 8000, 50),
(7001, '孫新', '地數星 小尉遲','東山迎賓', 3,'2014-8-6', 8000, 9000, 70),
(7002, '顧大嫂', '地陰星 母大蟲','東山迎賓', 3,'2014-8-6', 8000, 9000, 70),
(7003, '張青', '地刑星 菜園子','西山迎賓', 3,'2015-6-12', 8000, 9000, 70),
(7004, '孫兒娘', '地壯星 母夜叉','西山迎賓', 3,'2015-6-12', 8000, 9000, 70),
(7005, '朱貴', '地囚星 旱地忽律','南山迎賓', 3,'2013-5-25', 8000, 9000, 70),
(7006, '杜興', '地全星 鬼瞼兒','南山迎賓', 3,'2013-5-26', 8000, 9000, 70),
(7007, '李立', '地奴星 催命判官','北山迎賓', 3,'2015-4-18', 8000, 9000, 70),
(7008, '王定六', '地劣星 活閃婆','北山迎賓', 3,'2015-4-18', 8000, 9000, 70),
(8001, '蔡福', '地平星 鐵臂膊','刑罰堂主', 3,'2013-7-10', 12000, 2000, 80),
(8002, '蔡慶', '地損星 一枝花','刑罰執法', 3,'2013-7-10', 12000, 2000, 80);
3 通過查詢增加資料
專案在操作程序中,表中的資料會隨時發生變化,在某些時刻我們需要對表中的所有資料轉移到表結構
一模一
樣的其他表中,此時,查詢并插入資料的語法就變得非常重要了
- 復制表結構創建歷史表
-- 創建歷史表:復制表結構,注意~如果不寫where false條件,表中的資料也會被復制到歷史表
CREATE TABLE dept_copy
SELECT * FROM department WHERE 1=2;
-- 如果不寫條件,那么會將表結構和資料一起復制
- 查詢的?式將當前表中的資料遷移到歷史表
-- 資料遷移
INSERT INTO dept_copy
SELECT * FROM department;
( 二 ) DELETE洗掉資料
洗掉資料屬于敏感操作,所以洗掉資料需要謹慎或是使用邏輯洗掉,
1 全表洗掉
- TRUNCATE TABLE [tab_name] ,洗掉表中的所有資料,包括重置主鍵編號等,
-- 清空表資料
truncate table dept_copy2;
- DELETE FROM tab_name ,只是將表中的資料全部洗掉,其他表的特征資訊不變,
-- 基本語法:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]
-- 清空表資料
delete from dept_copy;
2 指定條件洗掉(常用)
delete from table_name where 條件;
-- 洗掉department中重復的資料
delete from departent where id=81;
#3 指定洗掉數量
通過 LIMIT count 可以指定洗掉數量,在進行大量資料洗掉的時候,通過這樣的方式可以防止洗掉操作引起 CPU 的大量占用導致業務受理的阻塞,
-- 洗掉5條資料
delete from department3 limit 5;
( 三 ) UPDATE修改資料
UPDATE 陳述句可以針對表中的資料進行條件修改,在修改程序中條件一定要明確,避免誤傷其他資料導
致產生垃圾資料,
注意:不指定條件會導致全表修改,
UPDATE [LOW_PRIORITY] [IGNORE] table_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
-- 簡化版
update 表名 set 欄位1=value, 欄位2=value2... where 條件 ;
-- 修改梁山本部名稱:中央--》忠義堂
update department set deptname="忠義堂" where deptno=10;
( 四 ) SELECT 查詢資料(重點)
查詢操作,在增刪改查操作中,是屬于操作頻率最高,同時操作方式最多樣的,包含單表的操作以及多表關聯的操作,
1 普通查詢
基于單個資料表的資料查詢操作,我們稱為單表查詢,單表查詢是高級查詢的基礎,也是專案中在進行資料測驗時使用最多的SQL 陳述句,
(1)查詢所有欄位
select * from table_name;
-- 查詢職員表中所有資料
select * from employee;
星號代表任何欄位
(2)查詢指定欄位
-- 查看表中的指定欄位
select 欄位1,欄位2,欄位3... from 表名;
-- 查詢職員表中所有的職員姓名和入職時間
SELECT empname, hirdate FROM employee;
( 3 )在select后面列前使用distinct可以消除重復的行
select distinct 欄位... from 表名;
-- 查詢職員表中所有的崗位
SELECT DISTINCT job FROM employee;
( 4 )使用 as 給欄位起別名
select 欄位1 as 別名1, 欄位2 as 別名2, 欄位3 as 別名3 from 表;
-- 查看欄位,并起別名
select deptno as 編號,location as 位置 from department;
2 條件查詢
select * from 表 where 條件; ,where后面支持多種運算子,進行條件的處理
(1)比較運算子
-
等于(等于可以用于字符): =
-
大于: >
-
大于等于: >=
-
小于: <
-
小于等于: <=
-
不等于: != 或 <>
- -- 查詢作業為頭領的資料
select * from employee where job='頭領';
(2)邏輯運算子–用于多個條件查詢
-
and
-
or
-
not
-- 獲取作業為頭領,編號小于2的資料
select * from employee where job='頭領' and empno <2;
-- 獲取作業為頭領,編號不小于2的資料
select * from employee where job='頭領' and not empno <2;
(3)模糊查詢: like
-
%表示任意多個任意字符
-
_表示任意一個字符
-- 查詢nickname是 天 開頭的
select * from employee where nickname like "天%";
-- 查詢nickname為 天開頭,星結尾的人
select * from employee where nickname like "天%星";
(4)范圍查詢
-
in:表示在一個非連續范圍
-
between…and… 在一個連續范圍內
-- 查詢編號為1,11, 2211的人
select * from employee where empno in (1,11,2211);
-- 查詢編號為1到100的人
select * from employee where empno between 1 and 100;
select * from employee where empno >=1 and empno <=100;
- 查詢崗位 五虎上將、步軍頭領、騎兵頭領 的職員且編號需要小于100
SELECT * FROM employee
WHERE job IN ("五虎上將", "步軍頭領", "騎兵頭領") AND empno <100;
(5)空判斷
-
is null 判定為空
-
is not null 判斷非空
-- 查詢mgr為null的人
select * from employee where mgr is null;
-- 查詢學生表中身高為空的學生
select * from students where height is null;
3 排序
select * from 表名 order by 列1 asc|desc [,列2 asc|desc,…]
-
將行資料按照列1進行排序,如果某些行列1的值相同時,則按照列2排序,以此類推
-
默認按照列值從小到大排列(asc)
-
asc從小到大排列,即升序
-
desc從大到小排序,即降序
-- 按照作業從小到大順序查詢前10條
select * from employee order by job limit 10;
-- 按照作業從大到小順序查詢前10條
select * from employee order by job desc limit 10;
-- 按照首先comm的多少降序排序,然后按照empno升序排序
select empno,empname,comm from employee order by comm desc,empno asc limit 20;
4 聚合函式
(1)計數
count(*)表示計算總行數,括號中寫星號與欄位名,結果是相同的
-- 查詢表中資料數量
select count(*) from employee;
-- 統計編號小于100的人數
select count(*) from employee where empno<=100;
(2)最大值
- max(列)表示求此列的最大值
-- 查詢編號最大的人
select max(empno) from employee;
--查詢編號最大的騎兵都統
select max(empno) from employee where job='騎兵都統';
(3)最小值
- min(列)表示求此列的最小值
--查詢編號最小的騎兵都統
select min(empno) from employee where job='騎兵都統';
( 4 )求和
- sum(列)表示求此列的和
-- 計算總工資
select sum(salary) from employee;
-- 計算平均工資
select sum(salary)/count(*) as 平均工資 from employee;
( 5 )平均值
- avg(列)表示求此列的平均值
select avg(salary) as 平均工資 from employee;
5 分組
group by 欄位
1. group by 欄位 的含義:將查詢結果按照1個或多個欄位進行分組,欄位值相同的為一組
2. group by可用于單個欄位分組,也可用于多個欄位分組
select job from employee group by job;
group by單獨使用時,只顯示出每組的第一條記錄, 所以group by單獨使用時的實際意義不大
通常會和其他方法合用,
1 group by + group_concat()
- group_concat(欄位名)可以作為一個輸出欄位來使用
- 表示分組之后,根據分組結果,使用group_concat()來放置每一組的某欄位的值的集合
-- 查看每個作業中的名單
select job,group_concat(empname) from employee group by job;
-- 查看每個工資中的名單
select salary,group_concat(empname) from employee group by salary;
-- 查看每個獎金分組中的名單
select comm,group_concat(empname) from employee group by comm;
2 group by + 聚合函式
-- 查看每個作業中的平均工資
select job,avg(salary) from employee group by job;
-- 查看每個作業中的平均獎金
select job,avg(comm) from employee group by job;
-- 查看每個作業中的人數,和平均工資
select job,count(*),avg(salary) from employee group by job;
3 group by + having
- having 條件運算式:用來分組查詢后指定一些條件來輸出查詢結果
- having作用和where一樣,但having只能用于group
by
-- 查看每個作業中的人數,且人數大于2,和平均工資
select job,count(*),avg(salary) from employee group by job having count(*) >2;
6 獲取部分行
格式: select * from 表名 limit [offset,]count
- offset:跳過資料條數
- count:獲取資料數量
-- 跳過前兩條,從第三條資料開始,獲取3條資料
select * from employee limit 2,3;
-- 獲取前10條資料
select * from employee limit 10;
select * from employee limit 0,10;
分頁
--已知:每頁顯示m條資料,當前顯示第n頁,求第n頁資料
select * from employee limit (n-1)*m,m;
總結
SELECT select_expr [,select_expr,...] [
FROM tb_name
[WHERE 條件判斷]
[GROUP BY {col_name | postion} [ASC | DESC], ...]
[HAVING 條件判斷]
[ORDER BY {col_name|expr|postion} [ASC | DESC], ...]
[LIMIT {[offset,]rowcount | row_count OFFSET offset}]
]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/235537.html
標籤:其他
下一篇:Namp使用
