《数据库原理与应用》作业(1)前置

一、学习目标

掌握索引、视图的设计与创建;掌握存储过程和触发器的设计,掌握创建用户和用户授权的方法。

主要要求有:

  1. 掌握索引的创建方法。
  2. 掌握视图的创建方法和使用方式。
  3. 了解数据库编程基本语法。
  4. 理解存储过程的概念及优点。掌握存储过程的创建和使用方法。
  5. 理解触发器的主要功能及优点,掌握触发器的创建方法。
  6. 掌握创建用户和用户授权的方法。

二、原理及背景知识

(一)视图基础知识

视图是一种虚表,具有表的外观和部分特征,但是视图的实质是一组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。

(三)MySQL编程基本知识

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日

你可能感兴趣的:(数据库原理与应用,数据库,mysql,sql)