猪猪的IT之路---Java成长之路(数据库约束+测试类创建)
数据库约束:6种
1.非空约束:字段名 数据类型(范围) not null,限制列不允许存储null值
2.主键约束:字段名 数据类型(范围) primary key,限制列唯一且不能为null
提示:每张表都应该有主键,而且只能存在一个主键
扩展:也可以在建表语句后面通过primary key(字段名1 [,字段名2,……]),定义主键列
3.唯一约束:字段名 数据类型(范围) unique ,限制列数据必须唯一
也可以通过unique(字段名),和主键的第二种用法一致
4.默认约束:用于给约束列插入默认值
首先需要在字段后面设置默认值:字段名 数据类型(范围) default(值)
然后可以在任何sql语句中通过default关键字引用默认值
5.外键约束:保护表中的数据完整性(误删除操作,非法新增操作)
Foreign key(外键列名) references 表名(主键列名)
提示:外键约束一定是存在一张表中的某列数据和其他表中的主键存在关联,主表(有外键约束的列的表),子表(外键表,被关联引用的表),当子表的某行数据存在被主表引用的情况下,那么当前行的数据不允许被删除或更改,当主表新增数据时外键列的数据必须存在于外键表中,否则新增失败
注意:实际开发中一般建议通过程序代码进行完整性维护,而不是使用数据库本身的约束来维护
6.检查约束:mysql不支持
注意:检查约束一般也是通过编码维护
事务:将多条sql语句执行作为一件事,保证要么全部执行,要么全部不执行
事务的特性:
-
原子性:事务中的操作语句,要么都不做,要么全做
-
一致性:事务的操作不能破坏数据库的数据完整性和一致性
说明:在事务操作成功后,数据库中表的数据在业务上的完整正确的,不能只是A用户扣钱,B用户不加钱 -
隔离性:一个事务的操作不能被其他事务干扰
-
持久性:事务一旦提交,那么数据就永久保存
转账:A用户转账给B用户
A用户的余额减少
B用户的余额增加
事务执行过程:
开启事务:begin
事务提交:commit
事务回滚:rollback
Mysql数据库事务是默认自动提交的
Set autocommit = 0禁止自动提交
Set autocommit = 1开启自动提交
事务:在遇到多条更新(新增,删除,修改)操作需要同时执行,并且要保证其原子性,那么就应该使用事务进行控制
步骤:
1.取消事务自动提交
2.执行多条更新语句
3.判断执行结果,根据结果进行事务提交或事务回滚操作
数据库常用内置函数:
内置函数的使用语法:select 内置函数名(参数)[where 条件]
count(字段名或*):用于统计行数
max(字段名):获取指定列的最大值
Min(字段名):
Avg(字段名):获取指定列的平均值
Sum(字段名):获取指定列的和
Now():获取当前系统时间
Junit进行单元测试:
使用方式:
1.添加junit依赖,所有的开发工具默认都带有
2.编写测试类:命名:被测类名+Test
常用注解:
@Test
@Before:被该注解标识的方法在每个@test标识的方法执行前执行一次
@After:被该注解标识的方法在每个@test标识的方法执行后执行一次
测试类规范:
1) 测试方法必须使用@Test注解,并且方法必须是public void,同时不能带参数
2) 测试类中的某个测试方法都必须独立,不能存在方法之间的任何关系
3) 命名一般都应该遵循约定,类名以Test结尾,方法名使用test作为开头
注意:如果一个测试类中存在多个测试方法,但是只想要执行某个测试方法,那么点击方法名再鼠标右键运行就可以了