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所在的文件 ...
随机推荐
- 201521123023《Java程序设计》第14周学习总结
1. 本周学习总结 (1)ResultSet.Statement.Connection使用完后最好立刻关闭,并且按照ResultSet.Statement.Connection的顺序依次关闭. (2) ...
- 201521123074 《Java程序设计》第11周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 Q1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...
- geyear和getfullyear的区别
getYear(),IE中获得正确年份,但有的浏览器获取的是当前年份-1900的值.而IE是当大于2000时,直接加上1900 getFullYear(),都是可以获得正确年份. 所以建议使用getF ...
- 监听器第一篇【基本概念、Servlet各个监听器】
什么是监听器 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行. 为什么我们要使用监听器 ...
- mysql truncate、delete与drop区别
相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL语句(数据定义语言),执行后会自动提交. 不同点: 1. t ...
- 【SQL】- 基础知识梳理(六) - 游标
游标的概念 结果集,结果集就是select查询之后返回的所有行数据的集合. 游标(Cursor): 是处理数据的一种方法. 它可以定位到结果集中的某一行,对数据进行读写. 也可以移动游标定位到你需要的 ...
- ArrayList底层实现原理
ArrayList概述: ArrayList是List接口的可变数组的实现.实现了所有可选列表操作,并允许包括null在内的所有元素.除了实现列表接口外,此类还提供一些方法来操作内部用来存储列表的数组 ...
- 我的第一个python web开发框架(1)——前言
由于之前经验不是很丰富,写的C#系统太过复杂,所以一直想重写,但学的越多越觉得自己懂的越少,越觉的底气不足.所以一直不敢动手,在内心深处对自己讲,要静下心来认真学习,继续沉淀沉淀.这两年多以来找各种机 ...
- 关于数据库中datareader的用法
1.C#中提供的DataReader可以从数据库中每次提取一条数据. using System; using System.Collections.Generic; using System.Comp ...
- 移动APP测试方法总结
移动APP测试,除了基础功能测试测试方法外,需要额外关注以下方面: 兼容性测试 流量测试 电量测试 弱网络测试 稳定性测试 安全测试 环境相关测试 兼容性测试 针对App通常会考虑这些方面: 1.操作 ...