掌握索引、视图的设计与创建;掌握存储过程和触发器的设计,掌握创建用户和用户授权的方法。
主要要求有:
视图是一种虚表,具有表的外观和部分特征,但是视图的实质是一组SELECT语句构成的SQL语句。视图可以当做表来使用,主要是指查询数据。对视图的修改都会转换为对基本表的修改,不是所有的视图都可以修改的,决定因素就是能否将对视图DML成功且唯一转化为对基表的DML操作。
创建视图的SQL语句的语法格式:
CREATE VIEW view_name
AS
SELECT语句
WITH CHECK OPTION
其中WITH CHECK OPTION选项表示强制视图上执行的所有数据修改语句都必须符合由SELECT语句设置的准则。
1、索引创建
索引是用来加快数据查询速度的一种对象。索引的维护需要耗费一定资源,因此索引不是越多越好,一般经常查询的表列才创建索引,经常修改的表一般少创建索引。
创建索引的语句格式:
CREATE [UNIQUE] INDEX index_name ON
Table_name(colum_name [ASC/DESC][,colum_name[ASC/DESC]]......)
2、索引创建原则
(1)经常用于查询且更新较少的表才适合创建索引。
(2)数据量越大的表越适合创建索引。
(3)每次查询的数据比例越小,越适合创建索引。
(4)在取值重复率较大的字段上不要建立B树索引。
(5)要为经常需要排序、分组和连接查询的字段建立索引。
3、索引使用查看
在MySQL中可以使用explain命令查看MySQL如何使用索引来处理select语句的。
explain关键字的使用方法很简单,直接放在select查询语句的前面即可,但是select语句不会实际执行。如下所示:
mysql中查看是否使用索引,简单的看“type”列取值就可以。
如果它是all,那说明这条查询语句遍历了所有的行,并没有使用到索引,其他取值都使用到了索引。
“Key”列的值表示使用到的索引的名称。
但是“type”取值很多,分别代表了执行计划的优劣,对应的“key”列的值也不尽相同,对于默认的主键索引,“key”列取值为primary。
SQL语言是关系数据库通用操作语言,但是缺乏流程控制等高级程序语言要素。
MySQL对标准SQL语言进行了扩展,有别于其他DBMS。
MySQL不能直接执行语句块和流程控制语句,需要在自定义函数、存储过程或触发器中使用。
1、语句块与定界符
语句块:由若干条语句构成的程序代码单元,在逻辑上被当做一个整体去执行。
使用BEGIN……END定义语句块。
定界符:也叫命令结束符,默认是“;”。如果语句块中包含以“;”结束的语句,那么就需要更改定界符,避免语句块没有输入完成就被执行。
使用DELIMITER命令更改定界符。一般在需要前更改,完成后再更改回默认的“;”。
DELIMITER $$
BEGIN
各种以;结束的语句
END$$
DELIMITER ;
2、局部变量与全局变量
(1)局部变量:是在BEGIN……END之间定义与使用的变量。
定义:DECLARE 变量名 数据类型 DEFAULT 默认值
DECLARE x,y int default 1
(2)会话变量:某个会话中使用的变量,以@开头,不需要定义,直接使用。
(3)变量赋值:使用set或select为变量赋值
set x=20;
select x:=30;
3、IF…ELSE选择控制结构
IF 判断条件1 THEN
<命令行或程序块>
[ ELSEIF 判断条件2 THEN
<命令行或程序块> ]
[ ELSE
<命令行或程序块> ]
END IF;
4、WHILE循环控制结构
WHILE <条件表达式>
DO
[命令行或程序块]
END WHILE;
1、存储过程概述
存储过程是一种数据库对象,将执行计划存储在数据库的服务器中,需要的时候调用执行。它的运行速度比独立运行同样的程序要快。
2、创建存储过程
CREATE PROC[EDURE] 存储过程名称([参数定义[,…]])
[存储过程选项]
BEGIN
语句序列;
END;
3、调用存储过程
存储过程调用有多种方式组合,基本格式如下:
EXEC[UTE] 存储过程名称([参数[,…]])
触发器是一种特殊类型的存储过程,主要通过事件进行触发而自动执行。主要功能是保证数据一致性、强化约束、跟踪变化、级联运行和存储过程的调用等。
1、触发器概述
(1)触发器的种类
AFTER触发器:对表成功执行某一操作后,才能被触发。
BEFORE触发器:对表执行某一操作前,就会被触发。
(2)触发条件
触发条件主要针对DML语句,因此主要分为:DELETE、INSERT和UPDATE三个条件。
(3)触发次数
MySQL中触发器暂时均为行级触发器,即每一条数据DML操作,触发器就执行一次。
2、触发器原理
MySQL的触发器工作原理主要是通过OLD和NEW两个对象来实现的。
分别存储对应DML操作的旧数据行和新数据行。
3、触发器创建
CREATE TRIGGER 触发器
AFTER/BEFORE INSERT/UPDATE/DELETE
ON 表名
FOR EACH ROW
BEGIN
语句序列;
END;
MySQL中用户分为普通用户和超级管理员用户root。普通用户需要提前创建并授权,才能使用。
1、用户创建
CREATE USER user [IDENTIFIED BY [PASSWORD] ‘password’]
2、用户授权
GRANT ALL|<权限>[(列名)] ON <对象名> TO <用户> [WITH GRANT OPTION]
3、收回用户权限
REVOKE ALL|<权限>[(列名)] ON <对象名> FROM <用户>
1、mysqldump备份
在命令符界面中(不登录mysql)执行该命令,如有需要进入mysqldump.exe所在路径再执行该命令。
该命令基本格式为:
mysqldump -h主机名 -p端口 -u用户名 -p密码 参数1,参数2,…… >备份文件.sql
通过各个参数指定要导出的数据范围,可以是全部数据库、部分数据库、部分表、表中部分数据等。
2、mysql恢复
mysql命令可以指定带有create和insert的文件进行数据恢复。
对应mysqldump命令,其基本语法格式为:
mysql -u用户名 -p密码 <备份文件.sql
mysql命令恢复数据时不需要先登录数据库,但如果脚本文件中没有create database语句,则需要先创建空的数据库。
3、source恢复
source命令也可以直接恢复数据,但不同的是不能恢复数据库,所以需要先提前创建数据库,并选择数据库。其基本语法格式为:
mysql>source 备份文件.sql
时间:2022年11月13日