MySql

it2024-11-04  7

条件查询

语法:

select ② 查询列表 from ① 表名 where ③ 筛选条件;//根据条件,判断数据是否能够留下来

分类

按条件表达式筛选

条件运算符:>,<,=,<>,>=,<=

按逻辑表达式筛选

逻辑运算符:and,or,not 注意:逻辑运算符其实并不能单独的作为判断条件使用,换句话说,它必须与条件表达式配合使用,用来连接条件表达式

模糊查询 #其实这也算是条件表达式,只是更加高级

like 特点:一般和通配符搭配使用 通配符: %: 任意多个字符,包含0个字符 _: 任意单个字符 between and in is null/is not null <=>: 安全等于 注意: 1. =,<>判断数值,判断字符,但不能判断null, 2. <=>不仅可以用来判断数值,可以用来判断是否为null,但可读性比较差, 3. 使用 is null或 is not null来判断null,但 is 不能用来判断数值

判断工号为176的员工的姓名,部门号和年薪

select last_name, department_id, salary*12(1 + ifnull (commission_pect,0)) as 年薪 from employees where department_id=176;

排序查询

语法

select 查询列表 from 表 where 筛选条件 order by 排序列表 asc | desc;#默认为升序

常见函数

概念:类似于java方法,将一组逻辑语句封装在方法体中,对外暴露方法名

优点:

1. 封装性,隐藏实现细节 2. 提高代码的重用性

调用:目前都是使用现成的,后面会学到自定义函数

select 函数名(实参列表) 【from 表】

分类:

1. 单行函数,如concat,length,ifnull等,传入一个值,输出一个值 2. 分组函数,统计使用,传入一组值,输出一个值

字符函数

length #获取参数值的字节个数

select length('john'); select length('奥术大师ads');#一个中文字符占用三个字节

concat #拼接字符

select concat(last_name,' ',first_name) as 姓名 from employees;

upper, lower # 大小写变化

select upper('qweqwe'); select lower('DSASDwqq') ;

substr, substring #字符截取,

1. 索引从1开始,from index1 to index2, 1. 如果只取一个,则index1=index2; 2. 如果取到最后,则idnex2不用写 2. select substr('天不生我李淳罡',5,7) as output; 3. select substr('天不生我李淳罡',5) as output; #这个7没必要写

instr #返回子串第一次出现的索引,若无,返回0;否则返回第一个字符的索引

select instr('独孤求败','求') as ouput;

trim #去掉首尾的特定字符,默认去掉空格

select length(trim(' 风天养 ')) as output; select trim('aa' from 'aaaaaaaaa张 天 师 aaa');

lapd #指定字符左填充

1. 需指定填充后的字符数(注意这里的都是字符),以及填充内容 2. 若是填充内容无法完全填入,则选取满足字符数要求的前 n 个字符填充 3. 若是被填充内容本身字符数就大于给定字符数要求,则按字符数要求取出前 n 个字符作为结果 3. select lpad('乾坤大挪移',10,'哈哈') as output;# 哈哈哈哈哈乾坤大挪移

rpad #指定字符右填充

replace #替换

select replace('此剑抚平天下不平事','剑','sword') ;

数学函数

round #四舍五入

1. 先看绝对值的四舍五入,再看符号 2. select round(-1.6);# -2

ceil #向上取整

1. 返回>=该值的最小整数 2. select ceil(-1.6);# -1

floor #向下取整

1. 返回<=该值的最大整数 2. select floor(-1.6);# -2

truncate #截断

1. 保留小数点后几位数字,而不是保留整体几位有效数字,也不会四舍五入 2. select truncate(1.23443,2); # 1.23

mod #取余

1. select mod(-10,3); #-1 2. select mod(-10,-3); #-1 3. select mod(10,-3); #1

日期函数

now #返回当前系统时间

select now(); #2020-10-22 15:36:27

curdate #返回当前日期,不包含时间

select curdate(); #15:36:40

curtime #返回当前时间,不包含日期

select curtime(); #2020-10-22

自定义获取指定的部分,年、月、日、小时、分钟、秒

select year(now()); #2020 select year('1998-01-22'); #1998 select month(now()); #10 select monthname(now()); #October

其他函数

1. select version(); 2. select database(); #查看当前数据库 3. select user(); #查看当前用户,root@localhost

流程控制函数

if函数:if else 效果,类似三目运算符

select if(10<5,'大',‘小’);

case:1 #类似switch

case + 要判断的字段或表达式 when + 常量1 + then + 要显示的值1或语句1 when + 常量2 + then + 要显示的值2或语句2 ... else + 要显示的值3或语句3 end [as sth]

case :2 #类似if,与case1的区别在于,case1常用来作值判断,而case2用来作区间判断

case when + 语句1 then + 要显示的值1或语句1 when + 语句2 then + 要显示的值2或语句2 ... else + 要显示的值3或语句3 end [as sth]
最新回复(0)