数据库学习Day4
1.模糊查询——like关键字
特点:①一般和通配符搭配使用
通配符:%任意多个字符,包含0个字符
SELECT * FROM last_name LIKE '%a%';
_ 任意单个字符
SELECT last_name,salary FROM employees WHERE last_name LIKE '__e_a%';
案例:查询员工名中第二个字符为_的员工名(两种方法)
SELECT last_name FROM employees WHERE last_name LIKE '_\_%';
SELECT last_name FROM employees WHERE last_name LIKE '_$_%' ESCAPE '$';
2.模糊查询——between and关键字
案例:查询员工编号在100到120之间的员工信息
select * from employees where employee_id between 100 and 120;
注意事项:①使用between and可以提高语句的简洁度
②包含临界值
③两个临界值不要调换顺序
3.模糊查询——in关键字
案例:查询员工的工种编号是IT_PROG,AD_VP,AD_PRES中的一个员工名和工种编号
select last_name,job_id from employees where job_id in('IT_PROT','AD_VP','AD_PRES');
特点:①使用in提高语句简洁度
②in列表的值类型必须一致或兼容
③in列表里的值不支持使用通配符
4.模糊查询——is null关键字
案例1:查询没有奖金的员工名和奖金率
select last_name,commission_pct from employees where commission_pct is null;
案例2:查询有奖金的员工名和奖金率
select last_name,commission_pct from employees where commossion_pct is not null;
注意事项:①=或<>不能用于判断null值
②is null或is not null可以判断null值
5.补充:安全等于 <=>(判断是否等于)
案例1(判断null值):查询没有奖金的员工名和奖金率
select last_name,commission_pct from employees where commission_pct <=>null;
案例2:查询工资为12000的员工信息
select last_name,salary from employees where salary <=> 12000;
6.排序查询
语法:select 查询列表 from 表 【where筛选条件】order by 排序列表 【asc|desc】
案例1:查询员工信息,要求工资从高到低排序
select * from payment order by amount desc;
特点:1.asc代表的是升序,desc代表的是降序,如果不写,默认是升序
2.order by 子句中可以支持单个字段,多个字段,表达式,函数,别名
3.order by子句一般放在查询语句的最后面,limit子句除外
案例2:查询编号>=100的客户信息,按费用由低到高进行排序【添加筛选条件】
select * from payment where customer_id>=100 order by amount;
案例3:按年薪的高低显示员工的信息和年薪【按表达式排序】
select *,amount*12 年薪 from payment order by amount*12 desc;
案例4:按姓名的长度显示员工的姓名和编号【按函数排序】
select length(last_name) 字节长度,last_name,actor_id from actor order by length(last_name) desc;
案例5:查询员工信息,要求先按工资升序,再按员工编号降序【按多个字段排序】
select * from payment order by amount asc,customer_id desc;
7.常见函数
概念:类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名
好处:1.隐藏了实现细节 2.提高代码的重用性
调用:select 函数名(实参列表)【from表】;
特点:①叫什么(函数名)②干什么(函数功能)
分类:1.单行函数,如:concat,length,ifnull等
2.分组函数,功能:做统计使用,又称为统计函数,聚合函数,组函数
8.单行函数——字符函数
①length 获取参数值的字节个数
select length('john'); //4
select length('张三丰hahaha'); //15
②concat 拼接字符串
select concat(last_name,'_',first_name) from actor;
③upper,lower
select upper('john');
select lower('JOhn');
select concat(upper(last_name),lower(first_name)) 姓名 from actor;
④substr,substring(索引从1开始)
截取从指定索引处后面所有字符
select substr('李莫愁爱上了陆展元',7) out_put;
截取从指定索引处指定字符长度的字符
select substr('李莫愁爱上了陆展元',7,3) out_put;
⑤instr(返回子串第一次出现的索引,如果找不到返回0)
select instr('杨不悔爱上了殷六侠','殷六侠') as out_put;
⑥trim
select trim(' 张翠山 ') as out_put;
只能去两端的字符:
select trim('a' from 'aaaaaa张aaaaaaaaaa翠山aaaaaaaaaaaaa');
⑦Lpad(用指定的字符实现左填充指定长度)
select Lpad('殷素素',10,'*') as out_put;
⑧rpad(用指定的字符实现右填充指定长度)
select rpad('殷素素',12,'ab') as out_put;
⑨replace 替换
select replace('张无忌爱上了周芷若','周芷若','赵敏');