本文根据《MySQL必知必会》(Ben Forta著,2009)整理,基于MySQL4.1-5,可作为深入研究MySQL之前的漱口篇。(基本语句、正则表达式、联结、全文本搜索、增删改查、存储过程、游标、触发器、事务、索引)。

 

基本语句


limit:使用limit(x,y)进行分页等;

NULL判断:Select xxx from yyy where xxx IS NULL;

优先级:Select prod_name,prod_price from products where vend_id=1002 or vend_id=1003 and prod_price>=10;And 优先于 or;

匹配:%与_,后者匹配单个字符;

去空:RTrim(xxx),去掉值右边所有空格;LTrim(xxx),去掉值左边空格;Trim(),去掉两边空格;

拼接,重命名:Select concat(vend_name,’(’,vend_country,’)’)as vend_file from vendors;

字符串处理:Left()、Length()、Locate()找一个串的子串、Lower()大转小、Right()、Soundex()、SubString()、Upper()小转大;

日期时间:AddDate()、AddTime()、CurDate()、CurTime()、Date()、DateDiff()、Date_Add()、Date_Format()、Day()、DayOfWeek()、Hour()、Minute()、Month()、Now()、Second()、Time()、Year()。MySQL的日期格式:yyyy-mm-dd;

数据处理:Abs()绝对值、Cos()、Exp()指数、Mod()除余、Pi()、Rand()随机、Sin()、Sqrt()平方根、Tan();

聚集:AVG()平均值、COUNT()行数、MAX()最大值、MIN()最小值、SUM()求和;

Select子句顺序:select,from,where,group by,having,order by,limit

正则表达式


REGEXP:Prod_name包含文本1000的:select prod_name from products where prod_name REGEXP’1000’ order by prod_name;

匹配任意一个字符:… where prod_name REGEXP’.000’;

BINARY:正则匹配不区分大小写,匹配要加BINARY,如:where prod_name REGEXP BINARY ‘JetPack.000’;

OR匹配:where prod_name REGEXP ‘1000|2000’;

匹配几个字符之一:where prod_name REGEXP ‘[123]Ton’;

匹配范围:where prod_name REGEXP’[1-5]Ton’;

匹配特殊字符需要转义:where vend_name REGEXP’\\.’;

\\也用于元字符:\\f换页,\\n换行,\\t制表,\\r回车,\\v纵向制表;

联结与组合


等值联结

笛卡尔积

Select vend_name,prod_name,prod_price from vendors,products order by vend_name,prod_name;

内部联结

 

自联结

等价于:

 

自然联结(排除多次出现,每个列只返回一次):

外部联结(包含了在相关表中没有关联行的行):

Left(right) outer join:左(右)边表中选中所有行;

全文本搜索


MySQL常用的两种引擎:MyISAM(支持全文搜索)InnoDB(不支持全文搜索);

启动全文本搜索

方法:Macth()+Against()

等价于:

前者是按等级降序,后者不会;前者有索引,更快。

可以在select中加一个计算列:

查询扩展:MySQL对数据和索引进行两遍扫描,第一遍进行基本的全文搜索,找出与条件匹配的所有行àMySQL检查这些匹配行,选择所有有用的词àMySQL再进行全文搜索,使用原来条件+所有有用的词。

增删改查


一般删除用delete,更快删除用truncate table(删除原来的表,新建一个表)。

Mysql没有撤销按钮,需要小心使用update和delete。

创建表

创建多个主键

主键是单个,则单个列值唯一,主键时多个,则多个组合起来唯一。

Select last_insert_id()返回最后一个AUTO_INCREMENT值。

引擎类型:MySQL有一个具体管理和处理数据的内部引擎,通过引擎创建表,内部处理你的查询等请求。

三种引擎InnoDB,可靠的事务处理引擎,不支持全文本搜索;MEMORY功能等同于MyISAM,但数据存储在内存(不是磁盘中),速度快(适合临时表);MyISAM,性能极高,支持全文本搜索,不支持事务处理;

