1、数据库:管理数据的仓库,方便存取数据和对数据进行增删改查。c/s模式。
2、事物:一个执行单元的一组有序的数据操作。事物要么都成功,要么都失败。
3、事物的特性: begin rollback commit
-
原子性:事物要么都成功要么都失败,如果有一方操作失败,事物回滚。
-
一致性:事物开始前后的状态保持一致。A和B开始的钱是100元,无论怎么操作,结束之后还是100元。
-
隔离性:多个用户并发访问数据库时,数据库为每一个用户开启事物,事物和事物之间相互隔离互不影响。
-
持久性:事物一旦被提交了,那么这个数据会持久性的运用在整个数据库中,就算是数据库系统故障也不会丢失数据。
4、事物回滚:回到最初状态,没有操作的状态。
5、不考虑隔离性会出现的问题: -
脏读:A读取了未提交的事物B的操作,B回滚操作,那么A读的数据是脏读。
-
不可重复读:A修改了这条,之后B也修改了这条数据,A再读这条数据的时候发现和修改的不一样。
-
幻读:事物A修改了全部的数据,而事物B修改了其中一条数据,A发现有一条数据没有修改,A事物产生了幻读。
6、四种隔离级别:
- read uncommitted 读未提交,会发生所有的问题
- read committed 读已提交 , 避免了脏读
- repeatable read 可重复度 ,避免了脏读和不可重复读,mysql默认的级别
- serializable 串行化 避免所有的问题,但是不能同时开启事物,效率低
7、数据库的分类
关系型数据库:建立在关系模型上的数据库。msql
非关系形数据库:以键:值的形式存取数据。redis
8、mysql数据库搜索引擎:存储数据,处理数据,保护数据的核心服务。
1. ISAM : 读取速度快,不用大量内存和存储资源,但是不支持事物,也不能够容错:如果硬盘崩溃,数据会全部丢失,需要经常备份。
2. MYISAM:读取速度非常快,基于ISAM,不支持事物。
3. heap:语序数据储存在内存当中,所以读取速度比MYISAM和ISAM的速度都快,但是关机之前没有保存数据,数据就会丢失。
4. INNODB读取速度很慢,但是支持事物。
9、登录mysql
1、数据库基本命令:
在开启了远程连接的情况下:
mysql -hip -Pport -uusername -ppassword
未开启远程连接:
mysql -uusername -ppassword
第一次注册时候:mysql -uusername -p 之后会让你输入密码
退出数据库:\q
2、创建数据库
create database 库名 default charset=utf8; 记住是等号没有-
3、查看所有数据库
show databases;
4、使用指定数据库
use 数据库名
5、创建数据库表
create table 表名(
字段1 约束,
字段2 约束,
字段3 约束
)
最后一个都没有逗号。
6、查看所有表 : show tables;
7、字段约束类型:
数字:
int : 整数
decimal : 小数:deciaml(m,n) m是整数个数+小数个数,n是小数个数
时间:
date 年月日
datetime 年月日时分秒
字符串类型:
char(x) X是多少就算多少个,不会根据实际长度储存
varchar() 会自动识别内容长度
longtext 2-3万字的文章
其他:
主键:primary key auto_increment
非空:not null
允许为空:null
默认值 : default 值
唯一约束:unique

10、插入字段值:
insert into tablename(字段1,字段2) value(值1,值2);
查询数据:
select * from tablename;
select 字段1,字段2 from tablename;
select * from tablename where 条件;
修改数据:
update tablename set 字段=值 where 条件;
如果没有where的话是修改所有。
删除数据:
delete from tablename where 条件;
如果没有where 表示删除所有。delete只删除表内的数据,表还在。
删除字段:
ALTER TABLE 表名 DROP 字段名
删除表:
drop table tablename;
删除数据库:
drop database 库名;
添加字段:
alter table tablename add 字段名 约束 after x后/first第一个位置;默认加载最后
修改字段名或者约束:
alter table tablename change 旧字段名 新字段名 约束;
修改表名:
alter table 旧表名 rename as 新表明
修改自增量的初始值:
alter table tablename auto_increment=值;
注意:
删除表的时候,先删外键表,再删主键表。
删除数据的时候,如果没有设置级联删除,先删外键表数据,再删除主键表数据;
如果设置级联,可以直接删除主键数据,关联的外键数据自动删除。
多对多表中的外键表也可以实现业务逻辑,比如学生对应的科目是多对多,再科目的id后可以加上分数,这个学生对应的科目的分数。