MYSQL 总结
1、数据库实质中访问的是 DBMC,数据库是一种存储介质
2、groub by 与 having 理解
group by 有一个原则,select后面的所有列中,没有使用聚合函数的列必须出现在 groub by 后面, groub by 和聚合函数一起使用
where 子句的作用是对查询结果进行分组前,将不符合 where 条件的行去掉,即在分组之前过滤数据,条件中不能包括聚合函数
having 子句的作用是筛选满足条件的组,即分组后过滤数据,条件中经常使用聚合函数
3、模糊查询:% _
4、mysql 中五种统计函数:max min sum avg count
5、视图,虚拟的表,包含的不是数据,而是根据需要检索数据的查询,提供了一种 MySQL 的 select 语句层次的封装
order by 可用在视图中,但如果从该视图检索 select 中也包含有 oder by,那么视图的 order by 将被覆盖
6、存储过程,为了方便以后使用而保存的一条或多条 SQL 语句集合,形式如
create proceder procedername(int|out|inout param paramtype)
常用的数据类型有 VARCHAR DATE INT TEXT TIMESTAMP
变量定义
declare viraiblename datatype [default_value]
变量赋值
set var=expression
用户变量,在客户端使用用户变量
>select 'hello world' into @x;
>select @x
例子
mysql>DELIMITER //
mysql>CREATE PROCEDURE demo1(INOUT p_inout INT)
->BEGIN
->SELECT p_inout;
->SET p_inout=2;
->SELECT p_inout;
->END->//
mysql>DELEMITER ;
mysql>SET @p_inout=1;
mysql>CALL demo1(@p_inout);
7、MySQL存储过程的控制语句
1)条件语句
mysql>DELIMITER //
mysql>CREATE PROCEDURE demo2(IN parameter INT)
->BEGIN
->IF parameter=0 THEN
->UPDATE t SET s1=s1+1;
->ELSE
->UPDATE t SET s2=s2+1;
->END IF;
->END->//
mysql>DELEMITER ;
2)case语句
mysql>DELIMITER //
mysql>CREATE PROCEDURE demo3(IN var INT)
->BEGIN
->CASE
->WHEN var=0 then
->SELECT 0;
->WHEN var>0 then
->SELECT 1;
->ELSE
->SELECT -1;
->END CASE;
->END
->//
mysql>DELEMITER ;
3)循环语句
mysql>DELIMITER //
mysql>CREATE PROCEDURE demo4(IN var INT)
->BEGIN
->DECLARE i INT DEFAULT 0;
->WHILE i < var do
->SELECT i;
->SELECT i+1 INTO i;
->END WHILE;
->END
->//
mysql>DELEMITER ;
mysql>DELIMITER //
mysql>CREATE PROCEDURE demo5(IN var INT)
->BEGIN
->DECLARE i INT DEFAULT 0;
->REPEAT
->SELECT i;
->SELECT i+1 INTO i;
->UNTIL i>var;
->END REPEAT
->END
->//
mysql>DELEMITER ;
8、定义条件和处理程序
1)定义条件
DECLARE command_not_allowed CONDITION FOR {SQLSTATE '4200'|1148}
2)定义处理程序
DECLARE hadle_type HANDLER FOR condition_value[,...] sp_statement;
handler_type:CONTINUE EXIT UNDO
9、光标
光标的使用包括声明光标,打开光标,使用光标各关闭光标,光标必须声明在处理程序之前,并且声明在变量和条件之后
1)声明光标
DECLARE cursor_name CURSOR FOR select_statement;
2)打开光标
OPEN cursor_name;
3)使用光标
FETCH cursor_name INTO var_name[,var_name,...];
4)关闭光标
CLOSE cursor_name;
CREATE PROCEDURE curdemo
BEGIN
DECLARE stop_flag INT DEFAULT 0;
DECLARE id INT DEFAULT 0;
DECLARE type INT DEFAULT 0;
DECLARE ord INT DEFAULT 0;
DECLARE cur CURSOR FOR SELECT * FROM table1;
DECLARE CONTINUE HANDLER FOR SQLSTATE '' SET stop_flag=1;
OPEN cur;
FETCH cur INTO id,type,ord;
WHILE stop_flag <> 1 DO
INSERT INTO table2 VALUES(id, type, ord);
FETCH cur into id,type,ord;
END WHILE;
CLOSE CUR;
END
10、触发器
CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW
trigger_stmt
trigger_time: BEFORE AFTER
trigger_event: INSERT UPDATE DELETE
11、事务(原子性,一致性,隔离性,持久性)
START TRANSACTION;
SAVEPOINT sp;
ROLLBACK;
ROLLBACK TO sp;
COMMIT;
事务隔离级别:
读未提交,所有事务可以看到其他未提交事务的执行结果
读已提交,一个事务只能看见已经提交事务所做改变
可重复读,在一事务中看到是一致结果
可串行化
12、SQL语句
SELECT columnname, ...
FROM tablename, ...
WHERE ...
UNION ...
GROUP BY ...
HAVING ...
ORDER BY ...
MYSQL 总结的更多相关文章
- Hadoop 中利用 mapreduce 读写 mysql 数据
Hadoop 中利用 mapreduce 读写 mysql 数据 有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...
- mysql每秒最多能插入多少条数据 ? 死磕性能压测
前段时间搞优化,最后瓶颈发现都在数据库单点上. 问DBA,给我的写入答案是在1W(机械硬盘)左右. 联想起前几天infoQ上一篇文章说他们最好的硬件写入速度在2W后也无法提高(SSD硬盘) 但这东西感 ...
- LINUX篇,设置MYSQL远程访问实用版
每次设置root和远程访问都容易出现问题, 总结了个通用方法, 关键在于实用 step1: # mysql -u root mysql mysql> Grant all privileges o ...
- nodejs进阶(6)—连接MySQL数据库
1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...
- MySQL高级知识- MySQL的架构介绍
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...
- 闰秒导致MySQL服务器的CPU sys过高
今天,有个哥们碰到一个问题,他有一个从库,只要是启动MySQL,CPU使用率就非常高,其中sys占比也比较高,具体可见下图. 注意:他的生产环境是物理机,单个CPU,4个Core. 于是,他抓取了CP ...
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制
将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...
- 当忘记mysql数据库密码时如何进行修改
因为长时间没有使用数据库了,或者把密码改完之后就忘了数据库密码,不能正常进入数据库,也无法修改密码,有一个简单的常用修改密码方式: 1.首先找到和打开mysql.exe和mysqld.exe所在的文件 ...
随机推荐
- 201521123112《Java程序设计》第9周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1.常用异常 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代 ...
- 控制结构(1) 分枝/叶子(branch/leaf)
// 下一篇:卫语句(guard clause) 典型代码: function doSomething1(){ // ... } function doSomething2(){ // ... } f ...
- 关于SVM数学细节逻辑的个人理解(三) :SMO算法理解
第三部分:SMO算法的个人理解 接下来的这部分我觉得是最难理解的?而且计算也是最难得,就是SMO算法. SMO算法就是帮助我们求解: s.t. 这个优化问题的. 虽然这个优化问题只剩下了α这一个变 ...
- hadoop大事件
大事件: Hadoop新一代(2.x)计算平台YARN 一代hadoop存在的问题: 1.Jobtracker单点,容易导致崩溃,节点较多时造成性能瓶颈 2.作业分配基于槽位(slot),分配粒度 ...
- [UIKit学习]04.关于HUD提示框,定时任务、开发关于资源常见问题
提示框的背景透明此时要设置background的Alpha值 定时任务 方法1:performSelector // 1.5s后自动调用self的hideHUD方法 [self performSele ...
- java中Set类接口的用法
在Java中使用Set,可以方便地将需要的类型,以集合类型保存在一个变量中.主要应用在显示列表. Set是一个不包含重复元素的collection.更确切地讲,set 不包含满足 e1.equals( ...
- js 操作数组(过滤对应数据)
过滤掉相应数据 var fileList = { "85968439868a92": [{name: 'food.jpeg'}, {name: 'ood.jpeg'}], &quo ...
- 个人从源码理解JIT模式下angular编译AppModule的过程
承接上文.笔者之前将一个angular项目的启动过程分为了两步: 创建平台得到 PlatformRef ,以及执行平台引用提供的方法编译根模块 AppModule .本文就将着眼于创建好的平台,从an ...
- Highway Networks Pytorch
导读 本文讨论了深层神经网络训练困难的原因以及如何使用Highway Networks去解决深层神经网络训练的困难,并且在pytorch上实现了Highway Networks. 一 .Highway ...
- Java 基础语法
一.关键字 定义:被 Java 赋予特殊含义的单词. 特点:基本上都是英文小写. 用于定义数据类型的关键字 基本数据类型 整数型(默认为 int) byte(8 位,1 字节,默认值是 0,最大存储数 ...