文章目录
一、MySQL基本介绍
数据库
- 数据库就是存放数据的仓库,能存放大量数据、可以进行多方交互、进行长时间存储。
- 使用场景:只要有数据产生,并且需要多方交互,长时间存储。
数据库管理系统
数据库:存放数据的仓库
数据库管理系统:MySQL sqlserver Oracle
数据库系统: 数据库管理系统(mysql) + 数据库
关系型数据库 与 非关系型数据库
- 关系型:
(1) 按照数据的信息,根据实际的场景,以及一些常识来进行分表。通过二维表来维护数据之间的关系,把不同的数据存储在不同的表里。
(2) 表与表之间,通过属性(字段)存在着某种关系
例:mysql - 非关系型:不存在以上的关系
(类似于hashMap,单组数据之间存在某种关系,数据与数据之间没有任何关系)
例:redis - 常用术语:
行 -> 元组
列 -> 属性
阈值 -> 属性的取值范围
关系 -> 用二维表维护的诗句
二、数据库操作
SQL 语句主要可以划分为以下 3 个类别:
- DDL:定义语言,用来定义不同的数据段、数据库、表、列、索引。(常用关键字:create、drop、alter)。
- DML:操纵语句,用于添加、删除、更新和查询数据库记录,检查数据完整性,(常用关键字:insert、delete、update 和 select)。
- DCL:控制语句,用于控制不同数据段直接的许可和访问级别。定义数据库、表、字段、用户的访问权限和安全级别。(关键字:grant、revoke 等)。
sql语句主要有:增、删、改、查 (事务、索引)
使用数据库的流程:
- 客户端登录mysql 服务
登录:mysql -u 用户名 -p密码
例:mysql -u root -p123456,
退出:exit quit - 根据需求,通过 mysql 创建数据库
展示所有数据库:show databases; - 通过 use 选择数据库,
例:use school;
展示库里所有表:show tables;
打开表(例):select * from student1; - 创建表、增删改查
数据库命名:大小写不敏感、下划线隔开两个单词、风格统一。
(1) 创建数据库:create database 名称;
例:create database test_one;
(2) 删除数据库:drop database 数据库名;
例:drop database test_one; - 项目运行一段时间后,根据实际情况修改表
使用索引(提高查询效率) 使用事务 - 性能降低 -> 数据库优化(索引)
- 线程并发时 -> 事务
建表:常识建表 + 范式
- 注意:建表之前,用 use + 数据库名 告诉mysql要用哪个数据库
- 建表语法(英文):
create table table_name(
属性名 属性类型 [完整性约束],
属性名 属性类型 [完整性约束],
…
属性名 属性类型 [完整性约束]
);
三、数据库范式
带来的好处
- 减少数据冗余(最主要的好处,其他好处都是它附带的)
- 清除异常(插入异常、更新异常、删除异常)
- 让数据组织的更加和谐
注意:数据库范式不是越高越好,范式越高,意味着表越多,多表联合查询的几率就越大,SQL查询的效率就变低。(一般开发中只遵从第三范式就好,具体视情况而定)
各范式之间的包含关系
第一范式(1NF)
- 每一列保持原子特性。列都是基本数据项,不能够再进行分割,否则设计成一对多的实体关系。
- 不遵循第一范式的缺点:
a. 数据冗余,删除修改表时作用的行更多;
b. 查询效率会下降很多。
c. 插入异常
第二范式(2NF)
- 符合第一范式的基础上,非主属性完全依赖于主键(消除对主键的部分依赖)。如果不是完全依赖主键,应该拆分成新的实体,设计成一对多的实体关系。
- 存在部分依赖的缺点:
a. 数据冗余
b. 更新异常
c. 插入异常
d. 删除异常
第三范式(3NF)
- 基于第二范式的基础,属性不依赖于其它非主属性(消除与主键之间的依赖传递,也就是说直接依赖于主键,只依赖于主键)。
BC范式(BCNF)
- 基于第三范式基础上,每个表中只有一个候选键 (不重复的属性称为候选键)
- 有多个候选键引发的问题:
例:一个仓库,只对应一个仓库管理员
存在数据冗余、删除异常、插入异常、更新异常。
第四范式
基于BC范式的基础上,消除表中的多值依赖。
四、MySQL基本语法
详细内容在
MySQL基本语法使用(一)
MySQL基本语法使用(二)
中介绍。
五、JDBC、连接池
详细内容在 JDBC 连接池 中介绍。