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 总结的更多相关文章

  1. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

  2. mysql每秒最多能插入多少条数据 ? 死磕性能压测

    前段时间搞优化,最后瓶颈发现都在数据库单点上. 问DBA,给我的写入答案是在1W(机械硬盘)左右. 联想起前几天infoQ上一篇文章说他们最好的硬件写入速度在2W后也无法提高(SSD硬盘) 但这东西感 ...

  3. LINUX篇,设置MYSQL远程访问实用版

    每次设置root和远程访问都容易出现问题, 总结了个通用方法, 关键在于实用 step1: # mysql -u root mysql mysql> Grant all privileges o ...

  4. nodejs进阶(6)—连接MySQL数据库

    1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...

  5. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  6. 闰秒导致MySQL服务器的CPU sys过高

    今天,有个哥们碰到一个问题,他有一个从库,只要是启动MySQL,CPU使用率就非常高,其中sys占比也比较高,具体可见下图. 注意:他的生产环境是物理机,单个CPU,4个Core. 于是,他抓取了CP ...

  7. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  8. Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制

    将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...

  9. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  10. 当忘记mysql数据库密码时如何进行修改

    因为长时间没有使用数据库了,或者把密码改完之后就忘了数据库密码,不能正常进入数据库,也无法修改密码,有一个简单的常用修改密码方式: 1.首先找到和打开mysql.exe和mysqld.exe所在的文件 ...

随机推荐

  1. 201521123055 《Java程序设计》第12周学习总结

    1. 本章学习总结 2. 书面作业 将Student对象(属性:int id, String name,int age,double grade)写入文件student.data.从文件读出显示. Q ...

  2. sublime text3 好用的插件!!!

    1.首先,你要保证sublime有Package Control,所以,如果没有,那么将Ctrl+`打开sublime控制台,将下列代码复制进去! import urllib.request,os; ...

  3. java 程序编写规则(自己总结)

    1.命名规范 (1)所有的标示符都只能用ASCⅡ字母(A-Z或a-z).数字(0-9)和下划线"_". (2)类名是一个名词,采用大小写混合的方式,每个单词的首字母大写.例如:Us ...

  4. table相关的选择器 & children()与find()的区别 & 选择器eq(n)与nth-child(n)的差异

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  5. 一个JavaScript触发器插件,可通过指定频次、指定时间内触发指定的处理函数

    js-trigger是一个JavaScript触发器插件,可通过指定频次.指定时间内触发指定的处理函数 Tango<tanwei_yx@126.com> 特性 支持AMD/CMD/Comm ...

  6. 0 can't find referenced pointcut declarePointExpress

    今天在用SpringAOP 的 @pointCut 的时候报错 Exception in thread "main" org.springframework.beans.facto ...

  7. 【设计模式】module(模块)模式

    写在前面 最近刚接触到设计模式, <head first设计模式>里有一篇文章,是说使用模式的心智, 1.初学者"心智" :"我要为HELLO WORLD找个 ...

  8. SSM框架——Spring+SpringMVC+Mybatis的搭建教程

    一:概述 SSM框架在项目开发中经常使用到,相比于SSH框架,它在仅几年的开发中运用的更加广泛. Spring作为一个轻量级的框架,有很多的拓展功能,最主要的我们一般项目使用的就是IOC和AOP. S ...

  9. 怎样使用自定义标签简化 js、css 引入?

    国庆将至,工作兴致全无,来总结点项目里平时不起眼干货. 前端引入 js .css 一般是这样: <script type="text/javascript" src=&quo ...

  10. 如何使用git 发布源码到CodePlex

    github 是分布式源码管理系统 codeplex 是微软的开源社区 将git中源码分享到codeplex社区其实很方便,按照如下步骤: 1:注册codeplex 帐号或使用微软的已有的帐号 2:下 ...