文章目录
🌈你好呀!我是 山顶风景独好
💕欢迎来到我的博客,很高兴能够在这里和您见面!
💕希望您在这里可以感受到一份轻松愉快的氛围!
💕这里不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长!
🏠大家订阅本专栏!本专栏旨在为SQL初学者提供一条逐步迈向高级应用的学习之路,带您从零开始,一步一步练习,逐步掌握SQL的精髓,实现技能的提升与飞跃!😊
✨排序操作
排序操作很常用,比如查询学员成绩,按照成绩降序排列。排序的SQL语法:
select .. from .. order by 字段 asc/desc
✨单一字段升序
查询员工的编号、姓名、薪资,按照薪资升序排列。
select empno,ename,sal from emp order by sal asc;
✨单一字段降序
查询员工的编号、姓名、薪资,按照薪资降序排列。
select empno,ename,sal from emp order by sal desc;
✨默认采用升序
查询员工的编号、姓名、薪资,按照薪资升序排列。
select empno,ename,sal from emp order by sal;
查询员工的编号、姓名,按照姓名升序排列。
select empno,ename from emp order by ename;
✨多个字段排序
查询员工的编号、姓名、薪资,按照薪资升序排列,如果薪资相同的,再按照姓名升序排列。
select empno,ename,sal from emp order by sal asc, ename asc;
✨where和order by的位置
找出岗位是MANAGER的员工姓名和薪资,按照薪资升序排列。
select ename,sal from emp where job = 'MANAGER' order by sal asc;
通过这个例子主要是想告诉大家:where先执行,order by语句是最后执行的。
✨distinct去重
查询工作岗位
select job from emp;
可以看到工作岗位中有重复的记录,如何在显示的时候去除重复记录呢?在字段前添加distinct关键字。
select distinct job from emp;
注意:这个去重只是将显示的结果去重,原表数据不会被更改。
接下来测试一下,在distinct关键字前添加其它字段是否可以?
select ename, distinct job from emp;
分析一下:ename是14条记录,distinct job是5条记录,可以同时显示吗?
报错了,通过测试得知,distinct只能出现在所有字段的最前面。
当distinct出现后,后面多个字段一定是联合去重的,我们来做两个练习就知道了:
练习1:找出公司中所有的工作岗位。
练习2:找出公司中不同部门的不同工作岗位。
✨数据处理函数
关于select语句,我们之前都是这样写:select 字段名 from 表名; 其实,这里的字段名可以看做“变量”,select后面既然可以跟变量,那么可以跟常量吗,尝试一下:
通过以上sql的测试得知,select后面既可以跟变量,又可以跟常量。
以上三条SQL中前两条中100和’abc’都是常量,最后一条SQL的abc没有添加单引号,它会被当做某个表的字段名,因为没有这个字段所以报错。
✨字符串相关
✨转大写upper和ucase
# 查询所有员工名字,以大写形式展现
select upper(ename) as ename from emp;
还有一个和upper函数功能相同的函数ucase,也可以转大写,了解一下即可:
# 查询所有员工姓名,以大写形式展现
select ucase(ename) as ename from emp;
# 查询员工smith的岗位、薪资(假如你不知道数据库表中的人名是大写、小写还是大小写混合)
select ename, job, sal from emp where upper(ename) = 'SMITH';
✨转小写lower和lcase
很简单,不再赘述,直接上代码:
# 查询员工姓名,以小写形式展现
select lower(ename) as ename from emp;
select lcase(ename) as ename from emp;
✨截取字符串substr
语法:substr(‘被截取的字符串’, 起始下标, 截取长度)
有两种写法:
第一种:substr(‘被截取的字符串’, 起始下标, 截取长度)
第二种:substr(‘被截取的字符串’, 起始下标),当第三个参数“截取长度”缺失时,截取到字符串末尾
注意:起始下标从1开始,不是从0开始。(1表示从左侧开始的第一个位置,-1表示从右侧开始的第一个位置。)
练习:找出员工名字中第二个字母是A的
select ename from emp where substr(ename, 2, 1) = 'A';
✨获取字符串长度length
注意:一个汉字是2个长度。
✨获取字符的个数char_length
✨字符串拼接
语法:concat(‘字符串1’, ‘字符串2’, ‘字符串3’…)
拼接的字符串数量没有限制。
注意:在mysql8之前,双竖线||也是可以完成字符串拼接的。但在mysql8之后,||只作为逻辑运算符,不能再进行字符串拼接了。
select 'abc' || 'def' || 'xyz';
mysql8之后,|| 只作为“或者”运算符,例如:找出工资高于3000或者低于900的员工姓名和薪资:
select ename, sal from emp where sal > 3000 || sal < 900;
mysql中可以使用+进行字符串的拼接吗?不可以,在mysql中+只作加法运算,在进行加法运算时,会将加号两边的数据尽最大的努力转换成数字再求和,如果无法转换成数字,最终运算结果通通是0
✨去除字符串前后空白trim
select concat(trim(' abc '), 'def');
默认是去除前后空白,也可以去除指定的前缀后缀,例如:
去除前置0
select trim(leading '0' from '000111000');
去除后置0
select trim(trailing '0' from '000111000');
前置0和后置0全部去除
select trim(both '0' from '000111000');
✨ 这就是今天要分享给大家的全部内容了,我们下期再见!😊
🏠 我在CSDN等你哦!我的主页😍