数据库(database)
定义: 存储数据的仓库,按照一定的数据结构来组织、管理存储数据,并具有增删改查的功能。
作用:便于数据的管理
分类: 关系型数据库 和 非关系型数据库
关系型数据库: 是建立在关系模型基础上的数据库,借助于数学概念和方法处理数据库中的数据,有 MySQL、oracle、Microsoft Access等
关系型数据库的三范式:
第一范式(1NF):要求数据库表的字段具有原子性,不可分割
第二范式(2NF):基于第一范式,每个表至少有一个主键字段
第三范式(3NF):基于第二范式,主要用于多张表关系的表述,当前表中不允许出现另一张表的非主键字段,避免字段冗余
非关系型数据库:不仅仅是sql,具备Key-Value 存储和文档数据库优点,有 MongoDB、redis、HBase等
事务
定义:将一段具有增删改的操作看作一个独立的单元,如果所有的操作都成功,事务成功,如果有一个操作失败,则事务执行失败,事务回滚,该事务所有操作的影响将取消。
特性:
1.原子性:将事务看成一个最小的执行单元,不可分割,要么都成功,要么都失败
2.一致性:事务执行前和执行后状态必须保持一致
3.隔离性:多个用户并发访问数据库时,数据库为每一个用户开启一个事务,事务之间互不影响,相互隔离
4.持久性:事务一旦执行成功,那么对数据库中的数据改变是永久性的,即便数据库系统遇到故障也不会丢失
在不考虑数据库隔离性的情况下,出现的问题:
1.脏读:一个事务读取了另一条未提交的事务中的数据,并使用了这条数据
2.不可重复读:一个事务多次读取同一个数据,这个事务没结束前,另一个事务也访问了这个数据并修改了该数据,导致第一个事务两次读取的数据不一样
3.幻读:a事务读取一张表中的所有数据,并做了操作(统计等),b事务修改了这张表中的一条数据,导致a事务的结果和实际情况发生偏差,类似出现幻觉一样
注意: 幻读 和 不可重复读都读取了另一条已经提交的事务,但是不可重复读查询的都是同一数据,而幻读针对的是一批数据整体
事务的基本操作
1.begin 手动开启事务
2.commit 手动提交事务
3.rollback 事务回滚
MySQL数据库表引擎:
innodb:mysql5.5 以上版本默认引擎innodb
支持事务 相对数据更安全 支持外键 行锁 查询速度相对慢
myisam:MySQL老版本默认是myisam引擎
不支持事务 相对数据不安全 不支持外键 表锁 查询速度相对快
MySQL数据库的操作
数据库的连接
mysql -u root -p -h localhost -P3306
-u : 用户名 root是默认的管理员用户
-p:密码 root用户的密码
-h : 服务端的IP地址 本地连接可以省略
-P(大写) : MySQL服务的端口号 默认端口号 3306
本地连接可以省略 -h -P
mysql -u root -p
mysql 是一个关系型数据库管理软件
MySQL>库 > 表>数据
多条数据组成一张表,多个表存在库中 ,MySQL来管理数据
mysql语法:
每一句sql语句后都要加;
mysql 语句不区分关键字大小写,但是文档中一般都用大写
创建数据库:
格式:create database 库名 charset=utf8;
查看所有的库:
格式:show databases;
删除数据库:
格式:drop database 库名;
打开并进入库中:
格式: use 库名;
表的操作:
创建表:
格式:create table 表名(字段1 类型约束,字段2 类型约束...)charset=utf8;
查看表结构:
格式:desc 表名;
查看建表结构:show create table 表名;
给表添加字段:
格式:alter table 表名 add 字段名 类型约束;
注意: