Mysql从0到0.9-事务及三大范式

150 阅读1分钟

Mysql从0到0.9

    上一篇常用函数&聚合函数    ←||→    下一篇jdbc

菜鸟教程

事务

acid原则
  • 原子性 每一个事务都是原子操作,要么都成功,要么都失败
  • 一致性 事务提交后,数据库前后状态不变
  • 隔离性 事务之间互不影响
  • 持久性 事务提交,持久化到硬盘,不可回滚

sql操作事务

 SET autocommit = 0;--关闭自定提交
 UPDATE `account` SET `momey` =  `momey`-500  WHERE `name` = 'a';
 UPDATE `account` SET `momey` =  `momey`+500 WHERE `name` = 'b';
 COMMIT;--提交事务
 SET autocommit = 1--开启自动提交

使用命令行操作事务不太方便,如果有兴趣可开启两个命令行工具。 这边在后面的JDBC演示。

explain

使用explain 来查看sql执行计划,只需要在原有select 基础上加上explain关键字就可

 EXPLAIN  SELECT * FROM `account`

三大范式

第一范式(1nf)

·····列名原子性 不可拆分

··········家庭信息(四口人 盐城市)拆为----->家庭人口数 (四口人) 户籍(盐城)

第二范式(2nf)

·····每张表只描述一件事物

··········订单表包含产品信息(冗余字段产品名称、产地)

第三范式(3nf)

·····每一列都要和主键直接相关

结:有时冗余字段有利于sql执行效率和产品设计方案。所以说数据库设计应需求和规范相结合,权衡后得出可靠方案。