数据库学习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('张无忌爱上了周芷若','周芷若','赵敏');