(二)MySQL学习笔记
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学习笔记的更多相关文章
- Mysql学习笔记(二)数据类型 补充
原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...
- 毕业设计 之 二 PHP学习笔记(一)
毕业设计 之 二 PHP学习笔记(一) 作者:20135216 平台:windows10 软件:XAMPP,DreamWeaver 一.环境搭建 1.XAMPP下载安装 XAMPP是PHP.MySQL ...
- Mysql学习笔记(三)对表数据的增删改查。
正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...
- MySQL学习笔记一
MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...
- 初识mysql学习笔记
使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...
- 【mysql学习笔记整理】
/*mysql学习笔记整理*/ /*常用的数据库操作对象*/ #库的操作#创建#数据库的创建USE mysql;CREATE DATABASE db_x;#删除#删除数据库DROP DATABASE ...
- 数据库MySQL学习笔记高级篇
数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...
- MySql学习笔记三
MySql学习笔记三 4.DML(数据操作语言) 插入:insert 修改:update 删除:delete 4.1.插入语句 语法: insert into 表名 (列名1,列名2,...) val ...
- MySql学习笔记(一)之DQL常用查询
MySql学习笔记(一)之DQL常用查询 前言:mysql是中小型的数据库软件,SQL语言分为DDL,DCL,DML,DQL四种,在这里重点讲解DQL的单表查询. 正文:在学习mysql单表查询之前, ...
- mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记
mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...
随机推荐
- 成都Uber优步司机奖励政策(3月22日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- Android7.0 应用内升级
Android7.0应用内升级 最近线上项目在7.0机器上出现应用内升级失败,原来是由于Android7.0权限问题导致. 如果项目的 targetSdkVersion>=24 在处理应用内升级 ...
- Restify Api 开发经验
此文已由作者王振华授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 工作期间,一直在用Restify开发或维护大大小小的API系统,现在分享一下一些个人觉得不错的Tips. 充 ...
- 低于0.01%的极致Crash率是怎么做到的?
WeTest 导读 看似系统Bug的Crash 99%都不是系统问题!本文将与你一起探索Crash分析的科学方法. 在移动互联网闯荡多年的iOS手机管家,经过不断迭代创新,已经涵盖了隐私(加密相册). ...
- 【SpringCloud】第六篇: 分布式配置中心(Spring Cloud Config)
前言: 必需学会SpringBoot基础知识 简介: spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选. ...
- leetcode7_C++整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 输出: 示例 2: 输入: - 输出: - 示例 3: 输入: 输出: 注意: 假设我们的环境只能存 ...
- Apache——SSL协议
SSL 协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术.SSL 的握手协议非常有效的让客户和服务器之间完成相互之间的身份 ...
- POJ 3028 Shoot-out(概率DP)
Description This is back in the Wild West where everybody is fighting everybody. In particular, ther ...
- 【python】scrapy相关
目前scrapy还不支持python3,python2.7与python3.5共存时安装scrapy后,执行scrapy后报错 Traceback (most recent call last): F ...
- 无法启动mysql服务 错误1067:进程意外中止
这个错误在前些周遇到过,没有解决,直接粗暴的卸载重装了,自己用的是wampserver集成环境,重装的后果是mysql里面的一些已有的数据库就没有了,有点小悲剧,不过幸好都是一些测试用的数据库,后面直 ...