1.视图

视图是一系列select语句返回的可视化结果集,是一张虚拟表。更多介绍请查看http://tool.oschina.net/apidocs/apidoc?api=mysql-5.1-zh

视图操作

CREATE VIEW vw(v_title,v_url) AS SELECT title,url FROM info WHERE types='生活';  #创建一个info表中types为'生活',有v_title,v_url两个字段的视图
SELECT * FROM vw WHERE v_title='VID' LIMIT 5; #在视图中查询title为'VID'的前5条结果
DROP VIEW vw; #删除视图
SHOW CREATE VIEW vm;  #查看视图的完整定义

2.索引

MySQL 索引可以分为单列索引、复合索引、唯一索引、主键索引等。适当的建立索引能有效的提高性能

创建单列索引(多列索引并不能取得复合索引的效果)

1) CREATE INDEX index_title ON info(title);  #为info表的title列创建单列索引index_title

2) ALTER TABLE info ADD INDEX index_title ON (title);  

3) CREATE TABLE info (title VARCHAR(20), INDEX(title(20))); 

创建复合索引

) CREATE INDEX index_name ON info(title,author);  #为info表的title,author列创建复合索引index_name

) ALTER TABLE info ADD INDEX index_name ON (title,author);  

) CREATE TABLE info (title VARCHAR(), 
           author VARCHAR(10),
     aid INT NOT NULL,
     PRIMARY KEY ('aid'),
             INDEX index_name(title,author));

查看索引

SHOW INDEX FROM info;  #查看info表的索引

删除索引

DROP INDEX index_name ON info;  #删除info表的索引index_name

复合查询

查询条件中使用了复合索引的第一个字段(这里指title),索引才会被使用,跟索引列的顺序相关联。

SELECT * FROM info WHERE title='崩坏';

SELECT * FROM info WHERE title='崩坏' AND aid=;

SELECT * FROM info WHERE title='崩坏' AND (title='博客' OR aid=);

SELECT * FROM info WHERE title='崩坏' AND aid>= AND aid < ;

#以下查询是不可行的
SELECT * FROM info WHERE aid=2;
SELECT * FROM test WHERE aid=2 OR title='崩坏;

创建唯一索引

1) CREATE UNIQUE INDEX index_title ON info(title);  #为info表创建title列的索引index_title

2) ALTER TABLE info ADD UNIQUE INDEX index_title ON (title);

3) CREATE TABLE info (title VARCHAR(20),
         aid int() NOT NULL AUTO_INCREMENT,
author varchar(),
PRIMARY KEY (aid),
UNIQUE index_title (title()));

创建主键索引

) ALTER TABLE info ADD PRIMARY KEY(title);

) CREATE TABLE info (title VARCHAR(),
aid int() NOT NULL AUTO_INCREMENT ,
PRIMARY KEY (aid));

3.存储过程

存储在服务器中的一套SQL语句就是存储过程,可反复执行。

创建存储过程(名称为simpleproc)

DELIMITER //  #首先改变分隔符

#IN,OUT,INOUT表示输入类型,输出类型,输入又输出类型

mysql> CREATE PROCEDURE simpleproc1 (IN bram INT,OUT param INT)
-> BEGIN
-> SELECT MAX(coin) INTO param FROM info WHERE views>bram;
-> END
-> // mysql> CREATE PROCEDURE simpleproc2 (IN name VARCHAR())
-> BEGIN
-> IF name IS NULL OR name='' then
->   SELECT * FROM info;
-> ELSE
->   SELECT * FROM info WHERE title like name;
-> END IF-> END
-> // DELIMITER ; #还原分隔符

执行存储过程

CALL simpleproc1(1000,@a);
SELECT @a; CALL simpleproc2(%崩坏%);

修改存储过程

ALTER FUNCTION simpleproc1 READS SQL DATA COMMENT 'find max num';  #将simpleproc1读写权限改为'READS SQL DATA',并添加注释'find max num'

删除存储过程

DROP PROCEDURE simpleproc1;

DROP PROCEDURE simpleproc2;

查看存储过程

SHOW PROCEDURE STATUS;

4.存储函数

存储函数,就是封装一段sql代码,完成某种特定的功能,并返回结果,且函数只能指定输入类型,而不能指定输出类型,输入输出类型,类似于COUNT(),MAX()等。

创建存储函数(名称为simplefunc)

DELIMITER //  #首先改变分隔符
mysql> CREATE FUNCTION simplefunc1(name CHAR(20)) RETURNS CHAR(50)
-> BEGIN
-> RETURN CONCAT('Hello',name,'!');
-> END
-> // mysql> CREATE FUNCTION simplefunc2(num INT) RETURNS INT
-> BEGIN
-> DECLARE result INT DEFULT 0;
-> WHILE num>0 DO
->  SET result = result + 10;
->  SET num = num - 1;
-> END WHILE
-> END
-> //
DELIMITER ; #还原分隔符

执行存储函数

SELECT simplefunc1('Delav');

SELECT simplefunc2(),simplefunc2(10);

修改存储函数

ALTER ROCEDURE simplefunc1 READS SQL DATA COMMENT 'find max num';  #将simplefunc1读写权限改为'READS SQL DATA',并添加注释'find max num'

删除存储函数