增加列:alter table vendors add vend_phone char(20);

删除列:alter table vendors drop column vend_phone;

存储过程


创建存储过程

 

调用存储过程

 

删除

使用参数

调用带参存储过程

获取结果

同时使用IN和OUT

调用IN和OUT存储过程

智能存储过程

显示用来创建一个存储过程的create语句

SHOW CREATE PROCEDURE ordertotal;

获得何时、由谁创建等详细信息

SHOW PROCEDURE STATUS LIKE ‘ordertotal’;

游标


游标是一个存储在MySQL服务器上的数据库查询,是被查询语句检索出来的结果集。存储游标后,应用程序根据需要滚动或浏览数据。MySQL游标只能用于存储过程(和函数)。

创建游标

存储过程处理完成后,游标即消失(仅用于存储过程)。

打开游标

OPEN ordernumbers;

关闭游标

CLOSE ordernumbers;

使用FETCH访问游标的每一行,指定检索什么数据(列),检索的数据存在何处,向前移动游标的内部行指针以检索下一行:

使用游标循环检索数据(你可以在循环内放入任何需要的处理):

对取出的数据做一个实际的处理:

触发器


在某个表发生更改时(DELETE、INSERT、UPDATE)自动处理某些事情。

创建触发器:需要给出四条信息:唯一的触发器名、关联的表、应该响应的活动(删除、插入、更新)、何时执行(处理前、后)。

触发器仅支持表(视图、临时表均不支持)。

删除触发器

INSERT触发器:使用NEW虚拟表访问被插入的行。

 

DELETE触发器:引用OLD虚拟表访问被删除的行:

上例使用BEGIN…END为非必须,BEGIN…END的好处:可容纳多条SQL语句。

UPDATE触发器:引用OLD访问更新前的值,引用NEW访问更新后的值。

事务


事务处理用来维护数据库的完整性,它保证成批的MySQL要么完全执行,要么完全不执行。

关于事务的名词:回退、提交、保留点(事务处理中设定的临时占位符,可对它发布回退)。

事务的开始

使用ROLLBACK:

使用COMMIT:一般的MySQL默认自动提交。但在事务处理块儿中,提交不会默认进行:

使用保留点:简单的ROLLBACK和COMMIT会写入或撤销整个事务处理。复杂的事务处理需要部分提交或回退。这时需要在事务处理块儿的合适位置放置占位符。

更改默认的提交行为

索引


创建索引(INDEX:普通;PRIMARY KEY:唯一且不能为空;UNIQUE:唯一且不允许重复):

删除索引

更多精彩扫描本人微信公众号二维码(it_pupil)

