主頁 > 軟體設計 > 該知道的都知道 不知道的慢慢了解 MySQL資料庫操作

該知道的都知道 不知道的慢慢了解 MySQL資料庫操作

2020-12-16 13:41:35 軟體設計

一、資料庫操作

  • 查看所有資料庫
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 010;

分頁

--已知:每頁顯示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

標籤:其他

上一篇:C++高并發網路架構與實作——第五篇

下一篇:Namp使用

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more