查询编写顺序为:
select-> from -> where -> group by -> having -> order by -> limit
基本查询综合题
1、查询emp表中性别为女并且年龄在21,21,22,23岁中的全部员工
select * from emp where gender=’女‘ and age in (20,21,22,23);
2、查询emp表中性别为男,年龄在20到40岁之间姓名为三个字的员工
select * from emp where gender=’男‘ and age between 20 and 40 and name like ‘___’;
3、统计年龄小于等于60岁的员工,并按性别进行分组
select gender,count(*) from emp where age<=60 group by gender;
4、统计年龄小于等于35员工的姓名,对查询结果按照年龄的升序排序,年龄相同按入职日期进行降序排序
select name,age from emp where age <=35 order by age asc,workdate desc;
5、查询性别为男,且年龄在20-40岁(含)以内的前5个员工信息,对查询结果按年龄升序排序,年龄相同按入职时间升序排序
select * from emp where gender=’男‘ and age between 20 and 40 order by age asc,entrydate asc limit 5;
6、查询年龄小于45的员工,并根据地址分组,获取员工数量大于等于3的工作地址
select workaddress,count(*)(获取进行所有判断后所得的员工数量的值并显示出来) from emp where age < 45 group by workaddress having count(*) >=3(对分组后员工值进行数量判断);
DCL-管理数据库用户,控制数据库访问权限
用户管理
1、创建用户itcast,只能够在当前主机localhost访问,密码为123456;
create user ‘itcast’ @ ‘localhost’ identified by ‘123456’;
2、创建用户shizhen,可以在任意主机访问数据库,密码为123456;
create user ‘shizhen’ @ ‘%’ identified by ‘123456’;
3、修改用户‘shizhen’的访问密码为‘1234’
alter user ‘shizhen’ @ ’%’ identified with mysql_native_password ‘1234’;
4、删除itcast@localhost的用户
drop user ‘itcast’ @ ‘localhost’;
权限控制
1、查询权限
show grants for ‘heima’ (用户名)@ ‘%’(主机名);
2、授予权限
grant(授予) all(权限列表) on itcast.* (数据库名.表名)to ‘heima’ (用户名)@ ‘%’(主机名);
3、撤销权限
revoke all on itcast.* from ‘heima’ @ ‘%’;
字符串函数
1、拼接字符串
select concot(‘Hello’,’MySQL’);
结果:HelloMySQL
2、转化字符串为小写
select lower(‘Hello’);
结果:hello
3、转化字符串为大写
select upper(‘Hello’);
结果:HELLO
4、填充字符串(向前面充字符)
select lpod(‘01’,5,’-’); (操作字符串,填充位数到几位,拿什么填充)
结果:---01
5、填充字符串(向后面充字符)
select rpod(‘01’,5,’-‘);
结果:01---
6、去除头部尾部的空格
select trim(‘ Hello MySQL ‘);
结果:Hello MySQL(只去除头部和尾部的空格)
7、截取字符串从1到5(与Java所规定不一样,这个第一个即1,第五个即5);
select substring(‘Hello,MySQL’,1,5);
结果:Hello
例:
由于业务需求的变更,企业员工的工号统一为5位数,不足5位数的全部在前面补0,比如1号员工的工号应为00001;
update emp set wordon=lpod(workon,5,’0’) ;
数值函数
1、向上取整
select ceil(1.5);
结果:2
2、向下取整
select floor(1.9);
结果:1
3、取余
select mod(6,4);
结果:2
4、求随机数(在0到1内随机生成数)
select rand();
5、四舍五入保留n位小数、round(?,n)、?保留n位小数
select round(2.345,2);
结果:2.35
例:
通过数据库的函数,生成一个六位数随机二维码
select lpod(round(rand()*1000000,0),6,’0’);
填充(四舍五入(随机数*1000000,保留0位数),生成6位数,用0填充);