3.3 MYSQL中的视图索引事务等概念

目录

书写SQL注意事项

用exists取代集合运算和去重操作

执行计划和索引

视图

存储过程和触发器

授予权限和召回权限

事务--transaction


书写SQL注意事项

---1,给数据库命名的时候尽量用全小写

---2,作为筛选条件的字符串是否区分大小写看设置的校对规则

select ----- where name ="jack"

create database hrs default charset utf8 collate utf8_bin_ci(加ci对大小写不敏感);  

drop table if exists tb_emp    ---如果表存在删除

---3,数据库中的对象通常会用前缀加以区分

---table/view/index/function/procedure/trigger

create table tb_dept

{

dro int not null comment'编号',

dname varchar(10) not null comment'名称'

dloc varchar(10) not null comment'所在地'

primary key(dro)

};

insert into tb_tept values  ---批量插入

  (10,‘会计部’,‘北京’),

(20,‘研发部’,‘成都’);

create table tb-emp

{

--------

}

alter table tb_emp add column hiredate timestamp

alter table tb_emp add constraint fk_emp_mgr foreign key ---

-----查询薪资最高的员工姓名

-----查主管的姓名和编号

用exists取代集合运算和去重操作

执行计划和索引

explain 生成执行计划

select eno,ename from tb_emp where eno=7800;   -----快-----type(const -主键)

select eno,ename from tb_emp where ename='张三丰';  --慢-type(ALL-全表查)

select eno,ename from tb_emp where eno<>7900; 使用负向条件(不等于)性能相对差

用名字搜索员工,效率低下---解决方法

----给数据建立目录---查询更快捷index-----索引可以加速查询-----经常用于查询筛选条件的列上,但是额外占用空间会让增删改操作变慢,不能滥用。

create index idx_tb_emp on tb_emp (ename);

drop index idx_tb_emp on tb_emp;

视图

数据库对象----视图----查询的快照-----简化查询----通过视图可以把用户的访问权限限制到某些指定列上

create view vw_dept_count as 

select eno,ename,dname from tb_emp t1 inner join tb_dept t2 on t1.dno=t2.dno;

select * from vw_emp_dept;   

select  ename,dname from vw_emp_dept;

drop view vw_emp_dept;      ----删除视图

存储过程和触发器

use hrs 调用数据库

selemiter $$ 定界符

create procedure sp_dept_avg_sal(dno  ,int,  out,  avgsal  float)

begin

        select avg(sal) into avgsal from tb_emp where dno=dno;

end$$

selemiter ;结束符改回来分号

call sp_dept_avg_sal(20,@a);    调用存储过程

select  @a from dual;

drop procedure sp_dept_avg_sal

---修改表添加一个自参照的外键约束

alter table tb_emp drop foreign key fk_emp_dno;

--restrict----不允许操作

--cascade  ----级联操作

---set null --设置为null

尽量不使用触发器

授予权限和召回权限

--DCL;授予权限grant to 和召回权限revoke from

create user 'hellokitty' @ '%' identified by'123123';

drop user 'hellokitty' @ '%' 

grant all privileges on hrs.* to 'hellokitty'@'%'  ----把操作hrs数据库所有的对象表,视图,,所有权限授予给helloKitty

事务--transaction

----把多个增删改的操作做成不可分割的原子性操作

----要么全部都做,要么全都不做

-----比如说银行取钱,一个账户减去,一个账户增加

begin ;

delete from tb_emp; 

delete ---------

commit;  全部生效了,提交

rollback;全部失败了,回滚

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值