事务:是做为一个单元的一组有序的数据库操做,若是组当中全部操做都成功,则事务执行成功,若是有一个操做执行失败,则事务执行失败,回滚操做。mysql
事务的特性:sql
原子性:事务包含的全部操做所有成功,要么所有失败回滚;成功必须彻底应 用到数据库,失败则不能不能对数据库产生影响。mongodb
一致性:事务执行前和执行后必须处于一致状态。数据库
隔离性:当多用户并发访问数据库时候,数据库为每个用户开启一个事务, 这个事务不被其余事务操做干扰,多个并发事务直接互相隔离。并发
持久性:一旦事务被提交了,那么数据库当中的数据改变是永久性的,即使数 据库系统发生故障,也不会丢失事务操做。nosql
事务的回滚:sqlserver
事务是用户定义的一组数据库操做。这些操做要么全作,要么全不作,回滚会自动是将该事务完成的操做撤销。spa
//(相似于打游戏死了,从新读档?)rest
数据库提供的四种隔离等级:server
若是咱们不考虑隔离性,会致使脏读
脏读
在一个事务处理的过程中读取另外一个没有提交的事务当中的数据,而后使用了数据。
A向B转帐100元,A通知B查看帐户,B发现已经到帐,转帐操做过程中,事务发生问题,进行回滚,B再查帐发现没有成功。
不可重复读
在一个事务以内,屡次读取一条数据,这个事务没有结束,另外一个事务也访问这个数据,第二个事务访问数据要对数据进行修改,那么一个数据两次事务读到的结果可能不同。
//(事务A首先读取了一条数据,而后执行逻辑的时候,事务B将这条数据改变了,而后事务A再次读取的时候,发现数据不匹配了,就是所谓的不可重复读了。)
幻读
有两个事务,第一个操做全部的数据,第二个操做一条数据,第二个事务没有提交,第一个事务查看到的数据是以前的。
以上的问题都处于数据库没有隔离性。
隔离性的四个等级
Read uncommited(读未提交),最低级别,任何状况均可以发生。
Read commited(读已提交),能够避免脏读
Repeatable read(可重复读),能够避免脏读,不可重复读的发生
Serializable(串行化),能够避免脏读,不可重复读,幻读的发生
数据库分类
关系型数据库:是创建在在关系模型的基础上的数据库,借助集合,代数等数学概念和方法来处理数据。
Oracle,db2,sqlserver,access,Mysql,sqlite
//(然而只认识mysql)
非关系型数据库(nosql not only sql):以key-value形式存储的文档数据库
Redis、mongodb
使用mysql数据库须要链接数据库
Mysql -u -p -h
-u 用户,默认有root用户,root用户是mysql数据库的管理员用户,拥有最高的权限。因此默认不容许远程登陆root用户。
-p 密码,用户对应的密码
-h 主机,默认是localhost(127.0.0.1)表明本机,
Mysql结构
Mysql是数据库类型
在mysql当中,存放的
Database 数据库
Table 表
Field(column) 字段
Value 值
对比office的Excel来看
Mysql ---> Excel
Database ---> file
Table ---> Sheet
Field ---> 表头
Value ---> 数据
Sql语法规则
一、分号结尾
二、全部sql文档,系统变量大写//(感受大写后都不认识了...)
三、Mysql自己大小写不敏感
查询数据库命令
SHOW DATABASES;
建立数据库
CREATE DATABASE ? CHARSET=UTF8;
//(CHARSET+UTF8 这个能够不加,不过最好加上)
//?处写你给数据库起的名字,下面也同样,还有就是必定要记得有分号啊啊!!!
//全部代码一概英文输入,
使用数据库
USE ?;
//?=你的库名
查看表
SHOW TABLES;
建立表格式
CREATE TABLE ?(a b,.....) CHARSET=UTF8;
//a表示字节名,b表示这个字节的类型
//若是a是字符串类型必须给定长度
示例
CREATE TABLE student(id INT,name CHAR(32),age INT,major CHAR(32),class CHAR(32), phone CHAR(32)) CHARSET=UTF8;
//有没有发现,我给的长度都是偶数?一个汉字占两个字节,若是是奇数的话,若是存满了,最后一个汉字怎么放进去?拿刀劈一半放进去?
字段类型:
Int:
TINYINT 微整数 1个字节 能表示的数-128-127
SMALLINT 小整数 2个字节 本身算去
MEDIUMINT 中等整数 3个字节 本身算去
INT 整数 4个字节 能表示的数-2147483648-2147483647
BIGINT 大整数 8个字节 本身算。。。
Float 4个字节
//浮点数啦
Char 字符
//字符串
Varchar 字符
Char和varchar 都须要指定长度,若是字符的长度不够char的长度,以空格填充
Varchar 按照字符的长度设定长度
Char类型的字符串不能够用空格结尾
Date 3字节 1998-12-21
TIME 3字节 23:24:24
查看表结构
DESC ?;
//?=你的表名
插♂入数据:
INSERT INTO ?(a,b...) VALUE(c,d...);
//a=你的字段名 c=打算添加的内容,若是是字符串类型要加引号,数字不用加
案例
INSERT INTO student(id,name,age,major,class,phone) VALUE(1,"比利海灵顿",18,"wrestling","0506","110");
查询数据库数据
SELECT a FROM b;
//a=*
//b=你的表名
全部字段能够用*代替,在工做当中通常不容许用*
懒得写了