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

时间: 2024-11-08 04:26:58

mysql(视图 事务 索引 外键)的相关文章

2-16 MySQL字段约束-索引-外键

一:字段修饰符 1:null和not null修饰符 我们通过这个例子来看看 mysql> create table worker(id int not null,name varchar(8) not null,pass varchar(20) not null); mysql> insert into worker values(1,'HA','123456'); mysql> insert into worker values(1,'LB',null); ERROR 1048 (2

mysql 视图 事务 索引

为什么需要有视图 * 对于复杂的查询,往往是有多个数据表进行关联查询而得到,而这种语句往往比较复杂,也可能非常频繁的使用. 比如这样的SQL语句 select goods.name,goods_cates.name,goods_brands.name from goods join goods_cates on goods.cate_id = goods_cates.id join goods_brands on goods.brand_id = goods_brands.id; 为了简化用户复

SQLserver中的视图与主外键的创建

一.背景 原来学过数据库的相关内容,只是形式上的,从来也没有实践过,徐徐飘过而已,如今在做机房时,很多知识需要用到视图,才开始去慢慢的实践. 视图:我理解的就是一张表,它把我们所需要的某个表或某几个表中的部分信息提取出来,形成了一张临时的表. 它主要有两个优点:1.简单,它呈现给我们的数据就是我们想要的数据,没有多余的. 2.安全,提供给用户它们权限范围内的数据 我为什么会用到视图?举一个简单的例子,在查询用户信息时,我们可能会用到两张表中的内容.那么这个时候我就需要将两张表中我需要的数据提取出

mysql为表添加外键完成性约束 报错Can't create table 'sfkbbs.#sql-513_25' (errno: 150)

代码 alter table sfk_son_module add constraint foreign key(father_module_id) references sfk_father_module(id) on delete restrict on update restrict; (constraint 后面可以加上约束名字) 错误原因是之前两张表的id的类型不一样,一个时int,一个时bigint 解决办法时修改表, alter table sfk_father_module mo

MySQL-5-唯一索引-外键的变种

唯一索引 唯一索引 联合唯一索引 外键的变种 博客园 FK不能去重,一个用户只有一个博客园 原文地址:https://www.cnblogs.com/c-x-m/p/9061546.html

Mysql使用Navicat建立外键时报错cannot add foreign key constraint分析

Mysql使用Navicat建立外键时报错cannot add foreign key constraint分析 1)要关联的字段类型或长度不一致. 2)两个要关联的表编码不一样. 3)某个表已经有记录了. 4)将"删除时"和"更新时"都设置相同,如都设置成CASCADE. 原文地址:https://www.cnblogs.com/neymargoal/p/10072347.html

sql 语句系列(列举非索引外键)[八百章之第九章]

列举非索引外键 列举出那些外键没有添加索引. 目的: 1.减少锁. 2.外键添加索引,提示了查询性能,因为要与父表做连接查询做笛卡尔积. 下面只要会复制即可,没有会去从新写一遍的. select fkeys.table_name,fkeys.constraint_name,fkeys.column_name,ind_cols.index_name from ( select a.object_id,d.column_id,a.name table_name,b.name constraint_n

总结: MySQL(基础,字段约束,索引,外键,存储过程,事务)操作语法

1. 显示数据库列表 show databases; # 查看当前所有数据库 show databases \G   #以行的方式显示 2. 在命令行中,执行sql语句 mysql -e 'show databases' -uroot -p123456 mysqlshow -uroot -p123456 # 不常用,记住上面那个就行了 3.创建数据库语法 create database 数据库名; 例如: create database `HA-test`; 4. 切换数据库 use HA-te

2-13-MySQL字段约束-索引-外键

高版本导出报错问题,是由于高版本对导出文件优化了权限设置, show variables like '%secure%';查看权限是NULL就代表禁止导出 在配置文件my.cnf [mysqld]下加secure_file_priv=指定导出目录 本节所讲内容: 1.  字段修饰符 2.  清空表记录 3.  索引 4.  外键 5.     视图 一:字段修饰符 (约束) 1:null和not null修饰符 我们通过这个例子来看看 mysql> create table worker(id