mysql(视图 事务 索引 外键)

视图

 
视图本质就是对查询的封装
 
创建视图(定义视图 起名以v_开头)
create view v_students as select classes.name as c_name ,students.* from students inner join classes on students.cls_id=classes.id;
 
查看视图               
select * from v_students;
 
删除视图
drop view v_students;
 
 
 

事务

 

事务具有ACID特性:

原子性(A,atomicity)

一致性(C,consistency)

隔离性(I,isolation)

持久性(D,durabulity)

 
原子性:事务内所有操作要么都执行,要么都不执行,它是一个不可分割的工作单位
例如:
A给B转账,不会因为各种原因A账号已经发生扣款而B账户没有收到加款。
 
 
一致性:事务开始和结束前后,数据库的完整性没有被破坏
 
案例:
   对银行转帐事务,不管事务成功还是失败,应该保证事务结束后ACCOUNT表中aaa和bbb的存款总额为2000元。
 
隔离性:事务之间不相互影响,多个事务并发访问时,事务之间是隔离的
    事务查看数据更新时,数据所处状态要么是另一事务修改之前或者修改之后的状态,不会查看到中间状态的数据。事务1在修改表的时候提交之前事务2不能修改
 
持久性:事务完成一手,该事务所对数据库所做的更改会持久的存在数据库中
 
begin; 开启事务
update delete insert  更改删除添加数据
commit;提交事务   
rollback; 回滚事务,放弃修改
 
 

索引

当数据库中数据量很大时,查找数据会变得很慢,
优化方案:索引
索引缺点:不便于增删改   时间长占用内存大
show index from 表名;#查看表的索引
 
set profiling=1; #开启时间
                      索引名字          表名字(字段)
create index title_index on students(id);  #创建索引
desc students;#查看索引
show profiles; #查看时间
drop index 索引名称 on 表名;  #删除索引
 
建表时创建索引
create table create_index(
id int primary key,
name varchar(10) unique,
age int,
key (age)
);
 

外键

  • 如果一个实体的某个字段指向另一个实体的主键,就称为外键。被指向的实体,称之为主实体(主表),也叫父实体(父表)。负责指向的实体,称之为从实体(从表),也叫子实体(子表)
  • 对关系字段进行约束,当为从表中的关系字段填写值时,会到关联的主表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并报错
  • 添加外键
alter table students add constraint fk_students_gid foreign key (gid) references grade(gid) on delete cascade;
alter table students drop foreign key 外键名字;  删除外键
 
原文地址:https://www.cnblogs.com/heiguu/p/10021089.html