-- 数据准备---------createtable emp(
id intcomment'编号',
workno varchar(10)comment'工号',
name varchar(10)comment'姓名',
gender char(1)comment'性别',
age tinyintunsignedcomment'年龄',
idcard char(18)comment'身份证号',
workaddress varchar(50)comment'工作地址',
entrydate datecomment'入职时间')comment'员工表';-- 插入数据----------insertinto emp (id, workno, name, gender, age, idcard, workaddress, entrydate)values(1,'1','柳岩','女',20,'123456789012345678','北京','2000-01-01'),(2,'2','张无忌','男',18,'123456789012345670','北京','2005-09-01'),(3,'3','韦一笑','男',38,'123456789012345671','上海','2000-08-01'),(4,'4','赵敏','女',18,'123456789012345672','北京','2009-12-01'),(5,'5','小昭','女',16,'123456789012345673','上海','2007-07-01'),(6,'6','杨逍','男',28,'123456789012345674','北京','2006-01-01'),(7,'7','范瑶','男',40,'123456789012345675','北京','2005-05-01'),(8,'8','黛绮丝','女',38,'123456789012345676','天津','2015-05-01'),(9,'9','范凉凉','女',45,'123456789012345677','北京','2010-04-01'),(10,'10','陈友谅','男',53,'123456789012345679','上海','2011-01-01'),(11,'11','张士诚','男',55,'123456789012345608','江苏','2015-05-01'),(12,'12','常遇春','男',32,'123456789012345618','北京','2004-02-01'),(13,'13','张三丰','男',88,'123456789012345628','江苏','2020-11-01'),(14,'14','灭绝','女',65,'123456789012345638','西安','2019-05-01'),(15,'15','胡青牛','男',70,'123456789012345648','西安','2018-04-01'),(16,'16','周芷若','女',18,null,'北京','2023-06-01');desc emp;-- -------------------------- 查询需求 ---------------------------------------------------- -- 基本查询-- 1、查询指定字段name,workno,age返回select name, workno, age from emp;-- 2、查询所有字段返回select id, workno, name, gender, age, idcard, workaddress, entrydate from emp;select*from emp;-- 3、查询所有员工的工作地址,起别名select workaddress from emp;select workaddress as'工作地址'from emp;select workaddress '工作地址'from emp;-- 4、查询公司员工的上班地址(不要重复)selectdistinct workaddress '工作地址'from emp;-- 条件查询-- 1、查询年龄为88的员工select*from emp where age =88;-- 2、查询年龄小于20的员工信息select*from emp where age <20;-- 3、查询年龄小于等于20的员工信息select*from emp where age <=20;-- 4、查询没有身份证号的员工信息select*from emp where idcard isnull;-- 5、查询有身份证号的员工信息select*from emp where idcard isnotnull;-- 6、查询年龄不等于88的员工信息select*from emp where age !=88;select*from emp where age <>88;-- 7、查询年龄在15岁(包含)到20岁(包含)之间的员工信息select*from emp where age >=15and age <=20;select*from emp where age >=15&& age <=20;select*from emp where age between15and20;-- 8、查询性别为女且年龄小于25岁的员工信息select*from emp where gender ='女'and age <25;-- 9、查询年龄等于18或20或40的员工信息select*from emp where age =18or age =20or age =40;select*from emp where age in(18,20,40);-- 10、查询姓名为两个字的员工信息select*from emp where name like'__';-- 11、查询身份证号最后一位是X的员工信息select*from emp where idcard like'%X';-- 聚合函数-- 1、统计该企业员工数量selectcount(*)from emp;selectcount(idcard)from emp;-- 2、统计该企业员工的平均年龄selectavg(age)from emp;-- 3、统计该企业员工的最大年龄selectmax(age)from emp;-- 4、统计该企业员工的最小年龄selectmin(age)from emp;-- 5、统计西安地区该企业员工的年龄之和select*from emp where workaddress ='西安';selectsum(age)from emp where workaddress ='西安';-- 分组查询-- 1、根据性别分组,统计男性员工和女性员工的数量selectcount(*)from emp groupby gender;select gender,count(*)from emp groupby gender;-- 2、根据性别分组,统计男性员工和女性员工的平均年龄select gender,avg(age)from emp groupby gender;-- 3、查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址select workaddress,count(*) address_count from emp where age <45groupby workaddress havingcount(*)>=3;-- 排序查询-- 1、根据年龄对公司的员工进行升序排序select*from emp orderby age asc;-- 升序select*from emp orderby age desc;-- 降序select*from emp orderby age ;-- 升序是默认值-- 2、根据入职时间,对员工进行降序排序select*from emp orderby entrydate desc;-- 3、根据年龄对公司的员工进行升序排序,年龄相同,在按入职时间进行降序排序select*from emp orderby age asc, entrydate desc;select*from emp orderby age asc, entrydate ;-- 分页查询-- 1、查询第一页员工数据,每页展示10条记录select*from emp limit0,10;select*from emp limit10;-- 2、查询第二页员工数据,每页展示10条记录-------------->(页码-1)*页展示记录数select*from emp limit10,10;-- ---------------------------------DQL语句练习----------------------------------------------------------------- 1、查询年龄为20,21,22,23岁的女性员工信息。select*from emp where gender ='女'and age in(20,21,22,23);-- 2、查询性别为男,并且年龄在20-40岁(含)以内的姓名为三个字的员工。select*from emp where gender ='男'and age between20and40and name like'___';select*from emp where gender ='男'and(age between20and40)and name like'___';-- 3、统计员工表中,年龄小于60岁的,男性员工和女性员工的人数。selectcount(*)from emp where age <60;-- 统计了年龄小于60岁的员工人数select gender,count(*)from emp where age <60groupby gender;-- 4、查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序。select name, age from emp where age <=35orderby age asc, entrydate desc;-- 5、查询性别为男,且年龄在20-40岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序。select*from emp where gender ='男'and age between20and40orderby age asc, entrydate asclimit5;-- DQL语句编写顺序:-- 1、select语句-- 2、from语句-- 3、where语句-- 4、group by语句-- 5、having语句-- 6、order by语句-- 7、limit语句-- DQL语句执行顺序:-- 1、执行from语句,找到要查询的表-- 2、执行where语句,根据限定条件进行查询-- 3、执行group by或者having,根据指定的字段进行分组-- 4、然后执行select进行查询-- 5、查询完以后执行order by进行排序-- 6、最后执行limit语句进行分页-- 查询年龄大于15的员工的姓名、年龄,并根据年龄进行升序排序select e.name, e.age from emp e where e.age >15orderby age asc;-- DCL介绍:-- data control language,即数据控制语言,用来管理数据库用户、控制数据库的访问权限。-- DCL-管理用户-- 1、查询用户-- 2、创建用户-- 3、修改用户密码-- 4、删除用户-- 创建用户 itcast, 只能够在当前主机localhost访问,密码是123456createuser'itcast'@'localhost' identified by'123456';-- 创建用户 heima,可以在任意主机访问该数据库,密码123456createuser'heima'@'%' identified by'123456';-- 修改用户heima的访问密码为1234alteruser'heima'@'%' identified with mysql_native_password by'1234';-- 删除itcast@localhost用户dropuser'itcast'@'localhost';-- 查询权限show grants for'heima'@'%';-- 授予权限grantallon itcase.*to'heima'@'%';-- 撤销权限revokeallon itcase.*from'heima'@'%';