MySQL基础day03 存储引擎和外键MySQL 5.6
- MySQL基础day03_存储引擎和外键-MySQL 5.6 - 外键的条件: - 1,表的存储引擎为innodb存储引擎 - 2,表中外键字段的类型要与参考表的字段类型一致 - 3,外键字段要是索引类型中的一种 - MySQL数据库的存储引擎 - 存储引擎:是mysql结构中的组成部分 - mysql体系结构: - 由8部分组成:连接池、Sql接口、分析器、优化器、缓存和缓冲、存储引擎、管理工具、物理存储设备 - 1.客户端:mysql - 2.连接器: NativeC API 本地C语言接口、JDBCJAVA的数据库连接器、ODBC开放式数据库互联,非常底层 Oracle,SOLServer都支持 - 3.连接池(conetcionpool):它的后方是MYSQL的真正功能 - 4.SQL接口:用户通过sql客户端发过来的命令,由sql接口接收(DML数据操作语言:查询,修改,升级数据等DDL数据定义语言:创建一个新的数据库,新的索引,删除一个用户等存储过程视图触发器) - 5.Parser:分析器(查询 事务 对象权限) - 6.optimizer:(访问路径 、 生成执行树) - 7.caches&buffers:缓存和缓存 (优化里最重要的是缓存的优化) - 8.pluggablestroage engines存储引擎(插件式):将逻辑结构转换为物理结构的程序 - 9.ManagementServices & Utilites工具:备份,恢复,安全,移植,集群等,这些工具一般和文件系统打交道,不需要和mysql-server打交道,它们对应的都是命令。 - 查看当前mysql服务器所支持的存储引擎:show engines; - 01.- mysql> show engines;- 02.- +- --------------------+---------+----------------------------------------------------------------+--------------+------+------------+- 03.- | Engine | Support | Comment | Transactions | XA | Savepoints |- 04.- +- --------------------+---------+----------------------------------------------------------------+--------------+------+------------+- 05.- | PERFORMANCE_SCHEMA | YES | Performance- Schema- |- NO- |- NO- |- NO- |- 06.- | CSV | YES | CSV storage engine |- NO- |- NO- |- NO- |- 07.- | MRG_MYISAM | YES | Collection- of- identical MyISAM tables |- NO- |- NO- |- NO- |- 08.- | BLACKHOLE | YES | /dev/- null- storage engine (anything you write- to- it disappears) |- NO- |- NO- |- NO- |- 09.- | MyISAM | YES | MyISAM storage engine |- NO- |- NO- |- NO- |- 10.- | MEMORY | YES | Hash based, stored- in- memory, useful- for- temporary- tables |- NO- |- NO- |- NO- |- 11.- | ARCHIVE | YES | Archive storage engine |- NO- |- NO- |- NO- |- 12.- | InnoDB |- DEFAULT- | Supports transactions, row-- level- locking,- and- foreign- keys | YES | YES | YES |- 13.- | FEDERATED |- NO- | Federated MySQL storage engine |- NULL- |- NULL- |- NULL- |- 14.- +- --------------------+---------+----------------------------------------------------------------+--------------+------+------------+- 15.- 9- rows- in- set- (0.00 sec)- 16.- mysql>- 指定存储引擎: - 1,建表时指定存储引擎 - create table 表名(字段列表)engine=存储引擎名; - 注:在指定之前需要用showengine;查看所支持的引擎,Support列为是否支持! - 2,建表之后修改使用的存储引擎,建表时没有指定则为默认的: - alter table 表名 engine=存储引擎名; - 查看一个表的存储引擎:(即查看表的创建过程) - show create table 表名; - 存放表结构的文件为/var/lib/mysql/库名/表名.frm - 存放表数据的文件为/var/lib/mysql/库名/表名.ibd - 事务:对表中数据的一次操作,从开始到结束的过程称作事务; - 事务回滚:如果操作没有成功,则恢复到之前的状态; - InnoDB支持事务回滚; - 锁机制:(解决多个用户对数据库记录并发访问问题) - 所得类型:读锁、写锁 - 读锁(共享锁):不会引起数据内容的改变; - 写锁(互斥锁/排它锁),锁定的程度为锁粒度; - 注:写锁的优先级高于读锁; - 锁粒度:表锁、行锁、页锁 - 表锁:myisam存储引擎支持表锁 - 行锁:innodb存储引擎支持行锁 - 页级锁定:查询的数据存放存的存储单位为页(单位默认为M) - row-level-locking 行级锁定(行锁); - 写锁的优先级高于读锁; - myisam存储引擎: - 特点: - 支持表锁,不支持行锁; - 不支持事务; - 独享表空间;(每一个表都有相应的三个相关文件存储) - 多用在查询、插入操作较多的表。 - 相关文件:表名.frm(表结构文件)、表名.MYI(存放索引)、表名.MYD(存放表记录) - InoDB存储引擎: - 特点: - 支持表锁、行锁; - 支持事务、支持外键; - 共享表空间;() - 相关文件: - 表名.frm(表结构文件)、表名.ibd(索引和表记录文件) - ibdata1(支持回滚) - ib_logfile0、ib_logfile1 - 设置mysql服务器默认支持的存储引擎: - 在配置文件/etc/my.cnf - 在mysqld字段添加: - default-storage-engine=存储引擎 - default-storage-engine=myisam(默认的为innodb) - 查看当前的锁状态: - 即检查Table_lock开头的变量,%作为通配符; - show status like'table_lock%'; - 01.- mysql> show status- like- 'table_lock%'- ;- 02.- +- -----------------------+-------+- 03.- | Variable_name | Value |- 04.- +- -----------------------+-------+- 05.- | Table_locks_immediate | 70 |- 06.- | Table_locks_waited | 0 |- 07.- +- -----------------------+-------+- 08.- 2- rows- in- set- (0.00 sec)- 09.- mysql>- 外键的条件: - 1,表的存储引擎为innodb存储引擎 - 2,表中外键字段的类型要与参考表的字段类型一致 - 3,外键字段要是索引类型中的一种 - 创建外键字段的语法格式 - foreign key(字段名) references 参考表的表名(字段名) - 同步更新、同步删除 - 在建表的时候指定同步更新、删除: - ON UPDATE CASCADE 同步更新 - ON DELETE CASCADE 同步删除 - 示例过程: - create database engine; //创建一个名为engine的数据库 - create table engine.yg( //在engine库中创建yg表 - yg_id int(3) primary key auto_increment, - name varchar(10) not null - )engine=innodb; //指定存储引擎为innodb - create table engine.gz( //在engine库中创建yg表 - gz_id int(3), - gz float(7,2) not null default 0.00, - foreign key(gz_id) references engine.yg(yg_id) //指定外键字段为gz_id和yg的ge_id对应 - on update cascade on delete cascade //指定同步更新,同步删除 - )engine=innodb; - use engine; //切换到engine数据库 - 1:要求: - 在yg表中插入名字为jim、tom两个名字的条目; - 再插入一个名字为tom的条目。 - desc yg; - insert into yg(name)values('jim'); - insert into yg(name)values('tom'); - insert into yg(name)values('tom'); - 2:要求: - 在gz表中添加第2和第3个人的工资为10000,和12000; - desc gz; - insert into gz values(2,10000); - insert into gz values(3,12000); - 3:要求: - 在yg表中添加一个员工,名字为lucy; - 在gz表中插入lucy的工资为4000; - 删除yg表中lucy的员工信息;注:删除之后gz表中将没有gz_id=4的工资信息 - 使用select * from gz;查看gz中是否还有gz_id为4的条目。 - insert into yg(name)values('lucy'); - insert into gz vlaues(4,4000); - delete from yg where yg_id=4; - select * from gz; - 4:要求 - 更新yg表中的yg_id为2的员工信息; - update yg set yd_id=8 where yg_id=2; - 5,要求: - 删除gz表中的外键; - 注:在删除外键的时候,首先使用show create table from gz;来查看一下外键的名字(注:在创建外键的时候使用的字段名为gz_id,gz_id并不是外键名)。 - show create table from gz; //首先查看建表过程查找froeign key字段 - alter table gz drop foreign key gz_ibfk_1; //删除外键 - show create table from gz; //再次查看外键已经被删除 - 总结:想要创建一个外键,必须先了解一下MySQL的存储引擎,只有innodb存储引擎才支持创建外键,在MySQL5.6里面,默认的存储引擎为innodb!!! 
MySQL基础day03 存储引擎和外键MySQL 5.6的更多相关文章
- mysql基础之存储引擎
		原文:mysql基础之存储引擎 数据库对同样的数据,有着不同的存储方式和管理方式,在mysql中,称为存储引擎 常用的表的引擎 Myisam ,批量插入速度快, 不支持事务,锁表 Innodb, 批量 ... 
