今天来学习一下MySQl的 临时表,变量,行转列,预处理的一些相关技术的使用!
先来简单了解一下MySQL数据库有意思的简介
言归正传:今天来学习使用MySQl的 临时表,变量,行转列,预处理的一些入门使用相关话题!
个人之前一直使用比较多的数据库就是Sqlserver,Sqlserver的强大,和存储过程的牛13的地方这里不多说了,
在在主流的关系型数据库中,Mysql,Sqlserver,Oracle等,作者都有使用,相比还是微软的Sqlserver是最人性化的,数据库自带的工具也是最好用的
什么,执行计划,作业任务,表分区,主从复制,读写分离,存储过程,自定义类型,表函数,标量函数等等,都是比较人性化的使用!
新的公司使用的是Mysql关系型数据库,curd其实大都数的sql语法类似Sqlserver,
但是个人还是觉得MySQl比较弱,功能和使用体验上完全就不是一个等级的,
这里没有其他的故意贬低MySQl的意思,也不展开讨论这个话题,
存在即有其中的道理,毕竟MySql也有自身的优点,例如:体积小巧,开源免费等!
1:临时表 使用案例
语法案例如下:
DROP TEMPORARY TABLE if EXISTS p_table; //如果存在就先删除
CREATE TEMPORARY TABLE p_table // 创建临时表根据下面的查询结果来处理
SELECT S.id,S.score
FROM studentscore S
WHERE S.id>1;
SELECT id, score FROM p_table;

2:mysql语句自定义变量 使用案例
SET @id=1;// 带上标量,后面需要;分号结尾
DROP TEMPORARY TABLE if EXISTS p_table;
CREATE TEMPORARY TABLE p_table
SELECT S.id,S.score
FROM studentscore S
WHERE S.id>@id;
SELECT id, score FROM p_table;

3:mysql的行转列 使用案例
在Mysql中行转列通常有 case when,和 if(a='' b,c)再结合 max,sum,avg 这样的函数来处理
3.1:先创建表studentScore已经插入一些测试的数据
DROP TABLE IF EXISTS studentScore;
CREATE TABLE studentScore(
id INT(11) NOT NULL auto_increment,
userid VARCHAR(20) NOT NULL COMMENT '用户id',
subject VARCHAR(20) COMMENT '科目',
score DOUBLE COMMENT '成绩',
PRIMARY KEY(id)
)ENGINE = INNODB DEFAULT CHARSET = utf8;
INSERT INTO studentScore(userid,subject,score) VALUES ('111','语文',98);
INSERT INTO studentScore(userid,subject,score) VALUES ('111','数学',88);
INSERT INTO studentScore(userid,subject,score) VALUES ('111','英语',58);
INSERT INTO studentScore(userid,subject,score) VALUES ('222','语文',69);
INSERT INTO studentScore(userid,subject,score) VALUES ('222','数学',88);
INSERT INTO studentScore(userid,subject,score) VALUES ('222','英语',80);
INSERT INTO studentScore(userid,subject,score) VALUES ('333','语文',90);
INSERT INTO studentScore(userid,subject,score) VALUES ('333','数学',75);
INSERT INTO studentScore(userid,subject,score) VALUES ('333','英语',82);
INSERT INTO studentScore(userid,subject,score) VALUES ('333','政治',91);
SELECT* FROM studentScore;

3.1:行转列 使用案例,使用max,正常的情况下一个用户与一条数据,就可以使用sum(),max取其中最大的那条

3.2:行转列 ,if() 使用案例

3.3:使用SUM(IF()) 生成列 + UNION 生成汇总行,并利用 IFNULL将汇总行标题显示为 Total

4:Mysql的预处理语句的使用案例:

