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. 新版本Eclipse安装后插件都在哪里?

    201903版本的Eclipse,选择win安装,下载后的安装包大小只有48.7Mb, 双击安装会会弹出类似eclipse网页,选择需要安装的类型,一般选择Java EE版本 选择好版本后,选择安装目 ...

  2. redmine本地安装部署

    1.railsinstaller-3.2.0.exe 下载地址 http://railsinstaller.org/en 安装railsinstaller  一直点next就可以了,安装完成之后C盘会 ...

  3. 373. Partition Array by Odd and Even【LintCode java】

    Description Partition an integers array into odd number first and even number second. Example Given  ...

  4. 代码对齐 (Alignment of Code,ACM/ICPC NEERC 2010,UVa1593)

    题目描述: 解题思路: 输入时提出单个字符串,并用一个数组记录每列最长长度,格式化输出 #include <iostream> #include <algorithm> #in ...

  5. [Clr via C#读书笔记]Cp4类型基础

    Cp4类型基础 Object类型 Object是所有类型的基类,有Equals,GetHashCode,ToString,GetType四个公共方法,其中GetHashCode,ToString可以o ...

  6. 【MFC】学习与问题整合

    需要源码联系邮件:kangxlchn@163.com 1.新建一个MFC工程(基于对话框) 环境:vs2017 统统NEXT 新建完成后打开MFCPrj.cpp文件 打开类试图 每创建一个MFC项目, ...

  7. UVa 401 - Palindromes 解题报告 - C语言

    1.题目大意 输入字符串,判断其是否为回文串或镜像串.其中,输入的字符串中不含0,且全为合法字符.以下为所有的合法字符及其镜像: 2.思路 (1)考虑使用常量数组而不是if或switch来实现对镜像的 ...

  8. leetcode个人题解——#8 string to integer

    第八题 class Solution { public: int myAtoi(string str) { ; ; ; while(str[i] == ' ')i++; if (str[i] == ' ...

  9. SIG蓝牙mesh笔记3_网络结构

    目录 3. Mesh Networking 3.1 Bearers 承载层 3.2 Network Layer 网络层 3.2.3 Address validity 地址有效性 3.2.4 Netwo ...

  10. SpringCloud IDEA 教学 (三) Eureka Client

    写在前头 本篇继续介绍基于Eureka的SpringCloud微服务搭建,回顾一下搭建过程, 第一步:建立一个服务注册中心: 第二步:建立微服务并注入到注册中心: 第三步:建立client端来访问微服 ...