面试必刷!MySQL常用函数、关键字。

    科技2022-07-29  112

    目录

    引言一、数据库简介:二、SQL语句:三、MySQL常用函数:数学函数:日期函数:MySQL其他命令:四、Navicat快捷键:

    引言

    暂时只想起来这些,有需要补充的或者文章内出现的错误欢迎指正(评论 or 私信)。 请努力提升自己! 划重点 点击下面连接,直接查看我的日常笔记,比csdn更新快,内容更丰富。 不断更新完善的笔记

    一、数据库简介:

    1、数据库常见的概念: DB:数据库,存储数据的容器。 DBMS:数据库管理系统,又称为数据库软件或数据库管理产品,用于创建或管理DB。 SQL:结构化查询语言,数据库通信语言。不是某个数据库软件独有的,而是主流数据库软件之间通用的语言。 2、数据库存储数据的特点。 数据先存储到表中,在存储到数据库中。 一个数据库中可以有多个表,每张表都有唯一的表明来标识自己。 一个表中可以有一个或者多个列,列又称为“字段”,相当于JavaBean中的属性。 表中的每一行数据都相当于Java中的一个对象(一行数据就是一个对象)。

    二、SQL语句:

    1、模糊查询通配符%。 %代表一个或者多个字符。 like不仅仅限于字符型,在数值型也一样通用。 实列:查找last_name 包含a的员工。

    select * from employees where last_name like '%a%';

    2、模糊查询通配符_。 _代表一个字符。 实列:查找last_name 第二个字符为a,第五个字符为b的员工。

    select * from employees where last_name like '_a__b%';

    3、MySQL转义符 \ 。 MySQL中 \ 代表转义符。 实列:查找last_name 第二个字符为下划线 _ 的员工。

    select * from employees where last_name like '_\_%';

    4、MySQL自定义转义符。 ESCAPE 关键字可实现自定义转义符。 实列:自定义转义符。

    select * from employees where last_name like '_$_%' ESCAPE '$';

    5、Between and 关键字。 Between and 代表查找某个到某个范围的关键字。 实例:查询年龄在20岁到30岁之间的员工(不包含20岁和30岁)。

    select * from employees where age between 21 and 29;

    Between and 关键字注意事项: 使用Between and 可以提高语句的简洁度。 两个临界值不能调换顺序。 可理解为:and 前面是起点,and 后面为终点。 两个临界值的数据类型必须一致。 同理使用逻辑运算符也可以做到。 实例:查询年龄在20岁到30岁之间的员工(不包含20岁和30岁)。

    select * from employees where age > 20 and age < 30;

    拓展:not between and 关键字 指不在某个范围区间的数据。 6、in关键字。 in关键字作用:判断某字段的值是否属于in列表中的值相等。 实列:查找岗位为前端、UI美工、JAVA开发的员工的所有信息。

    select * from employees where operating_post in ('前端', 'UI美工', 'JAVA开发');

    in关键字使用注意事项: in关键字的功能 or关键字也能实现,使用in关键字代码简洁度高。 in关键字列表中的值数据类型必须一致或者兼容(隐式转换)。 7、is null 关键字。 is null 判断某一段的值是否为null,为null则展示 is not null 则反之。 实例:查询没有奖金的员工的所有信息。

    select * from employees where bonus IS NULL;

    8、is not null 关键字。 is not null 关键字判断某一字段的值是否不为空。 实例:查询没有奖金的员工的所有信息。

    select * from employees where bonus IS NOT NULL;

    9、order by 关键字: 作用:排序。 order by 关键字 默认排序方式为从高到低 DESC:从高到低 ASC:从低到高

    #asc 从高到低 select * from employess where salary != 0 order by salary desc; #asc 从低到高 select * from employess where salary != 0 order by salary asc;

    order by 按表达式排序:

    select last_name, salary*12 as 年薪, salary as 月薪 from employess order by salary*12 desc;

    order by 按字段别名排序: 注意:不要使用单引号括起来别名:‘字段别名’,会引起排序出错。

    select last_name, salary*12 as 年薪, salary as 月薪 from employess order by 年薪 desc;

    order by 按函数排序:

    select length(last_name) as 字节长度, last_name from employess order by 字节长度;

    order by 多个字段排序: 先按第个order by 的字段排序,然后再按照第二个,以此类推。

    select * from employess order by bonus desc, id asc;

    三、MySQL常用函数:

    常用函数: 1、concat函数: 功能:拼接字符。

    select concat('字符1','字符2','字符3');

    实例:字符串拼接。

    select concat(last_name,'的奖金为:',bonus) from employess;

    2、ifnull函数: 功能:判断字段是否有值,有值则显示本身的值,为null则显示null或者自己指定的字符或者数值。 #字符类型

    select IFNULL(bonus,'a') as 奖金 from employess;

    #数值类型

    select IFNULL(bonus,0) as 奖金 from employess;

    3、isnull函数: 功能:判断字段是否有值,有值返回0,为null返回1(类似boolean类型,0为true,1为false)。

    select bonus,ISNULL(bonus) as 'isnull_函数' from employess;

    4、大小写转换函数: upper函数: upper将字符转换为大写。 如果本身就是大写则不变,小写就被转换为大写。 lower函数: lower将字符转换为小写。 如果本身就是小写则不变,大写就被转换为小写。 5、length函数: 作用:返回字符的字节长度(在字符编码为UTF-8时,一个汉字返回3个字节。其它字符编码集中,一个汉字返回2个字节)。 查询last_name 字段值的字节长度。

    select length(last_name) from employess;

    查询 ‘abc’ 的字节长度:

    select length('abc');

    6、substr函数: 作用:截取字符。 MySQL的索引从1开始。 第一个参数为要截取的字符,第二个参数为从那个位置开始。

    select substr('最美的烟火总是最先坠落',10);

    第一个参数为要截取的字符,第二个参数为从那个位置开始,第三个参数限制截取的长度。

    select substr('最美的烟火总是最先坠落',4,2);

    7、instr函数: 作用:返回子串第一次出现的索引位置。 如果存在返回索引位置,不存在则返回0。 参数一为字符,参数二为子串。

    select instr('最美的烟火总是最先坠落','烟火') as 索引位置;

    8、trim函数: 作用:去除字符首尾的空格。 原始字符长度为:22

    select length(' 独孤求败 ') as 原始字符长度;

    去除首尾空格后长度为:12

    select length(trim(' 独孤求败 ')) as 去除空格后的长度;

    trim函数去除首尾位置的指定字符:

    select trim('a' from '东邪西毒aaa');

    9、lpad函数: 作用:lpad为左填充。 参数一为要填充的字符,参数二填充后索引长度,参数三为使用什么进行填充。 如果第二个参数你给出的长度果断,lpad函数会截断字符串,只显示靠前索引位置的字符。

    select lpad('武夷山大红袍',10,'*'); //****武夷山大红袍

    10、rpad函数: 作用:lpad为右填充。 参数一为要填充的字符,参数二填充后索引长度,参数三为使用什么进行填充。 如果第二个参数你给出的长度果断,lpad函数会截断字符串,只显示靠前索引位置的字符。

    select lpad('武夷山大红袍',10,'*'); //武夷山大红袍****

    11、replace替换函数: 作用:替换指定字符。

    select replace('勿忘国耻,我辈自强','我','吾') as 振兴中华; //勿忘国耻,吾辈自强

    12、if函数: 作用:流程控制函数,相当于Java中的if

    select if(10>5,'大','小') as 流程控制函数;

    实例:查找有奖金的员工信息。

    select last_name, bonus, if(bonus is not null,'有奖金','无奖金')from employess;

    13、case when表达式: 查询员工名字、月薪、岗位编号。将岗位编号为1的月薪提高1.4倍,将岗位编号为2的月薪提高1.6倍,将岗位编号为3的月薪提高1.5倍,其他岗位编号月薪提高1.3倍。

    select last_name, salary,department_id as 原始工资, case department_id when 1 then salary*1.4 when 2 then salary*1.6 when 3 then salary*1.5 else salary*1.3 end as 调整后的薪资 from employess;

    case when 第二种使用方式:

    select last_name, salary,department_id as 原始工资, case when department_id = 1 then salary*1.4 when department_id = 2 then salary*1.6 when department_id = 3 then salary*1.5 else salary*1.3 end as 调整后的薪资 from employess;

    数学函数:

    1、round 函数: 作用:四舍五入,取整函数。

    select round(1.65) as 四舍五入; //2

    保留两位小数:

    select round(1.657,2) as 四舍五入; //

    2、ceil函数: 作用:向上取整。

    select ceil(1.02); //2

    3、floor函数: 作用:向下取整。

    select floor(9.99); //9

    4、truncate函数: 作用:截断函数(该函数不会进行四舍五入运算)。 参数一为要截断的数值,参数二为保留几位小数。

    select truncate(3.666666,2) as 保留两位小数; //3.66

    5、mod函数: 作用:取余数的函数,和%的作用一样(%也是取余数)。

    select mod(10,3); //1 //计算公式为 a-a/b*b

    日期函数:

    日期格式符:

    序号格式符功能1%Y四位的年份2%y二位的年份3%m月份 0-114%c月份 1-125%d日期0-316%H小时(24小时制)7%h小时(12小时制)8%i分钟00-599%s秒00-59

    1、now函数。 作用:返回当前时间

    select now(); //2020-10-04 21:55:14

    2、curdate函数。 作用:返回当前日期/不带时间

    select curdate(); //2020-10-04

    3、curtime函数。 作用:返回当前时间/不带日期

    select curtime(); //21:54:55

    4、year函数: 作用:只返回年份的时间。 实例:查询员工表中员工的入职时间,只显示年份。

    select year(birthday) as 入职时间 from employess;

    5、month函数: 作用:返回月份。

    select month(now()); //返回阿拉伯数字 select monthname(now()); //返回英文月份

    6、str_to_date函数: 作用:将指定字符转换为指定的日期格式。 实例:查询入职时间为2020-9-1的员工的所有信息。

    select * from employess where birthday = str_to_date('2020-9-1', '%Y-%c-%d');

    将特殊格式字符转换为日期类型:

    select * from employess where birthday = str_to_date('9-1-2020', '%c-%d-%Y');

    7、date_format函数: 作用:将指定的日期转换为字符

    select date_format('2020/10/10', '%Y年%c月%d日'); //2020年10月10日

    MySQL其他命令:

    1、查看当前数据库: select database();

    2、查看所有数据库: show databases;

    3、查看当前用户: select user();

    4、查看当前MySQL的版本: select version();

    四、Navicat快捷键:

    1,Ctrl+q就会弹出一个sql输入窗口 2,Ctrl+r就执行sql了 3,按f6会弹出一个命令窗口 4,Ctrl+/ 注释 5,Ctrl +Shift+/ 解除注释 6,Ctrl+R 运行选中的SQL语句 7,Ctrl+Shift+R 只运行选中的sql语句 8,Ctrl+L 删除选中行内容 9,Ctrl+D 表的数据显示显示页面切换到表的结构设计页面,但是在查询页面写sql时是复制当前行并粘贴到下一行 10,Ctrl+N 打开一个新的查询窗口 11,Ctrl+W 关闭当前查询窗口 12,鼠标三击选择当前行


    Processed: 0.009, SQL: 8