更新時間:2022-10-07 來源:黑馬程序員 瀏覽量:
DQL英文全稱是Data Query Language(數(shù)據(jù)查詢語言),數(shù)據(jù)查詢語言,用來查詢數(shù)據(jù)庫中表的記錄。查詢關(guān)鍵字: SELECT 在一個正常的業(yè)務(wù)系統(tǒng)中,查詢操作的頻次是要遠(yuǎn)高于增刪改的,當(dāng)我們?nèi)ピL問企業(yè)官網(wǎng)、電商網(wǎng)站,在這些網(wǎng)站中我們所看到的數(shù)據(jù),實(shí)際都是需要從數(shù)據(jù)庫中查詢并展示的。而且在查詢的過程中,可能還會涉及到條件、排序、分頁等操作。
drop table if exists employee; create table emp( id int comment '編號', workno varchar(10) comment '工號', name varchar(10) comment '姓名', gender char(1) comment '性別', age tinyint unsigned comment '年齡', idcard char(18) comment '身份證號', workaddress varchar(50) comment '工作地址', entrydate date comment '入職時間' )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', '張無忌', '男', 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', '張士誠', '男', 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ù)。接下來,我們來學(xué)習(xí)DQL查詢操作的語法。
DQL 查詢語句,語法結(jié)構(gòu)如下:
SELECT 字段列表 FROM 表名列表 WHERE 條件列表 GROUP BY 分組字段列表 HAVING 分組后條件列表 ORDER BY 排序字段列表 LIMIT 分頁參數(shù)
這部分內(nèi)容,我們可以將將上面的完整語法進(jìn)行拆分,分為以下幾個部分:
基本查詢(不帶任何條件)
條件查詢(WHERE)
聚合函數(shù)(count、max、min、avg、sum)
分組查詢(group by)
排序查詢(order by)
分頁查詢(limit)
1.基礎(chǔ)查詢
在基礎(chǔ)查詢的DQL語句中,不帶任何的查詢條件,查詢的語法如下:
1). 查詢多個字段
SELECT 字段1, 字段2, 字段3 ... FROM 表名 ;
SELECT * FROM 表名 ;
注意 : * 號代表查詢所有字段,在實(shí)際開發(fā)中盡量少用(不直觀、影響效率)。
2). 為字段設(shè)置別名
SELECT 字段1 [ AS 別名1 ] , 字段2 [ AS 別名2 ] ... FROM 表名;
SELECT 字段1 [ 別名1 ] , 字段2 [ 別名2 ] ... FROM 表名;
3). 去除重復(fù)記錄
SELECT DISTINCT 字段列表 FROM 表名;
案例:
A. 查詢之前準(zhǔn)備的字段中的指定字段 name, workno, age并返回,示例代碼如下:
select name,workno,age from emp;
B. 查詢返回所有字段
select id ,workno,name,gender,age,idcard,workaddress,entrydate from emp;
select * from emp;
C. 查詢所有員工的工作地址,起別名
select workaddress as '工作地址' from emp;
-- as可以省略 select workaddress '工作地址' from emp;
D. 查詢公司員工的上班地址有哪些(不要重復(fù))
select distinct workaddress '工作地址' from emp;
2.條件查詢
1). 語法
條件查詢的語法格式如下:
SELECT 字段列表 FROM 表名 WHERE 條件列表 ;
2). 條件常用的比較運(yùn)算符如下:
常用的邏輯運(yùn)算符如下:
案例: A. 查詢年齡等于 88 的員工select * from emp where age = 88;B. 查詢年齡小于 20 的員工信息
select * from emp where age < 20;C. 查詢年齡小于等于 20 的員工信息
select * from emp where age <= 20;D. 查詢沒有身份證號的員工信息
select * from emp where idcard is null;E. 查詢有身份證號的員工信息
select * from emp where idcard is not null;F. 查詢年齡不等于 88 的員工信息
select * from emp where age != 88; select * from emp where age <> 88;G. 查詢年齡在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. 查詢性別為 女 且年齡小于 25歲的員工信息
select * from emp where gender = '女' and age < 25;I. 查詢年齡等于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. 查詢姓名為兩個字的員工信息 _ %
select * from emp where name like '__';K. 查詢身份證號最后一位是X的員工信息
select * from emp where idcard like '%X'; select * from emp where idcard like '_________________X';