5:最后,看到MySQl也可以有上面的这些功能,是不是一下子对MySQl产生了好感,
原来MySQl也是如此可爱啊,嘻嘻!!!
今天来学习一下MySQl的 临时表,变量,行转列,预处理的一些相关技术的使用!的更多相关文章
- MySQL存储过程的动态行转列
MySQL存储过程中使用动态行转列 最近做项目关于数据报表处理,然而数据库存储格式和报表展现形式不同,需要进行一下行转列的操作,在做上一个项目的时候也看了一下,但是后来换了读取方式,也就没深入研究这个 ...
- MYSQL开发技巧之行转列和列转行
行转列--两种方法第一种方法:行转列我们通常是使用交叉连接和子查询的方式做到,比如下面的例子,查询每个name的对应id的和mysql> select * from user; +----+-- ...
- Mysql或者Hive数据行变成列
对于mysql / hive 再进行统计的时候假设须要行变成列,能够使用函数 CASE 字段a WHEN 值b THEN c [WHEN d THEN e]* [ELSE f] END 当字段a=值 ...
- 【mysql经典题目】行转列
参考:http://www.cnblogs.com/h07061108/p/mysql_questions.html#3806338 实现如下效果 CREATE TABLE IF NOT EXISTS ...
- mysql sql语句:行转列问题
存在表score,记录学生的考试成绩,如下图所示: 现要求以 学生姓名,语文,数学,英语 这种格式显示学生成绩,如下图所示 具体步骤如下: 1.首先,使用case when函数输出单个课程的成绩 ca ...
- Oracle学习笔记:一个简单的行转列例子
一个简单的行列转换例子,原始数据. create table temp_cwh_student ( name ), subject ), score ) ) select * from temp_cw ...
- MySQL 行转列 -》动态行转列 -》动态行转列带计算
Pivot Table Using MySQL - A Complete Guide | WebDevZoomhttp://webdevzoom.com/pivot-table-using-mysql ...
- 黑马MySQL数据库学习day04 MySQL变量 存储过程 用户和授权管理
/* MySQL中的变量局部变量,用户变量,会话变量和全局变量. 用户变量不用定义,直接使用. 1.用户变量赋值 set @xxx = 值; 2.查询 select @xxx; 语法帮助: 过程保存在 ...
- 数据库学习之MySQL基础
数据库基础 一.数据库简介 数据库:存放数据的仓库 sql及其规范 sql是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能 ...
随机推荐
- python4.1定义函数
def add(a,b,c,d): e=a+b+c-d return e result=add(21,32,43,56)print("加和结果是:",result) def zzj ...
- 020_go语言中的接口
代码演示 package main import ( "fmt" "math" ) type geometry interface { area() float ...
- Windows10 无法完全关闭Hyper-V导致VirtualBox 虚拟机无法启动
win10本来已经安装使用了VirtualBox. 突然心血来潮决定试试系统自带的虚拟机Hyper-V.发现并没有想象中的好用.随后在启用或关闭 Windows功能中关闭了Hyper-V. 这时我发现 ...
- 理解HTTP的POST和PUT的区别
1.HTTP Methods HTTP Methods GET POST PUT HEAD DELETE PATCH OPTIONS GET is used to request data from ...
- 论文结果图:matplotlib和seaborn实现
在论文中,可视化结果往往很重要,毕竟文字太抽象,需要图片向审稿人直观的展现出我们的结果.我也写了俩篇论文和一篇专利的申请,其中也有一些画图的程序,因此记录,防止以后忘了.由于篇幅原因,文章就不贴代码, ...
- 【LeetCode/LintCode 题解】约瑟夫问题 · Joseph Problem
n个人按顺序围成一圈(编号为1~n),从第1个人从1开始报数,报到k的人出列,相邻的下个人重新从1开始报数,报到k的人出列,重复这个过程,直到队伍中只有1个人为止,这就是约瑟夫问题.现在给定n和k,你 ...
- 【Redis】Redis开篇与如何安装单机版Redis,这次我会了!!
写在前面 很早之前,就有不少小伙伴微信留言说:冰河,你能不能写一个Redis专栏啊,我最近在学习Redis,看书看不下去,学习视频又觉得视频太长了,还是看你的文章比较给力!哈哈,原来我写的文章能够让小 ...
- C#LeetCode刷题之#122-买卖股票的最佳时机 II(Best Time to Buy and Sell Stock II)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4032 访问. 给定一个数组,它的第 i 个元素是一支给定股票第 ...
- 认识与学习BASH①——鸟叔的Linux私房菜
文章目录 认识与学习BASH① 认识BASH 壳程序 多种shells Bash shell 的功能 type :查询指令是否为Bash shell 的内置指令 指令的换行输入和快速删除 Shell的 ...
- unity3d学习笔记(一) 第一人称视角实现和倒计时实现
unity3d学习笔记(一) 第一人称视角实现和倒计时实现 1. 第一人称视角 (1)让mainCamera和player(视角对象)同步在一起 因为我们的player是生成的,所以不能把mainCa ...