一、视图:
①视图是一个虚拟表(逻辑表),它不在数据库中以存储数据的形式保存(本身不包含数据),还是在使用视图的时候动态生成。
②视图的作用?
1.数据库中的数据查询非常复杂,例如多表、子查询、编写语句较多、并能且这种查询被重复使用,那么我们可以创建视图,避免每次写sql语句会出现错误,提高查询效率。
2.为了安全,在公司中,有些字段位保密字段,那么可以创建视图,限制对某些字段的操作。
③视图的优缺点?
1.提高查询效率(复杂数据可以通过创建视图避免多次编写sql语句出现的错误)
2.安全(保密字段可以通过创建视图来限制用户操作)
3.简单(不需要关心后面关系结构);
1.性能差(把试图查询结果转换成对表的查询)
2.修改限制(修改视图数据,必须把它转换为对基础表的修改)
3脱敏测试(加密测试)通常情况下,数据库是敏感的,脱敏测试不是每一个用户都能进行访问,但是某些用户需要读取部分数据,这时可以指定条件创建视图
④视图的使用
(1) show tables;显示所有的表(先查看数据库中的基本表)
(2)创建视图:
格式 create view 视图名 as (sql 语句)
(3)show create view hz11
(4)drop view hz11
(5) select from hz11
(6)创建视图之后,无需重复合表,语句简单。
⑤视图的特点
1.是由基本表产生的虚拟图
2.视图的创建和删除不影响基础表
3视图的更新与数据删除直接影响基础表(单表)
4.基础表修改数据,视图也修改
二、索引的介绍
1.什么是索引
一个索引在存储的表中的数据的结构或
是在表的字段名上创建
索引包含了一个列的值
2.索引的作用
(1)保证数据记录的唯一性
(2)实现表与表之间的参照
(3)减少排序和分组的时间(如在使用order by ,group by 查询语句进行数据检索)
(4)可以利用索引快速访问数据库中特定的信息(matter)
3.索引的缺点
(1)索引要占物理内存
(2)对表进行增删改查,索引也要进行维护
4.索引的分类
(普通索引) :index mul 最基本的索引 无任何限制
(主键索引) :primary key pri 是一种唯一索引,不能为空
(唯一索引):unique uni 是一种唯一索引,可为空
全文索引
组合索引
单列索引
聚焦索引
5.索引的使用
格式1: show index from table
格式2: show keys from table
6.建立索引
建表后建立索引
(1)建立普通索引 index
key_name 索引名 column_name 字段名
creat index jj on ded (name)
7.索引用来做什么
创建索引的时间
主键索引和唯一索引的区别
主键索引只有一个
唯一索引可以有多个
主键索引删除 直接drop primary key
删除其他索引 drop index 索引名
三、外键
1、外键的定义:
让一张表记录的数据不要太过于冗余,在数据库中对表的关系进行解耦,尽量让表的数据单一化。 2、外键作用 外键的作用:保持数据的一致性和完整性 3、mysql 数据库中存储引擎? innodb (外键要使用innodb存储引擎) myisam(默认) 4、查看存储引擎 格式:show table status from 库名 where name="表名" ; 案例:show table status from hz10 where name="emp" ;
四、存储 (1)什么是存储过程? h存储过程是实现某个特定功能的sql 语句的集合,编译 后的存储过程会保存 在数据库中,通过存储过程的名称可以反复的调用执行。 (2)存储过程的优点? 1、存储创建后,就可以反复非调用和使用,不需要重新写复杂的sql语句 2、创建、修改存储过程不会对数据有任何的影响 3、存储过程可以通过参数和返回值 4、存储过程可以通过加入控制语句,加强sql语句的功能性和灵活性 5、对于的那个的增删改查语句,可以直接封装在一个函数体当中,或者封装在一个集合当中,存储过程一旦创建就可以直接调用,而且可以重复调用 6、单个sql语句每次执行都要数据库进行编译,而存储过程创建只需要编译一次,后续就可调用 7、创建存储过程,可以重复进行调用,可以减少开发人员的工作量 8、防止sql注入 9、造数据 (3)存储的基本格式: delimiter // #分隔符/定格符
create procedure 存储名称( in或out 或 inout)
BEGIN #开始
执行语句块1 执2语句块1
end #结束
// #分隔符 先执行创建存储,在调用使用call call 存储名() 调用存储 基本使用的语句: (1)查看单个存储过程的项详情 格式:show create procedure 存储名; show create procedure hz1 ; (2)查看所有已经创建的存储过程详情 格式:show PROCEDURE STATUS ; show PROCEDURE STATUS ; (3)查询数据库创建的存储过程 格式:show PROCEDURE STATUS where db="数据库名" ; show PROCEDURE STATUS where db="hz10" ; (4)删除存储 格式:drop procedure 存储名称 ; drop procedure hz2 ;
|