MySQL最基本的概念梳理的更多相关文章

  1. Mysql主从同步(1) - 概念和原理介绍 以及 主从/主主模式 部署记录

    Mysql复制概念Mysql内建的复制功能是构建大型高性能应用程序的基础, 将Mysql数据分布到多个系统上,这种分布机制是通过将Mysql某一台主机数据复制到其它主机(slaves)上,并重新执行一 ...

  2. [DOM Event Learning] Section 2 概念梳理 什么是事件 DOM Event

    [DOM Event Learning] Section 2 概念梳理 什么是事件 DOM Event   事件 事件(Event)是用来通知代码,一些有趣的事情发生了. 每一个Event都会被一个E ...

  3. MySQL复制的基本概念和实现

    MySQL的复制的概念是完成水平扩展的架构 MySQL性能方面的扩展方式有scale on(向上扩展,垂直扩展)                          scale out(向外扩展,水平扩 ...

  4. MySQL的几个概念:主键,外键,索引,唯一索引

    概念: 主键(primary key) 能够唯一标识表中某一行的属性或属性组.一个表只能有一个主键,但可以有多个候选索引.主键常常与外键构成参照完整性约束,防止出现数据不一致.主键可以保证记录的唯一和 ...

  5. mysql数据引擎的概念介绍

    什么是数据库引擎?每种数据库的数据格式,内部实现机制都是不同的,要利用一种开发工具访问一种数据库,就必须通过一种中介程序,这种开发工具与数据库之间的中介程序就叫数据库引擎. 如果你是个赛车手并且按一下 ...

  6. MySQL数据库1 - 基本概念及安装

    一.数据管理技术的产生和发展: 1.人工管理阶段 - 效率低,成本高(文字) 2.文件系统阶段 - 易于存储,处理速度快,数据形式丰富(文字,声音,图片...磁带,磁盘) 3.数据库系统阶段 - 易于 ...

  7. mysql之数据库基本概念(mysql学习笔记一)

    数据库系统   数据库管理系统(DBMS)+数据库(DATABASE)(+数据库管理员) DBS=dbms+db 定义: 大量信息进行管理的高效解决方案,按照数据结构来组织.存储和管理数据的仓库 关系 ...

  8. MySQL数据库分区的概念与2大好处(1)

    我们大家都知道通过MySQL数据库分区(Partition)可以提升MySQL数据库的性能,那么到底什么是MySQL数据库分区呢?以及其实际应用的好处的表现有哪些呢?以下的文章就是对这些内容的描述. ...

  9. mysql主从同步(2)-问题梳理

    之前详细介绍了Mysql主从复制的原理和部署过程,在mysql同步过程中会出现很多问题,导致数据同步异常.以下梳理了几种主从同步中可能存在的问题:1)slave运行过慢不能与master同步,也就是M ...

随机推荐

  1. The Last Week

    二轮省选前的最后一周了呢. 一路走到这里,真的很希望能继续走下去. 好好调整一下状态,争取能有机会买D吧(虽然现在似乎D也没什么用了 day1 多项式 多项式ln 多项式exp day2 数据结构 L ...

  2. Petrozavodsk Winter Camp, Day 8, 2014, Ship

    $dp(i,j)$表示i-j这段还没运走时的状态,包括 运输了多少次,还剩多少空间 每次枚举运输左边还是右边转移 #include <bits/stdc++.h> #define rep( ...

  3. weblogic安装部署ODM下jrules-res-xu-WL10.rar出现Can't find com.ibm.rules.res.xu.messages bundle异常

    Windows: weblogic用户新建域文件夹里面,bin目录下找到setDomainEnv.cmd文件 在set JAVA_OPTIONS=%JAVA_OPTIONS% 后面添加: " ...

  4. 322. Coin Change零钱兑换

    网址:https://leetcode.com/problems/coin-change/ 典型的动态规划问题,类比背包问题,这就是完全背包问题 问题的阶段:对数值 i 凑硬币 问题的状态:对数值 i ...

  5. JSP之mysql中文乱码问题

    查看数据库编码方式 show variables like 'character%'; 关于jsp页面插入数据库乱码问题. 我遇到的问题是插入数据库后后台select * from tablename ...

  6. css给html添加效果

    <!doctype html> <html> <head> <title>EasyMall注册界面</title> <meta htt ...

  7. 【性能测试】LoadRunner11安装(包含破解、汉化)

    LoadRunner安装(包含破解.汉化) 安装LoadRunner a.以解压包的方式打开[性能测试工具LR11.00].loadrunner-11.iso文件,运行“setup.ext”(花费时间 ...

  8. Road of computer tec 01

    回顾自己过去将近3年的学习经历 当初报考的时候,自己是真正喜欢这个专业的么? 当初报这个专业的时候,对计算机还没有什么很明显的概念,只知道这个专业以后是要每天面对电脑的,喜欢不喜欢谈不上吧,但是还蛮感 ...

  9. Forth-83 多任务解析

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  10. HFun.快速开发平台(四)=》自定义列表实例(请求参数的处理)

    上编自定义列表描述了自定义列表的基本实现功能,本此记录列表的请求过程. 个人比较喜欢对参数进行对象化,方便后续人维护及查看,先上代码: /******************************* ...