博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySql的一些小用法
阅读量:7170 次
发布时间:2019-06-29

本文共 1553 字,大约阅读时间需要 5 分钟。

刚做后台没多长时间,以前做android时接触sql也比较少,刚做完一个后台查询数据导出excel的需求,故在此留下一些sql写法的拙见;

基本的增删改查没什么好说的,我觉得W3C里面讲的已经很好了,学完之后应付一下单表查询以及较为简单的多表查询基本上问题不大,但是一些较为复杂的多表查询,可能简单的看看W3C教程学的那些东西用起来就有点捉襟见肘了,下面看看这次需求中我有些了解的sql用法
count(number)
用来统计数据条数的总和
select count(1) from p_student_grade Where name="xxx";
最终得到的结果就是p_student_grade这张表的名字为xxx的记录的数据的条数
sum()
对值进行相加,sum(1) 和count(1) 效果类似,除此外sum(colume) 表示某一类的值得和;
IF()
可以用来对值进行数值转换或逻辑处理
select IF(grade<60,'不及格',grade) from p_student_grade;
很显然,将成绩低于60时的字段转换为不及格,大于60的输出成绩;
注意 SQL 中IF是没有ELSE搭配的,但是可以在IF中嵌套IF,当然,对于条件较多时,推荐使用CASE WHEN THEN END

SELECT CASE WHEN grade<60 THEN '不及格'

WHEN grade>59 AND grade<70 THEN '及格'
WHEN grade>69 AND grade<80 THEN '良'
...
END From p_student_grade;
concat()
对字符串进行拼接

select concat(grade+'分') from p_student_grade;

group_concat()
对查询的结果进行拼接,通常是拼接的关系是一对多的,如一个人的语文,数学成绩

select group_concat(grade separator ';') from p_student_grade Where name='xxx';

此句会将xxx的所有成绩信息拼接,以‘;’分隔,并作为一个字段显示出来

left join 左拼接

select a.name,b.age from p_name a left join p_age b on a.id=b.id;

左拼接,以左边的表为主表,也就是说最后查询出来的结果的数目和左边的表(p_name,以left join 为基准)的数目是一致的,也就是说p_name如果id有1,2,3,p_age的id有1,2,4,5但是最后得到的结果只会有id 为 1,2,3的数据

同理又拼接也是一样的

最后,子查询,这个也是这次需求中用到最多的

如有两张表,一张存储的是个人信息,一张存储的是个人成绩,两张表的主键都是id且有对应关系

select info.id 'id',info.name 'name',

(select grade from p_grade Where id=info.id AND type='math') 'mathGrade'
from p_info 'info'

这样写的结果就是得到很容易就可看到,这样做的好处就是避免了强关联,()中的id=info.id并不会对p-info的id取值造成影响;

实际上,只要是想到得到某张表的某一个字段(这个字段可以是多个字段拼接而成),就可以使用子查询。

好的,基本到这里就结束了,以后如果用到了新的用法,会持续跟新本文:)

转载于:https://www.cnblogs.com/hugystudy/p/6740812.html

你可能感兴趣的文章
动态新增文本框
查看>>
消息队列
查看>>
类型和成员基础
查看>>
【Java】同步阻塞式(BIO)TCP通信
查看>>
java基础自定义测试异常类
查看>>
第一章 第一节
查看>>
不使用运算符计算加减乘除的问题
查看>>
apply()和call()的区别
查看>>
部署网站(虚拟主机,MVC站点,前后台,百度编辑器)出现的问题
查看>>
crontab定时任务不执行的原因
查看>>
【laravel】用户认证之----手动认证用户
查看>>
删除数组中重复的元素(JSON)
查看>>
前端之jQuery02
查看>>
判断两个对象不相等
查看>>
将数组里的元素转换为以逗号分隔的字符串
查看>>
Bootstrap3基础教程 02 网格布局
查看>>
linux的发展过程以及未来方向
查看>>
浅谈快速开发框架的分层(WinForm)
查看>>
阿里大鱼短信接口整合Tp3.2.3开发整理
查看>>
Rails sanitize
查看>>