mysql学习day03(事物、视图、索引、部分数据库设计)

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

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



你可能感兴趣的:(数据库)