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. 201521123067 《Java程序设计》第12周学习总结

    201521123067 <Java程序设计>第12周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对 ...

  2. 201521123108《Java程序设计》第12周学习总结

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

  3. HTML 自动、手动切换轮播 from:金水

    .自动.手动切换轮播 body代码: <div id="tuijian"> <div class="pages" id="p1&qu ...

  4. hadoop运行wordcount实例,hdfs简单操作

    1.查看hadoop版本 [hadoop@ltt1 sbin]$ hadoop version Hadoop -cdh5.12.0 Subversion http://github.com/cloud ...

  5. 关于学习Python的一些心得

    1.关注函数参数的类型,如列表,字符串,int,而不是关注函数的功能 2.导入模块numpy,dir(numpy) 查看所有属性 3.''.join(列表)  将列表拆成字符串

  6. 嵌入式Llinux学习路线图

    版本 日期 作者 说明 V1 2016.07.29 韦东山 第1版本,Android部分未写 我是1999年上的大学,物理专业.在大一时,我们班里普遍弥漫着对未来的不安,不知道学习了物理后出去能做什么 ...

  7. 关于Android WebView上传文件的解决方案

    我们在开发需求的时候,难免会接入一下第三方的H5页面,有些H5页面是具有上传照片的功能,Android 中的 WebView是不能直接打开文件选择弹框的 接下来我讲简单提供一下解决方案,先说一下思路 ...

  8. Windows 编程中恼人的各种字符以及字符指针类型

    在Windows编程中,很容易见到这些数据类型:LPSTR,LPTSTR,LPCTSTR... 像很多童鞋一样,当初在学Windows编程的时候,对着些数据类型真的是丈二和尚,摸不着头脑,长时间不用就 ...

  9. mybatis运行时错误Illegal argument exception argument type mismatch

    使用注解时遇到该错误 使用XML应该也会有相应的错误 解决办法:查看是不是Dao接口的参数列表没有加@Param注解  参数过多时需要该注解指明参数

  10. Sequence query 好题啊

    Sequence query Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Subm ...