Mysql基础知识总结

数据库分类

关系型数据库(SQL)

​ Mysql,Oracle, Sql Server,DB2,SQLlite
​ 通过表和表之间,行和列之间的关系进行数据的存储

非关系型数据库(NoSQL)Not only sql

​ Redis,MongDB
​ 非关系数据库,对象存储,通过对象的自身属性来决定

外键

​ 物理外键,数据库级别的外键,不建议使用!避免数据库过多造成困扰
​ 最佳实现
​ 数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)
​ 要使用多张表的数据,使用外键用程序去实现

DELETE和TRUNCATE区别

  • 相同:都能删除数据,都不会删除表结构

  • 不同:

    • TRUNCATE重新设置自增列,计数器会归零

    • TRUNCATE不会影响事务

  • DELETE删除的问题:重启数据库,不同类型的数据库是不同的现象
    InnoDB 自增列会从1开始(存放在内存当中的,断电即失)
    MyISAM 继续从上一个自增量开始(存在文件中的,不会丢失)

事务

ACID原则
1、 原子性(Atomicity)
要么都成功,要么都失败
2、一致性(Consistency)
事务前后的数据完整性要保证一致
3、持久性(Durability)事务提交
事务一旦提交则不可逆,被持久化到数据库中
4、隔离性(Isolation)
事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之 间要相互隔离

隔离所导致的一些问题

脏读:
​ 指一个事务读取了另外一个事务未提交的数据。
不可重复读:
​ 在一个事务内读取表中的某一行数据,多次读取结果不同。(这个不一定是错误,只是某些场合不对)
虚读(幻读)
​ 是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。

索引的分类:

​ 在一个表中,主键索引只能有一个,唯一索引可以有多个
​ 主键索引只能有一个,唯一索引可以有多个
主键索引:(PRIMARY KEY)
​ 唯一的索引,主键不可重复,只能有一个列作为主键
唯一索引:(UNIQUE KEY)
​ 避免重复的列出现,唯一索引可以重复,多个列都可以标识为 唯一索引
常规索引:(KEY/INDEX)
​ 默认的,index.key关键字来设置
全文索引:(FulText)
​ 在特定的数据库引擎下才有,MyISAM
​ 快速定位数据

索引原则:
索引不是越多越好
不要对经常变动数据加索引
小数据量的表不需要加索引
索引一般加在常用来查询的字段上

设计数据库

​ 当数据库比较复杂的时候,我们就需要设计了
糟糕的数据库设计:

  • 数据冗余,浪费空间

  • 数据库插入和删除都会麻烦、异常(屏蔽使用物理外键)

  • 程序的性能差

良好的数据库设计:

  • 节省内存空间
  • 保证数据库的完整性
  • 方便我们系统开发
  • 软件开发中,关于数据库的设计:分析需求,分析业务和需要处理的数据库的需求

三大范式:

第一范式:(1NF)
原子性:保证每一列不可再分
第二范式:(2NF)
前提:满足第一范式
每张表只描述一件事情
第三范式:(3NF)
前提:满足第一范式和第二范式
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
规范性和性能的问题:
关联查询的表不得超过三张表
考虑商业化的需求和目标(成本,用户体验!) 数据库的性能更加重要
在规范性能的问题的时候,需要适当的考虑一下规范性!
故意给某些表增加一些冗余的字段。(从多表查询中变为单表查询)
故意增加一些计算列(从大数据量降低为小数据量的查询:索引)

JDBC 加载驱动

//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName(com.mysql.jdbc.Driver);//固定写法,加载驱动,里面是静态代码块,使用上面的方法就加载两次,不需要加载两次

事务:
要么都成功,要么都失败
ACID原则
原子性: 要么全部完成,要么都不完成
一致性: 总数不变
隔离性: 多个进程互不干扰
持久性: 一旦提交不可逆,持久化到数据库了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值