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 外键名字;  删除外键

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )