mysql学习day03(事物、视图、索引、部分数据库设计)
2017-03-22 19:58
489 查看
1.事物
事务就是把一批SQL语句作为一个整体,如何所有的SQL语句执行后没有错误,就一起执行,只要其中一条SQL语句有错误,则所有的SQL语句都不执行。
MySQL默认的机制是:每一条SQL语句是一个独立的事务。
事务有四个特点:原子性、一致性、隔离性、持久性 也称: ACID
原子性:每一个事务是一不可分割的独立单元。
一致性:事务执行前后的数据要保持一致。
隔离性:事务单元是独立的,事务之间互不干涉。
持久性:也叫永久性,事务提交后,对数据表中的数据的影响是永久的。
2.事物类型
1. 自动提交型,这是默认的类型,关闭自动提交 setautocommit=0; 打开自动提交 set autocommit=1;
2. 隐式事务。
3. 显示的事务。我们要做的都是显示的事务,显示的事务需要显示的开始事务,并显示的提交或回滚。
案例:
set autocommit=0; /*关闭自动提交*/
start TRANSACTION; /*事务开始*/
update student set name= '孙鹏' where studentno = 10002;
commit; /*表示事务提交,上面的操作才会永久影响的数据表*/
setautocommit=1; /*打开自动提交,才不会影响后面SQL语句的执行。*/
3.视图
1.
视图的作用是屏蔽一些数据,让不同用户看到不同的数据,
2.
可以基于视图进行数据的增、删、改、查操作,但是,建议视图只用于查询。如果要进行增、删、改,则要求视图中的数据只能来自于一张表,并且所做的操作对数据表中的数据的影响是永久性的。
3.
视图自身是没有数据的,它的数据来自于物理表。
4.
视图中只能是 select 查询语句。
4.索引
索引在创建在表中的某一列上。
索引的作用:提升查询数据的速度。但是这不是绝对的,当数据量比较少的情况下,索引反而会影响到速度,有时索引还会降低增、删、改的性能。
索引的分类:主键索引、唯一索引、普通索引、全文索引。
主键索引:当我们的表创建了主键后,系统会自动给我们创建主键索引,特点:属于唯一索引的一种特例,能保证里面的值唯一,不允许有空值。索引会排序,索引的顺序与数据的顺序是一致的。
唯一索引:保证这一列中所保存的数据是唯一的,而且允许有空值。
普通索引:我们其他创建的索引,基本上属于普通索引。与主键索引不一样。索引的顺序与数据的顺序不是一致的。
创建索引的原则:1.
索引的创建通常在一些作为查询条件的列上或作为排序的列上。
2.
列中的数据不能有大量重复。
3.
数据量少的表,不建议用索引,反而会影响检索性能。因为,索引要占资源,存在数据表中的索引页中,数据是存在数据表中的数据页中。数据页中存储的数据量是8K。
4.
列中的值经常发生改变,也不适合建索引。
创建了索引后,数据库系统中有一套优化机制,在查询数据时,会自动采用最优的原则基于索引去执行查询。
5.数据库设计:
三大范式:
第一范式:原子性,表中的每一列都是不可分割的单元。
第二范式:在满足第一范式的前提下,每一列必须完全依赖于主键。
第三范式:在满足第二范式的前提下,每一列不能依赖于其他非主键,也就是说不能存在传递依赖。
并不需要完全满足三范式,如果完全满足三范式,性能并不是最佳的,在开发中只要求必须满足二范式以上,通常我们叫2.5范式。有时,我们会故意在表中加点冗余。
地址:adderss
用户表:users
商品表:goods
订单表:order
订单详细表: orderList
事务就是把一批SQL语句作为一个整体,如何所有的SQL语句执行后没有错误,就一起执行,只要其中一条SQL语句有错误,则所有的SQL语句都不执行。
MySQL默认的机制是:每一条SQL语句是一个独立的事务。
事务有四个特点:原子性、一致性、隔离性、持久性 也称: ACID
原子性:每一个事务是一不可分割的独立单元。
一致性:事务执行前后的数据要保持一致。
隔离性:事务单元是独立的,事务之间互不干涉。
持久性:也叫永久性,事务提交后,对数据表中的数据的影响是永久的。
2.事物类型
1. 自动提交型,这是默认的类型,关闭自动提交 setautocommit=0; 打开自动提交 set autocommit=1;
2. 隐式事务。
3. 显示的事务。我们要做的都是显示的事务,显示的事务需要显示的开始事务,并显示的提交或回滚。
案例:
set autocommit=0; /*关闭自动提交*/
start TRANSACTION; /*事务开始*/
update student set name= '孙鹏' where studentno = 10002;
commit; /*表示事务提交,上面的操作才会永久影响的数据表*/
setautocommit=1; /*打开自动提交,才不会影响后面SQL语句的执行。*/
3.视图
1.
视图的作用是屏蔽一些数据,让不同用户看到不同的数据,
2.
可以基于视图进行数据的增、删、改、查操作,但是,建议视图只用于查询。如果要进行增、删、改,则要求视图中的数据只能来自于一张表,并且所做的操作对数据表中的数据的影响是永久性的。
3.
视图自身是没有数据的,它的数据来自于物理表。
4.
视图中只能是 select 查询语句。
4.索引
索引在创建在表中的某一列上。
索引的作用:提升查询数据的速度。但是这不是绝对的,当数据量比较少的情况下,索引反而会影响到速度,有时索引还会降低增、删、改的性能。
索引的分类:主键索引、唯一索引、普通索引、全文索引。
主键索引:当我们的表创建了主键后,系统会自动给我们创建主键索引,特点:属于唯一索引的一种特例,能保证里面的值唯一,不允许有空值。索引会排序,索引的顺序与数据的顺序是一致的。
唯一索引:保证这一列中所保存的数据是唯一的,而且允许有空值。
普通索引:我们其他创建的索引,基本上属于普通索引。与主键索引不一样。索引的顺序与数据的顺序不是一致的。
创建索引的原则:1.
索引的创建通常在一些作为查询条件的列上或作为排序的列上。
2.
列中的数据不能有大量重复。
3.
数据量少的表,不建议用索引,反而会影响检索性能。因为,索引要占资源,存在数据表中的索引页中,数据是存在数据表中的数据页中。数据页中存储的数据量是8K。
4.
列中的值经常发生改变,也不适合建索引。
创建了索引后,数据库系统中有一套优化机制,在查询数据时,会自动采用最优的原则基于索引去执行查询。
5.数据库设计:
三大范式:
第一范式:原子性,表中的每一列都是不可分割的单元。
第二范式:在满足第一范式的前提下,每一列必须完全依赖于主键。
第三范式:在满足第二范式的前提下,每一列不能依赖于其他非主键,也就是说不能存在传递依赖。
并不需要完全满足三范式,如果完全满足三范式,性能并不是最佳的,在开发中只要求必须满足二范式以上,通常我们叫2.5范式。有时,我们会故意在表中加点冗余。
地址:adderss
id | uid | address |
1 | U10001 | 广州科丰路 |
2 | U10001 | 广州天河区 |
3 | U10001 | 湖南长沙雨花区 |
4 | U10002 | 湖南长沙芙蓉区 |
5 | U10003 | 湖北武汉 |
用户表:users
ID | 用户名 | 密码 | 注册时间 | 性别 | 电话 | 等级 |
U10001 | dange | 123456 | 2000-11-11 | 男 | 13309894565 | 3 |
U10002 | wangge | 123456 | 2001-11-11 | 男 | 13094839493 | 2 |
U10003 | lige | 123456 | 2001-11-11 | 男 | 13345697089 | 4 |
商品表:goods
ID | 名称 | 规格 | 价格 | 类型 | 状态 |
G10001 | JavaEE从入门到精通 | 16K | 30 | 图书 | 1 |
G10002 | JavaEE从入门到放弃 | 16K | 40 | 图书 | 0 |
G10003 | 以纯T恤 | M | 99 | 衣服 | 1 |
G10004 | 以纯牛仔裤 | XXXL | 129 | 衣服 | 1 |
G10005 | 361 | 42 | 259 | 鞋帽 | 1 |
订单表:order
订单编号 | 用户编号 | 下单时间 | 状态 | 总金额 |
O1001 | U10001 | 2016-3-22 | 已发货 | 487 |
O1002 | U10003 | 2016-3-22 | 未发货 | 130 |
订单详细表: orderList
ID | 订单编号 | 商品编号 | 数量 |
1 | O1001 | G10003 | 1 |
2 | O1001 | G10004 | 1 |
3 | O1001 | G10005 | 1 |
4 | O1002 | G10001 | 3 |
5 | O1002 | G10002 | 1 |
相关文章推荐
- Java学习笔记之数据库(触发器、事物、索引、投影和除、视图、存储过程和函数 )含各种链)___ 一直补充
- 如何设计高效合理的MySQL查询语句(建立数据库索引的基本原则)
- 数据库学习9-同义词,视图,索引
- Mysql学习总结(16)——Mysql之数据库设计规范
- mysql索引,视图,游标,触发器,事物,存储过程
- 数据库 day60,61 Oracle入门,单行函数,多表查询,子查询,事物处理,约束,rownum分页,视图,序列,索引
- MySQL服务器学习笔记!(三) ——视图/事物/锁,以及数据引擎
- mysql 学习记录---->索引、视图
- [网络问题,截图以后再传]本实验是设计性实验。目的在于使用关系数据库标准语言SQL,掌握视图和索引的操作。
- 关于mysql的视图部分的学习与总结
- Mysql 数据库 (5)约束视图与索引
- liunx中(mysql 索引住主外键关系对数据库的操作深入学习)
- mysql 学习记录(九)--索引、视图
- 学习mysql(2)-如何设计数据库(一)
- Mysql学习总结(16)——Mysql之数据库设计规范
- MySQL服务器学习笔记!(三) ——视图/事物/锁,以及数据引擎
- MySQL学习笔记——索引和视图
- 【web学习之MySql】数据库的设计
- Mysql学习总结(16)——Mysql之数据库设计规范
- Mysql学习总结(16)——Mysql之数据库设计规范