zoukankan      html  css  js  c++  java
  • mysql的视图,事务,索引,外键

    视图
    创建视图,将两个表合成一个表,方便以后查询,并且可以更改。         
    表1: students 有id,name,age字段
    表2: classes 有id,name,sex字段
    那么如果这是想同时查看这两张表:用以前学过的关联查询的命令:
    select * from students inner join classes on students.id=classes.id;  
    现在创建视图,在上一条命令前加:
    create view v_students as select * from students inner join classes on students.id=classes.id;    
     
      生成的视图就像一张表一样
    查看视图:show tables;
    select * fom 视图表名;
    删除视图:drop view 视图表名;
    事务
    事务广泛的运用于订单系统、银行系统等多种场景
      所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转帐工作:从一个帐号扣款并使另一个帐号增款,这两个操作要么都执行,要么都不执行。所以,应该把他们看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性
    务具有ACID特性:原子性(A,atomicity)、一致性(C,consistency)、隔离性(I,isolation)、持久性(D,durabulity)。
    • 原子性:事务内的所有操作要么都执行,要么都不执行,它是一个不可分割的工作单位。
    • 一致性:事务开始和结束前后,数据都满足数据一致性约束,就是说结束后该是什么样就时什么样,而不是经过事务控制之后数据变得不满足条件或业务规则。
    • 隔离性:比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,事务之间不能互影响,它们必须完全的各行其道,互不可见。
    • 持久性:事务完成后,该事务内涉及的数据必须持久性的写入磁盘保证其持久性。当然,这是从事务的角度来考虑的的持久性,从操作系统故障或硬件故障来说,这是不一定的。
     
    事务命令
    • 要求:表的引擎类型必须是innodb类型才可以使用事务,这是mysql表的默认引擎
    • 查看表的创建语句,可以看到engine=innodb
          show create table students;
    • 修改数据的命令会触发事务,包括insert、update、delete
    • 开启事务,命令如下:begin;
      • 开启事务后执行修改命令,变更会维护到本地缓存中,而不维护到物理表中
    • 提交事务,命令如下:commit;
      • 将缓存中的数据变更维护到物理表中
    • 回滚事务,命令如下:rollback;
      • 放弃缓存中变更的数据,回退
     
    索引
    数据库中数据量很大的时候,查找就会变得很慢,
    对于使用数据库查找大于增删改时,
    优化方案:索引
    缺点:添加的索引越多,增删改的性能越差。
    • 查看索引
    show index from 表名;
    • 创建索引
    方式一:建表时创建索引
    create table create_index( id int primary key, name varchar(10) unique, age int, key (age) );
    方式二:对于已经存在的表,添加索引
    如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致 字段类型如果不是字符串,可以不填写长度部分 create index 索引名称 on 表名(字段名称(长度))
      例: create index age_index on create_index(age);
    删除索引:
    drop index 索引名称 on 表名;
    设置时间:
    set profiling=1;
    索引时间查看:
    show profiles;
     
    外键foreign key
    • 如果一个实体的某个字段指向另一个实体的主键,就称为外键。被指向的实体,称之为主实体(主表),也叫父实体(父表)。负责指向的实体,称之为从实体(从表),也叫子实体(子表)
    • 对关系字段进行约束,当为从表中的关系字段填写值时,会到关联的主表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并报错
    语法
     查看外键
     show create table 表名;
    添加外键
    要设为外键的字段必须和对应的表一一对应。
    alter table students add constraint fk_students_gid foreign key (gid) references grade(gid) on delete cascade;
    例:
    alter table students add constraint f foreign key (cls_id) references classes(id);
     删除外键
      show create table 表名
    alter table students drop foreign key 外键名字;
     
  • 相关阅读:
    3.24课堂
    3.23作业
    3.23课堂
    3.20作业
    3.20课堂
    3.19作业
    3.19课堂
    3.18课堂
    3.18作业
    46、表与表的连接
  • 原文地址:https://www.cnblogs.com/dayle/p/9954052.html
Copyright © 2011-2022 走看看