- MySQL基础之  存储引擎
		MyISAM存储引擎 缺点:不支持事务,不支持外键.只支持表级锁. 优点:访问速度快,多用于select.insert语句的高负载操作.仅仅支持全文索引. MyISAM缓存在内存的是索引,不是数据.而 ... 
- 转!!MySQL中的存储引擎讲解(InnoDB,MyISAM,Memory等各存储引擎对比)
		MySQL中的存储引擎: 1.存储引擎的概念 2.查看MySQL所支持的存储引擎 3.MySQL中几种常用存储引擎的特点 4.存储引擎之间的相互转化 一.存储引擎: 1.存储引擎其实就是如何实现存储数 ... 
- mysql中的存储引擎
		MySQL中常用的几种存储引擎:innoDB.bdb.myisam.memory以及这几个引擎的讲解: InnoDB存储引擎: (1) innodb存储引擎该mysql表提供了事务,回滚以及系统崩溃修 ... 
- 如何查看MySQL的当前存储引擎?
		如何查看MySQL的当前存储引擎? 一般情况下,mysql会默认提供多种存储引擎,你可以通过下面的查看: 看你的mysql现在已提供什么存储引擎: mysql> show engines; ... 
- MySql的多存储引擎架构, 默认的引擎InnoDB与 MYISAM的区别(滴滴)
		1.存储引擎是什么? MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术, ... 
