mysql数据库语言04

存储程序

存储过程:

特点:输入输出参数

1.三种模式: in/out/inout

2.if/while … do … end while/loop…end loop/repeat…end repeat

3.创建:procedure 调用:call

存储函数:

特点:有返回值,作为sql语句一部分运行。

创建:

delimiter //;
create function func_emp(eno int)
returns varchar(20)
deterministic #确定的
begin
	declare name varchar(20);
	select ename into name from emp where empno = eno;
	return name;
end;
#调用
select func_emp(7788);
触发器:

特点:由事件驱动,不能传递参数

创建:

delimiter //;
creater triger tri_stu
#before|after  insert|update|delect
after delete
on student for each row #行级触发器
begin           #old|new
insert into stu_bak values(old.sid,old.sname,old.cid);
end;

视图和索引

视图
虚拟表:

没有真实的物理存在,在引用过程中动态根据基表生成。

语法:
create view view_emp as select * from emp 
where deptno = 10 with check option;
注:
	1.通过视图可以修改基表数据
	2.一般视图只做查询
删除视图:
	drop view view_emp
优点:

1.安全性:保证数据不泄密

2.高效性:多表连接效率较低

3.定制化数据:将常用的字段放置视图

索引
索引定义

1.提升查询效率创建的数据结构

· 默认是B-Tree索引(位图,反向等…)

语法:
1.普通索引:
	创建:create index index_name on tname(fie1...);
	删除:drop index index_name on emp;
2.唯一索引:
	创建:create unique index index_name on tname(fie);
3.主键,唯一约束,外键等都会添加索引
适合场景

1.表数据量足够大

2.增删改较少的表

3.高基数列

注意:

1.索引需要单独维护,索引不宜添加过多。

2.将条件列设置索引。

3.索引失效状况。

数据库的设计

数据库设计基石。

数据库设计的三大范式:

​ 1NF: 所有的域必须是原子性的。列不能分割。

​ 2NF: 所有的字段必须与主键相关,而不是部分相关(联合主键)。

​ 3NF:所有字段必须与主键直接相关,而不是间接相关。

数据库设计步骤:

​ E-R:entity relationship

​ 实体之间的关系:

​ 一对一:个人信息和档案信息

​ 1.外间添加唯一约束

​ 2.主键做外键

​ 一对多:雇员和部门

​ 多对多:学生和课程

​ 1.创建关系表

​ 2.关系表创建联合主键

sql优化

1.select子句中不要使用*

2.索引失效状况

​ 2.1 索引列进行计算

​ 2.2 索引列使用函数(模糊查询:包含)

​ 2.3 索引列使用not != <> > < null not null

​ 2.4 索引列使用or(使用union替代)

备份和还原:

​ Mysqldump -uroot -proot dbname >d:/t.sql;

​ mysql -uroot -p < C:\backup.sql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值