目录
前言
(作业要求1、事物隔离级别2、mysql与java 数据类型的对应表)
一、什么是数据库
(一)概念
(二)分类
(三)MySQL
二、查询
一、基本查询
二、条件查询
三、时间查询
四、字符串查询
五、聚合函数
六、分组查询
七、子查询
八、合并查询
九、连接查询
三、增删改
1、增: 添加数据:
2. 删除数据:
四、约束
五、事务
1. 事务的基本介绍
2. 操作:
前言
(作业要求1、事物隔离级别
2、mysql与java 数据类型的对应表)
2、mysql与java 数据类型的对应表)
1、引用大佬的文章,链接如下事务的隔离级别_zhouym_的博客-CSDN博客_事务隔离级别
事务的隔离级别
事务的四大特性分别是:原子性、一致性、隔离性、持久性
幻读和不可重复读都是在同一个事务中多次读取了其他事务已经提交的事务的数据导致每次读取的数据不一致,所不同的是不可重复读读取的是同一条数据,而幻读针对的是一批数据整体的统计(比如数据的个数)
以MYSQL数据库来分析四种隔离级别
第一种隔离级别:Read uncommitted(读未提交)
如果一个事务已经开始写数据,则另外一个事务不允许同时进行写操作,但允许其他事务读此行数据,该隔离级别可以通过“排他写锁”,但是不排斥读线程实现。这样就避免了更新丢失,却可能出现脏读,也就是说事务B读取到了事务A未提交的数据
解决了更新丢失,但还是可能会出现脏读
第二种隔离级别:Read committed(读提交)
如果是一个读事务(线程),则允许其他事务读写,如果是写事务将会禁止其他事务访问该行数据,该隔离级别避免了脏读,但是可能出现不可重复读。事务A事先读取了数据,事务B紧接着更新了数据,并提交了事务,而事务A再次读取该数据时,数据已经发生了改变。
解决了更新丢失和脏读问题
第三种隔离级别:Repeatable read(可重复读取)
可重复读取是指在一个事务内,多次读同一个数据,在这个事务还没结束时,其他事务不能访问该数据(包括了读写),这样就可以在同一个事务内两次读到的数据是一样的,因此称为是可重复读隔离级别,读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务(包括了读写),这样避免了不可重复读和脏读,但是有时可能会出现幻读。(读取数据的事务)可以通过“共享读镜”和“排他写锁”实现。
解决了更新丢失、脏读、不可重复读、但是还会出现幻读
第四种隔离级别:Serializable(可序化)
提供严格的事务隔离,它要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行,如果仅仅通过“行级锁”是无法实现序列化的,必须通过其他机制保证新插入的数据不会被执行查询操作的事务访问到。序列化是最高的事务隔离级别,同时代价也是最高的,性能很低,一般很少使用,在该级别下,事务顺序执行,不仅可以避免脏读、不可重复读,还避免了幻读
解决了更新丢失、脏读、不可重复读、幻读(虚读)
————————————————
版权声明:本文为CSDN博主「zhouym_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhouym_/article/details/90381606
2、同样是转载
java mysql 数据类型对照
| 类型名称 | 显示长度 | 数据库类型 | JAVA类型 | JDBC类型索引(int) | 描述 |
| VARCHAR | L+N | VARCHAR | java.lang.String | 12 | |
| CHAR | N | CHAR | java.lang.String | 1 | |
| BLOB | L+N | BLOB | java.lang.byte[] | -4 | |
| TEXT | 65535 | VARCHAR | java.lang.String | -1 | |
| INTEGER | 4 | INTEGER UNSIGNED | java.lang.Long | 4 | |
| TINYINT | 3 | TINYINT UNSIGNED | java.lang.Integer | -6 | |
| SMALLINT | 5 | SMALLINT UNSIGNED | java.lang.Integer | 5 | |
| MEDIUMINT | 8 | MEDIUMINT UNSIGNED | java.lang.Integer | 4 | |
| BIT | 1 | BIT | java.lang.Boolean | -7 | |
| BIGINT | 20 | BIGINT UNSIGNED | java.math.BigInteger | -5 | |
| FLOAT | 4+8 | FLOAT | java.lang.Float | 7 | |
| DOUBLE | 22 | DOUBLE | java.lang.Double | 8 | |
| DECIMAL | 11 | DECIMAL | java.math.BigDecimal | 3 | |
| BOOLEAN | 1 | 同TINYINT | |||
| ID | 11 | PK (INTEGER UNSIGNED) | java.lang.Long | 4 | |
| DATE | 10 | DATE | java.sql.Date | 91 | |
| TIME | 8 | TIME | java.sql.Time | 92 | |
| DATETIME | 19 | DATETIME | java.sql.Timestamp | 93 | |
| TIMESTAMP | 19 | TIMESTAMP | java.sql.Timestamp | 93 | |
| YEAR | 4 | YEAR | java.sql.Date | 91 |
对于bolb,一般用于对图片的数据库存储,原理是把图片打成二进制,然后进行的一种存储方式,在java中对应byte[]数组。
对于boolen类型,在mysql数据库中,个人认为用int类型代替较好,对bit操作不是很方便,尤其是在具有web页面开发的项目中,表示0/1,对应java类型的Integer较好。
decimal列的声明语法是decimal(m,d)。
在mysql5.1中,参数的取值范围:
1、M是数字的最大数(精度)。其范围为1~65(在较旧的MySQL版本中,允许的范围是1~254)。
2、D是小数点右侧数字的数目(标度)。其范围是0~30,但不得超过M。
说明:float占4个字节,double占8个字节,decimail(M,D)占M+2个字节。
如DECIMAL(5, 2) 的最大值为9 9 9 9 . 9 9,因为有7 个字节可用。
以上找不到原链接,有其他大佬链接如下java mysql 数据类型对照_见血飞能加加网页打印插件-CSDN博客
一、什么是数据库
(一)概念
数据库即存储和管理数据的仓库(具体概念找百度大佬)
(二)分类
在数据库中有四种分类:
1、网状结构
2、层次结构
3、关系结构
4、非关系结构
其中1、2主要都是国外在用,一个采用节点形式,一个采用树状形式,不做过多解释
3、4较为常用,其中4多数用哈希表,以key-value的形式保存数据,3的话就主要是我们常用 的,以表格形式存储,代表的数据库就有Oracle、SQL server以及我们要学的MySQL。
(三)MySQL
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,属于Oracle旗下产品,是最流行的关系型数据库管理系统之一。
MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言,由于其体积小、速度快、开放源码等特点,一般中小型网站的开发都选择MySQL作为网站数据库。
MySQL安装不介绍了,可视化视图的小海豚的安装也不介绍了,小小的介绍一下部分数据库命令(我们老师说万一客户单位没装那些玩意,还可以用dos命令查一下数据库)
1、create database 名称 创建自定义数据库
2、drop datebase 名称 删除自定义数据库
3、create database if not existe 名称 同名数据库
4、show creat database 名称 查看数据库创建信息
5、、、、
二、查询
一、基本查询
select 列名 from 表名;(如果查询所有字段,则可以使用*来替代字段列表)
一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
另外%是占位符,不是取余
列的别名: as:as也可以省略
二、条件查询
where
1、逻辑判断 and or not
2、运算符 > 、< 、<=、 、>= 、= 、<>
3、区间判断:BETWEEN...AND 4、枚举查询:IN( 集合) 5、模糊查询: LIKE: 占位符:单引号 6、_:单个任意字符,%:多个任意字符 7 、null值判断:IS NULL,IS NOT NULL 8、分支结构查询:case-end 中间可以填充 case when when end 逻辑结构和java的if差不多三、时间查询
1、
四、字符串查询
五、聚合函数
六、分组查询
七、子查询
八、合并查询
九、连接查询
三、增删改
1、增: 添加数据:
语法:
insert into 表名(列名
1,
列名
2,...
列名
n) values(
值
1,
值
2,...
值
n);
注意:
1. 列名和值要一一对应。
2. 如果表名后,不定义列名,则默认给所有列添加值insert into 表名
values(
值
1,
值
2,...
值
n);
3. 除了数字类型,其他类型需要使用引号(单双都可以
)
引起来
2. 删除数据:
语法:
delete from 表名 [where 条件]
注意:
1. 如果不加条件,则删除表中所有记录。
2. 如果要删除所有记录
1. delete from 表名; --
不推荐使用。有多少条记录就会执行多少次删除
操作
2. TRUNCATE TABLE 表名; --
推荐使用,效率更高 先删除表,然后再创
建一张一样的表。
3. 修改数据:
语法:
update 表名 set
列名
1 =
值
1,
列名
2 =
值
2,... [where
条件
];
注意:
1. 如果不加任何条件,则会将表中所有记录全部修改。
四、约束
概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。
分类:
1. 主键约束:primary key
2. 非空约束:not null
3. 唯一约束:unique
4. 外键约束:foreign key
非空约束:
not null
,值不能为
null
五、事务
六、分组查询
七、子查询
八、合并查询
九、连接查询
三、增删改
1、增: 添加数据:
语法:
insert into 表名(列名
1,
列名
2,...
列名
n) values(
值
1,
值
2,...
值
n);
注意:
1. 列名和值要一一对应。
2. 如果表名后,不定义列名,则默认给所有列添加值insert into 表名
values(
值
1,
值
2,...
值
n);
3. 除了数字类型,其他类型需要使用引号(单双都可以
)
引起来
2. 删除数据:
语法:
delete from 表名 [where 条件]
注意:
1. 如果不加条件,则删除表中所有记录。
2. 如果要删除所有记录
1. delete from 表名; --
不推荐使用。有多少条记录就会执行多少次删除
操作
2. TRUNCATE TABLE 表名; --
推荐使用,效率更高 先删除表,然后再创
建一张一样的表。
3. 修改数据:
语法:
update 表名 set
列名
1 =
值
1,
列名
2 =
值
2,... [where
条件
];
注意:
1. 如果不加任何条件,则会将表中所有记录全部修改。
四、约束
概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。
分类:
1. 主键约束:primary key
2. 非空约束:not null
3. 唯一约束:unique
4. 外键约束:foreign key
非空约束:
not null
,值不能为
null
五、事务
八、合并查询
九、连接查询
三、增删改
1、增: 添加数据:
语法:
insert into 表名(列名
1,
列名
2,...
列名
n) values(
值
1,
值
2,...
值
n);
注意:
1. 列名和值要一一对应。
2. 如果表名后,不定义列名,则默认给所有列添加值insert into 表名
values(
值
1,
值
2,...
值
n);
3. 除了数字类型,其他类型需要使用引号(单双都可以
)
引起来
2. 删除数据:
语法:
delete from 表名 [where 条件]
注意:
1. 如果不加条件,则删除表中所有记录。
2. 如果要删除所有记录
1. delete from 表名; --
不推荐使用。有多少条记录就会执行多少次删除
操作
2. TRUNCATE TABLE 表名; --
推荐使用,效率更高 先删除表,然后再创
建一张一样的表。
3. 修改数据:
语法:
update 表名 set
列名
1 =
值
1,
列名
2 =
值
2,... [where
条件
];
注意:
1. 如果不加任何条件,则会将表中所有记录全部修改。
四、约束
概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。
分类:
1. 主键约束:primary key
2. 非空约束:not null
3. 唯一约束:unique
4. 外键约束:foreign key
非空约束:
not null
,值不能为
null
五、事务
三、增删改
1、增: 添加数据:
语法:
insert into 表名(列名
1,
列名
2,...
列名
n) values(
值
1,
值
2,...
值
n);
注意:
1. 列名和值要一一对应。
2. 如果表名后,不定义列名,则默认给所有列添加值insert into 表名
values(
值
1,
值
2,...
值
n);
3. 除了数字类型,其他类型需要使用引号(单双都可以
)
引起来
2. 删除数据:
语法:
delete from 表名 [where 条件]
注意:
1. 如果不加条件,则删除表中所有记录。
2. 如果要删除所有记录
1. delete from 表名; --
不推荐使用。有多少条记录就会执行多少次删除
操作
2. TRUNCATE TABLE 表名; --
推荐使用,效率更高 先删除表,然后再创
建一张一样的表。
3. 修改数据:
语法:
update 表名 set
列名
1 =
值
1,
列名
2 =
值
2,... [where
条件
];
注意:
1. 如果不加任何条件,则会将表中所有记录全部修改。
四、约束
概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。
分类:
1. 主键约束:primary key
2. 非空约束:not null
3. 唯一约束:unique
4. 外键约束:foreign key
非空约束:
not null
,值不能为
null
五、事务
2. 删除数据:
语法:
delete from 表名 [where 条件]
注意:
1. 如果不加条件,则删除表中所有记录。
2. 如果要删除所有记录
1. delete from 表名; --
不推荐使用。有多少条记录就会执行多少次删除
操作
2. TRUNCATE TABLE 表名; --
推荐使用,效率更高 先删除表,然后再创
建一张一样的表。
3. 修改数据:
语法:
update 表名 set
列名
1 =
值
1,
列名
2 =
值
2,... [where
条件
];
注意:
1. 如果不加任何条件,则会将表中所有记录全部修改。
四、约束
概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。
分类:
1. 主键约束:primary key
2. 非空约束:not null
3. 唯一约束:unique
4. 外键约束:foreign key
非空约束:
not null
,值不能为
null
五、事务
五、事务



