作为一名测试工程师,我们经常会构造测试数据进行一些功能验证。为了暴露更多的问题,在测试数据的构造上,我们应该尽可能的构造不同类型的字段数据,且一张表的字段最好不低于 10 10 10 个。
对于 MySQL 数据库,字段类型主要是分为 数值类型、时间类型、字符串类型。
int
、bigint
、float
、double
、decimal
、…year
、month
、day
、date
、time
、datetime
、timestamp
、…char
、varchar
、enum
、text
、…-- 创建学生表
create table student_info (
id int(11) not null auto_increment,
stu_number int(11) not null unique comment '学号',
name char(20) not null comment '姓名',
age tinyint default 20 comment '年龄',
sex enum('man', 'woman') comment '性别',
address varchar(50) comment '家庭住址',
score smallint comment '入学成绩',
class_id int(11) comment '所在班级',
birth_year year comment '出生年份',
birthday date comment '出生日期',
createTime datetime default current_timestamp comment '创建时间',
updateTime timestamp default current_timestamp on update current_timestamp comment '更新时间',
primary key (id)
);
我们创建一个学生信息表,有几点需要特别声明:
id
作为主键(Primary Key
),同时设置为自增(auto_increment
)。stu_number
具有唯一约束(Unique Key
)。name
为 char
类型,address
为 varchar
类型。sex
为枚举(enum
)类型。date
类型的格式为 YYYY-MM-DD
。datetime
和 timestamp
类型的格式都为 YYYY-MM-DD hh:mm:ss
。datetime
支持的范围为 1000-01-01 00:00:00
- 9999-12-31 23:59:59
(通常用来考勤等)。timestamp
有时间范围限制,从 1970-01-01 00:00:01
- 2038-01-19 03:14:07
(常用)(通常使用在注册账号时间,交易,下订单时间)。插入数据:
insert into student_info (stu_number, name, age, sex, address, score, class_id, birth_year, birthday, createTime, updateTime)
values (100001, '张三', 25, 'man', '北京市朝阳区', 80, 104, '1998', '1998-06-16', '2023-12-31 01:00:00', '2023-12-31 01:00:00'),
(100002, '李四', 34, 'man', '北京市海淀区', 85, 102, '1997', '1997-03-12', '2023-12-31 01:00:00', '2023-12-31 01:00:00'),
(100003, '王五', 18, 'man', '上海市徐汇区', 90, 103, '1998', '1998-03-25', '2023-12-31 01:00:00', '2023-12-31 01:00:00'),
(100004, '赵六', 38, 'man', '上海市静安区', 70, 104, '1995', '1995-05-18', '2023-12-31 01:00:00', '2023-12-31 01:00:00'),
(100005, '子涵', 45, 'man', '北京市朝阳区', 82, 101, '1997', '1997-08-11', '2023-12-31 01:00:00', '2023-12-31 01:00:00'),
(100006, '小美', 22, 'woman', '上海市闵行区', 88, 102, '1996', '1996-10-10', '2023-12-31 01:00:00', '2023-12-31 01:00:00'),
(100007, '小明', 65, 'man', '西安市未央区', 89, 103, '1997', '1997-01-28', '2023-12-31 01:00:00', '2023-12-31 01:00:00'),
(100008, '小红', 51, 'woman', '重庆市江北区', 78, 101, '1995', '1995-12-11', '2023-12-31 01:00:00', '2023-12-31 01:00:00'),
(100009, '翠花', 47, 'woman', '西安市碑林区', 86, 102, '1997', '1997-05-24', '2023-12-31 01:00:00', '2023-12-31 01:00:00'),
(100010, '无忌', 19, 'man', '北京市西城区', 93, 103, '1998', '1998-08-26', '2023-12-31 01:00:00', '2023-12-31 01:00:00');
查看数据:
我们尝试进行一个 update
操作。
update student_info
set name = '张无忌'
where stu_number = 100010;
可以看到对应数据的 updateTime
字段也自动更新了。