- MySQL事务以及存储引擎
		MySQL事务以及存储引擎 目录 MySQL事务以及存储引擎 一.事务 1. 事务的概念 2. 事务的ACID特点 (1)原子性 (2)一致性 (3)隔离性 ①事务之间的相互影响 ②MySQL事务支持 ... 
- mysql缓存、存储引擎
		一. mysql查询缓存 查询缓存不是mysql的子系统,却是查询优化和执行子系统不可缺少的组成部分.它不仅可以缓存查询结果,还可以缓存查询结果本身.如果某个查询的结果就在缓存里, 系 ... 
- MySQL数据库InnoDB存储引擎多版本控制(MVCC)实现原理分析
		文/何登成 导读: 来自网易研究院的MySQL内核技术研究人何登成,把MySQL数据库InnoDB存储引擎的多版本控制(简称:MVCC)实现原理,做了深入的研究与详细的文字图表分析,方便大家理解I ... 
随机推荐
- linux fedora原生的快捷键操作
			显示桌面: ctrl+alt+d 运行终端程序: gnome-terminal : 可以自定义快捷键: ctrl+T 等等. 
- Linux_LVM、RAID_RHEL7
			目录 目录 LVM逻辑卷管理 把物理分区初始化为物理卷 创建卷组 建立逻辑卷 格式化 挂载 vg拓展操作 lv扩展操作 RAID RAID 类型 RAID0条带化 RAID1镜像 RAID5条带冗余 ... 
- lgb模板
			一 回归 1 提取训练集和测试集 2 制作标签,并检查标签是否有异常值 2 划分数据 https://www.jb51.net/article/152574.htm 3 建立model,写评价函数 h ... 
- Jmeter之循环控制器
			在使用Jmeter测试时,部分接口需要循环执行多次,这时候就可以使用循环控制器去控制执行. 循环控制器如下图: 说明 : (1.名称:标识,建议明确此循环控制器的使用的作用是什么(如:登录循环控制) ... 
- Jedis源码浅析
			1.概述 Jedis是redis官网推荐的redis java client,代码维护在github https://github.com/xetorthio/jedis. 本质上Jedis帮我们封装 ... 
- if you wanna the rainbow, you have to deal with the rain.
			bulk. n. 大量 reluctant. adj. 不情愿的 terrorist. n. 恐怖分子 recognition. n. 认出 tout.v. 兜售 conceal.v. 隐藏 dras ... 
- Arm-linux-gcc-4.3.2安装步骤 (转)
			http://blog.chinaunix.net/uid-26119896-id-3302233.html 安装交叉编译工具链: 1.首先以root用户登入 2.复制arm-linux-gcc-4. ... 
- Canvas入门04-绘制矩形
			使用的API: ctx.strokeRect(x, y, width, height) 给一个矩形描边 ctx.fillRect(x, y, width, height) 填充一个矩形 ctx.cle ... 
- 红帽学习笔记[RHCSA] 第九课[文件归档、硬盘、分区以及自动挂载、Swap、链接]
			文件归档 tar是什么 通过tar命令可以将大型文件汇集成一个文件(归档),注意没有压缩功能. 压缩方式 gzip 通过gzip过滤文档,使用最广泛 bzip2 通常比gzip压缩小,但是不如gzip ... 
- hive数据去重
			Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能 hive的元数据存储:通常是存储在关系数据库如 mysql(推荐) , derby(内嵌 ... 
