更新時(shí)間:2023年03月03日14時(shí)58分 來(lái)源:傳智教育 瀏覽次數(shù):
DQL英文全稱(chēng)是Data Query Language(數(shù)據(jù)查詢(xún)語(yǔ)言),數(shù)據(jù)查詢(xún)語(yǔ)言,用來(lái)查詢(xún)數(shù)據(jù)庫(kù)中表的記錄。查詢(xún)關(guān)鍵字: SELECT 在一個(gè)正常的業(yè)務(wù)系統(tǒng)中,查詢(xún)操作的頻次是要遠(yuǎn)高于增刪改的,當(dāng)我們?nèi)ピL問(wèn)企業(yè)官網(wǎng)、電商網(wǎng)站,在這些網(wǎng)站中我們所看到的數(shù)據(jù),實(shí)際都是需要從數(shù)據(jù)庫(kù)中查詢(xún)并展示的。而且在查詢(xún)的過(guò)程中,可能還會(huì)涉及到條件、排序、分頁(yè)等操作。
那么,本小節(jié)我們主要學(xué)習(xí)的就是如何進(jìn)行數(shù)據(jù)的查詢(xún)操作。 我們先來(lái)準(zhǔn)備一些數(shù)據(jù):drop table if exists employee; create table emp( id int comment '編號(hào)', workno varchar(10) comment '工號(hào)', name varchar(10) comment '姓名', gender char(1) comment '性別', age tinyint unsigned comment '年齡', idcard char(18) comment '身份證號(hào)', workaddress varchar(50) comment '工作地址', entrydate date comment '入職時(shí)間' )comment '員工表'; INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate) VALUES (1, '00001', '柳巖666', '女', 20, '123456789012345678', '北京', '2000-01- 01'); INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate) VALUES (2, '00002', '張無(wú)忌', '男', 18, '123456789012345670', '北京', '2005-09- 01'); INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate) VALUES (3, '00003', '韋一笑', '男', 38, '123456789712345670', '上海', '2005-08- 01'); INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate) VALUES (4, '00004', '趙敏', '女', 18, '123456757123845670', '北京', '2009-12-01'); INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate) VALUES (5, '00005', '小昭', '女', 16, '123456769012345678', '上海', '2007-07-01'); INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate) VALUES (6, '00006', '楊逍', '男', 28, '12345678931234567X', '北京', '2006-01-01'); INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate) VALUES (7, '00007', '范瑤', '男', 40, '123456789212345670', '北京', '2005-05-01'); INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate) VALUES (8, '00008', '黛綺絲', '女', 38, '123456157123645670', '天津', '2015-05- 01'); INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate) VALUES (9, '00009', '范涼涼', '女', 45, '123156789012345678', '北京', '2010-04- 01'); INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate) VALUES (10, '00010', '陳友諒', '男', 53, '123456789012345670', '上海', '2011-01- 01'); INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate) VALUES (11, '00011', '張士誠(chéng)', '男', 55, '123567897123465670', '江蘇', '2015-05- 01'); INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate) VALUES (12, '00012', '常遇春', '男', 32, '123446757152345670', '北京', '2004-02- 01'); INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate) VALUES (13, '00013', '張三豐', '男', 88, '123656789012345678', '江蘇', '2020-11- 01'); INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate) VALUES (14, '00014', '滅絕', '女', 65, '123456719012345670', '西安', '2019-05- 01'); INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate) VALUES (15, '00015', '胡青牛', '男', 70, '12345674971234567X', '西安', '2018-04- 01'); INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate) VALUES (16, '00016', '周芷若', '女', 18, null, '北京', '2012-06-01');準(zhǔn)備完畢后,我們就可以看到emp表中準(zhǔn)備的16條數(shù)據(jù)。接下來(lái),我們來(lái)學(xué)習(xí)DQL查詢(xún)操作的語(yǔ)法。
DQL 查詢(xún)語(yǔ)句,語(yǔ)法結(jié)構(gòu)如下:
SELECT 字段列表 FROM 表名列表 WHERE 條件列表 GROUP BY 分組字段列表 HAVING 分組后條件列表 ORDER BY 排序字段列表 LIMIT 分頁(yè)參數(shù)
這部分內(nèi)容,我們可以將將上面的完整語(yǔ)法進(jìn)行拆分,分為以下幾個(gè)部分:
基本查詢(xún)(不帶任何條件)
條件查詢(xún)(WHERE)
聚合函數(shù)(count、max、min、avg、sum)
分組查詢(xún)(group by)
排序查詢(xún)(order by)
分頁(yè)查詢(xún)(limit)
1.基礎(chǔ)查詢(xún)
在基礎(chǔ)查詢(xún)的DQL語(yǔ)句中,不帶任何的查詢(xún)條件,查詢(xún)的語(yǔ)法如下:
1). 查詢(xún)多個(gè)字段
SELECT 字段1, 字段2, 字段3 ... FROM 表名 ;
SELECT * FROM 表名 ;
注意 : * 號(hào)代表查詢(xún)所有字段,在實(shí)際開(kāi)發(fā)中盡量少用(不直觀、影響效率)。
2). 為字段設(shè)置別名
SELECT 字段1 [ AS 別名1 ] , 字段2 [ AS 別名2 ] ... FROM 表名;
SELECT 字段1 [ 別名1 ] , 字段2 [ 別名2 ] ... FROM 表名;
3). 去除重復(fù)記錄
SELECT DISTINCT 字段列表 FROM 表名;
案例:
A. 查詢(xún)之前準(zhǔn)備的字段中的指定字段 name, workno, age并返回,示例代碼如下:
select name,workno,age from emp;
B. 查詢(xún)返回所有字段
select id ,workno,name,gender,age,idcard,workaddress,entrydate from emp;
select * from emp;
C. 查詢(xún)所有員工的工作地址,起別名
select workaddress as '工作地址' from emp;
-- as可以省略 select workaddress '工作地址' from emp;
D. 查詢(xún)公司員工的上班地址有哪些(不要重復(fù))
select distinct workaddress '工作地址' from emp;
2.條件查詢(xún)
1). 語(yǔ)法
條件查詢(xún)的語(yǔ)法格式如下:
SELECT 字段列表 FROM 表名 WHERE 條件列表 ;
2). 條件常用的比較運(yùn)算符如下:
常用的邏輯運(yùn)算符如下:
案例: A. 查詢(xún)年齡等于 88 的員工select * from emp where age = 88;B. 查詢(xún)年齡小于 20 的員工信息
select * from emp where age < 20;C. 查詢(xún)年齡小于等于 20 的員工信息
select * from emp where age <= 20;D. 查詢(xún)沒(méi)有身份證號(hào)的員工信息
select * from emp where idcard is null;E. 查詢(xún)有身份證號(hào)的員工信息
select * from emp where idcard is not null;F. 查詢(xún)年齡不等于 88 的員工信息
select * from emp where age != 88; select * from emp where age <> 88;G. 查詢(xún)年齡在15歲(包含) 到 20歲(包含)之間的員工信息
select * from emp where age >= 15 && age <= 20; select * from emp where age >= 15 and age <= 20; select * from emp where age between 15 and 20;H. 查詢(xún)性別為 女 且年齡小于 25歲的員工信息
select * from emp where gender = '女' and age < 25;I. 查詢(xún)年齡等于18 或 20 或 40 的員工信息
select * from emp where age = 18 or age = 20 or age =40; select * from emp where age in(18,20,40);J. 查詢(xún)姓名為兩個(gè)字的員工信息 _ %
select * from emp where name like '__';K. 查詢(xún)身份證號(hào)最后一位是X的員工信息
select * from emp where idcard like '%X'; select * from emp where idcard like '_________________X';
北京校區(qū)