DROP FUNCTION simplefunc1;

DROP FUNCTION simplefunc2;

查看存储函数

SHOW CREATE FUNCTION STATUS;

5.触发器

触发器是与表有关的命名数据库对象,当表出现特定事件时,将激活该触发器。

创建触发器

DELIMITER //  #修改分隔符

#当在info表执行插入操作前,将tdcp表中coin为100的title更改为'MySQL'
mysql> CREATE TRIGGER simpletger1 BEFOR INSERT ON info FOR EACH ROW
-> BEGIN
-> UPDATE tdcp SET title='MySQL' WHERE coin=;
-> END
-> // #当在info表执行删除操作后,将删除记录插入到history_info表中
#NEW/OLD关键字可获取变更前后的记录,OLD用于AFTER,NEW用于BEFORE
mysql> CREATE TRIGGER simpletger2 AFTER DELETE ON info FOR EACH ROW
-> BEGIN
-> INSERT INTO history_info(title,danmaku,coin,url) VALUES(OLD.title,OLD.danmaku,OLD.coin,OLD.url)
-> END
-> //
DELIMITER ;  #还原分隔符

激活触发器

INSER INTO info (title,danmaku,coin,url) VALUES('博客园','1000','90','http://cnblogs')  #向info表插入数据,会更新tdcp表coin为100的title

DELETE FROM info WHERE title='崩坏3';  #info表删除title为'崩坏3'的记录,会自动执行触发器,将删除的这条记录插入到history_info表中

删除触发器

DROP TRIGGER simpletger1;

DROP TRIGGER simpletger2;

(二)MySQL学习笔记的更多相关文章

  1. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

  2. 毕业设计 之 二 PHP学习笔记(一)

    毕业设计 之 二 PHP学习笔记(一) 作者:20135216 平台:windows10 软件:XAMPP,DreamWeaver 一.环境搭建 1.XAMPP下载安装 XAMPP是PHP.MySQL ...

  3. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

  4. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  5. 初识mysql学习笔记

    使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...

  6. 【mysql学习笔记整理】

    /*mysql学习笔记整理*/ /*常用的数据库操作对象*/ #库的操作#创建#数据库的创建USE mysql;CREATE DATABASE db_x;#删除#删除数据库DROP DATABASE ...

  7. 数据库MySQL学习笔记高级篇

    数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...

  8. MySql学习笔记三

    MySql学习笔记三 4.DML(数据操作语言) 插入:insert 修改:update 删除:delete 4.1.插入语句 语法: insert into 表名 (列名1,列名2,...) val ...

  9. MySql学习笔记(一)之DQL常用查询

    MySql学习笔记(一)之DQL常用查询 前言:mysql是中小型的数据库软件,SQL语言分为DDL,DCL,DML,DQL四种,在这里重点讲解DQL的单表查询. 正文:在学习mysql单表查询之前, ...

  10. mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记

    mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...

随机推荐

  1. 怎么判断ThreadPool线程池里的任务都执行完毕

    在下面 链接中做方便的应该是第三种方法(他也推荐了),但是第三种方法有个小问题,就是 : WaitHandle.WaitAll(_ManualEvents); 中的_ManualEvents最大为64 ...

  2. netty之心跳机制

    1.心跳机制,在netty3和netty5上面都有.但是写法有些不一样. 2.心跳机制在服务端和客户端的作用也是不一样的.对于服务端来说:就是定时清除那些因为某种原因在一定时间段内没有做指定操作的客户 ...

  3. 网易七鱼 Android 高性能日志写入方案

    本文来自网易云社区 作者:网易七鱼 Android 开发团队 前言 网易七鱼作为一款企业级智能客服系统,对于系统稳定性要求很高,不过难保用户在使用中不会出现问题,而 Android SDK 安装在用户 ...

  4. iOS 测试工具reveal可视化调试工具的使用

    简单翻译一下reveal可视化图形工具插入项目的官方文档(官方英文版file:///Applications/Reveal.app/Contents/SharedSupport/Documentati ...

  5. java中的比较:instanceof、equals(hashcode)、==

    import javassist.expr.Instanceof; class Person{ String s; Person(String s){ this.s=s; } } class Man ...

  6. python3基础盲点

    数值类型 Python支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点数)complex (复数) python3对整数的大小不做限制 算数运算符 优先级: 逻辑运算符 优 ...

  7. Fiddler使用总结(二)

    在上一篇中介绍了Fiddler的基本使用方法.通过上一篇的操作我们可以直接抓取浏览器的数据包.但在APP测试中,我们需要抓取手机APP上的数据包,应该怎么操作呢? Andriod配置方法: .确保手机 ...

  8. Qt+opencv:读取、显示图像

    GitHub:点击下载完整代码 本文主要是使用Qt与opencv将图像进行显示在QT界面上. 程序运行后的界面如下所示: (由于只有打开图像之后,才能对图像进行翻转,所以程序设置为读取图像成功之后才能 ...

  9. lintcode 二分查找

    题目:二分查找 描述:给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1. c ...

  10. Matlab 图象操作函数讲解

    h = imrect;pos = getPosition(h); 这个函数用来获取图象上特定区域的坐标,其中pos的返回值中有四个参数[xmin,ymin,width,height],特定区域的左上角 ...