先来简单了解一下MySQL数据库有意思的简介

MySQL这个名字,起源不是很明确。一个比较有影响的说法是,基本指南和大量的库和工具带有前缀“my”已经有10年以上,
而且不管怎样,MySQL AB创始人之一的Monty Widenius的女儿也叫My。这两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。
MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。
获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。
根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。
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的 临时表,变量,行转列,预处理的一些相关技术的使用!的更多相关文章

  1. MySQL存储过程的动态行转列

    MySQL存储过程中使用动态行转列 最近做项目关于数据报表处理,然而数据库存储格式和报表展现形式不同,需要进行一下行转列的操作,在做上一个项目的时候也看了一下,但是后来换了读取方式,也就没深入研究这个 ...

  2. MYSQL开发技巧之行转列和列转行

    行转列--两种方法第一种方法:行转列我们通常是使用交叉连接和子查询的方式做到,比如下面的例子,查询每个name的对应id的和mysql> select * from user; +----+-- ...

  3. Mysql或者Hive数据行变成列

    对于mysql /  hive 再进行统计的时候假设须要行变成列,能够使用函数 CASE 字段a WHEN 值b THEN c [WHEN d THEN e]* [ELSE f] END 当字段a=值 ...

  4. 【mysql经典题目】行转列

    参考:http://www.cnblogs.com/h07061108/p/mysql_questions.html#3806338 实现如下效果 CREATE TABLE IF NOT EXISTS ...

  5. mysql sql语句:行转列问题

    存在表score,记录学生的考试成绩,如下图所示: 现要求以 学生姓名,语文,数学,英语 这种格式显示学生成绩,如下图所示 具体步骤如下: 1.首先,使用case when函数输出单个课程的成绩 ca ...

  6. Oracle学习笔记:一个简单的行转列例子

    一个简单的行列转换例子,原始数据. create table temp_cwh_student ( name ), subject ), score ) ) select * from temp_cw ...

  7. MySQL 行转列 -》动态行转列 -》动态行转列带计算

    Pivot Table Using MySQL - A Complete Guide | WebDevZoomhttp://webdevzoom.com/pivot-table-using-mysql ...

  8. 黑马MySQL数据库学习day04 MySQL变量 存储过程 用户和授权管理

    /* MySQL中的变量局部变量,用户变量,会话变量和全局变量. 用户变量不用定义,直接使用. 1.用户变量赋值 set @xxx = 值; 2.查询 select @xxx; 语法帮助: 过程保存在 ...

  9. 数据库学习之MySQL基础

    数据库基础 一.数据库简介 数据库:存放数据的仓库 sql及其规范 sql是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能 ...

随机推荐

  1. C++程序员容易走入性能优化误区!对此你怎么看呢?

    有些C++ 程序员,特别是只写C++ 没有写过 Python/PHP 等慢语言的程序员,容易对性能有心智负担,就像着了魔一样,每写3 行代码必有一行代码因为性能考虑而优化使得代码变形(复杂而晦涩). ...

  2. [转]Nginx限流配置

    原文:https://www.cnblogs.com/biglittleant/p/8979915.html 作者:biglittleant 1. 限流算法 1.1 令牌桶算法 算法思想是: 令牌以固 ...

  3. sql developer连接mysql数据库

    1 首先打开sql developer ,选择上方菜单,工具(tools)--->首选项,如下图 2  数据库(database)--->第三方 JDBC驱动程序 ; “添加条目”,选择m ...

  4. 移动物体监控系统-sprint4嵌入式web服务器开发

    一.BOA嵌入式服务器的移植 step1:下载BOA服务器并解压,进入boa下面的src目录,执行./configure生成必须的配置文件以及Makefile step2:修改Makefile文件 c ...

  5. 调用thrift出现No handlers could be found for logger "thrift.transport.TSocket"

    1.问题 使用thrift版本为0.10,在0.8没有这个问题 其中ncTAgent是代码中封装的thrift接口的结构,在thrift服务端没有启动的时候,应该拋错为连接不到.但是拋错的堆栈输出之前 ...

  6. mqtt第一次接触

    一.接触的原因 公司最近要求接手关于系统集成道闸的部分,其中系统和第三方系统是通过mqtt进行交互的.所以提前了解一下mqtt的基础概念. 二.mqtt的基本概念 1. mqtt的定义 Message ...

  7. 【av68676164(p15-p17)】进程概念

    from av68676164 4.1.1 进程的基本概念 程序运行在并发环境中的问题 运行过程不确定 结果不可再现(程序运行被干扰) 解决方案:对运行过程施加约束 新的概念:进程 描述和管理程序的& ...

  8. Apache Hudi表自动同步至阿里云数据湖分析DLA

    1. 引入 Hudi 0.6.0版本之前只支持将Hudi表同步到Hive或者兼容Hive的MetaStore中,对于云上其他使用与Hive不同SQL语法MetaStore则无法支持,为解决这个问题,近 ...

  9. C#设计模式之14-命令模式

    命令模式(Command Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/413 访问. 命令模式属于行 ...

  10. NumPy速查笔记(持续更新中)

    目录 1 总览 2 ndarray 3 常用API 3.1 创建ndarray (1)将Python类似数组的对象转化成Numpy数组 (2)numpy内置的数组创建 (3)从磁盘中读取标准格式或者自 ...