更新时候:2023年03月03日14时58分 来历:传智教导 阅读次数:
DQL英文全称是Data Query Language(数据查问说话),数据查问说话,用来查问数据库中表的记实。查问关头字: SELECT 在一个一般的停业体系中,查问操纵的频率是要远高于增编削的,当咱们去拜候企业官网、电商网站,在这些网站中咱们所看到的数据,现实都是须要从数据库中查问并展现的。并且在查问的进程中,能够还会触及到前提、排序、分页等操纵。
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');筹办终了后,咱们便能够看到emp表中筹办的16条数据。接上去,咱们来进修DQL查问操纵的语法。
DQL 查问语句,语法布局以下:
SELECT 字段列表 FROM 表名列表 WHERE 前提列表 GROUP BY 分组字段列表 HAVING 分组后前提列表 ORDER BY 排序字段列表 LIMIT 分页参数
这局部内容,咱们能够将将下面的完全语法停止拆分,分为以下几个局部:
根基查问(不带任何前提)
前提查问(WHERE)
聚合函数(count、max、min、avg、sum)
分组查问(group by)
排序查问(order by)
分页查问(limit)
1.根本查问
在根本查问的DQL语句中,不带任何的查问前提,查问的语法以下:
1). 查问多个字段
SELECT 字段1, 字段2, 字段3 ... FROM 表名 ;
SELECT * FROM 表名 ;
注重 : * 号代表查问一切字段,在现实开辟中尽可能罕用(不直观、影响效力)。
2). 为字段设置又名
SELECT 字段1 [ AS 又名1 ] , 字段2 [ AS 又名2 ] ... FROM 表名;
SELECT 字段1 [ 又名1 ] , 字段2 [ 又名2 ] ... FROM 表名;
3). 去除反复记实
SELECT DISTINCT 字段列表 FROM 表名;
案例:
A. 查问之前筹办的字段中的指定字段 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. 查问公司员工的下班地点有哪些(不要反复)
select distinct workaddress '任务地点' from emp;
2.前提查问
1). 语法
前提查问的语法格局以下:
SELECT 字段列表 FROM 表名 WHERE 前提列表 ;
2). 前提经常使用的比拟运算符以下:
经常使用的逻辑运算符以下:
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';