语法:
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);# -2ceil #向上取整
1. 返回>=该值的最小整数 2. select ceil(-1.6);# -1floor #向下取整
1. 返回<=该值的最大整数 2. select floor(-1.6);# -2truncate #截断
1. 保留小数点后几位数字,而不是保留整体几位有效数字,也不会四舍五入 2. select truncate(1.23443,2); # 1.23mod #取余
1. select mod(-10,3); #-1 2. select mod(-10,-3); #-1 3. select mod(10,-3); #1now #返回当前系统时间
select now(); #2020-10-22 15:36:27curdate #返回当前日期,不包含时间
select curdate(); #15:36:40curtime #返回当前时间,不包含日期
select curtime(); #2020-10-22自定义获取指定的部分,年、月、日、小时、分钟、秒
select year(now()); #2020 select year('1998-01-22'); #1998 select month(now()); #10 select monthname(now()); #Octoberif函数: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]