创建数据库表结构以及表字段类型,根据产品原型/需求创建表设计合理的数据类型
- create table tb_user (
- id int primary key auto_increment comment 'ID,唯一标识', #主键自动增长
- username varchar(20) not null unique comment '用户名',
- name varchar(10) not null comment '姓名',
- age int comment '年龄',
- gender char(1) default '男' comment '性别'
- ) comment '用户表';
复制代码 MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。
1). 数值类型
类型 | 大小 | 有符号(SIGNED)范围 | 无符号(UNSIGNED)范围 | TINYINT | 1byte | (-128,127) | (0,255) | SMALLINT | 2bytes | (-32768,32767) | (0,65535) | MEDIUMINT | 3bytes | (-8388608,8388607) | (0,16777215) | INT/INTEGER | 4bytes | (-2147483648,2147483647) | (0,4294967295) | BIGINT | 8bytes | (-2^63,2^63-1) | (0,2^64-1) | FLOAT | 4bytes | (-3.402823466 E+38,3.402823466351 E+38) | 0 和 (1.175494351 E-38,3.402823466 E+38) | DOUBLE | 8bytes | (-1.7976931348623157 E+308,1.7976931348623157 E+308) | 0 和 (2.2250738585072014 E-308,1.7976931348623157 E+308) | DECIMAL |
| 依赖于M(精度)和D(标度)的值 | 依赖于M(精度)和D(标度)的值 | 2). 字符串类型
类型 | 大小 | 描述 | CHAR | 0-255 bytes | 定长字符串(需要指定长度) | VARCHAR | 0-65535 bytes | 变长字符串(需要指定长度) | TINYBLOB | 0-255 bytes | 不超过255个字符的二进制数据 | TINYTEXT | 0-255 bytes | 短文本字符串 | BLOB | 0-65 535 bytes | 二进制形式的长文本数据 | TEXT | 0-65 535 bytes | 长文本数据 | MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 | MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 | LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 | LONGTEXT | 0-4 294 967 295 bytes | 极大文本数据 | char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性能会更高些。
3). 日期时间类型
类型 | 大小 | 范围 | 格式 | 描述 | | DATE | 3 | 1000-01-01 至 9999-12-31 | YYYY-MM-DD | 日期值 | | TIME | 3 | -838:59:59 至 838:59:59 | HH:MM:SS | 时间值或持续时间 | | YEAR | 1 | 1901 至 2155 | YYYY | 年份值 | | DATETIME | 8 | 1000-01-01 00:00:00 至 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 | | TIMESTAMP | 4 | 1970-01-01 00:00:01 至 2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值,时间戳 |
表结构设计-案例
需求:根据产品原型/需求创建表((设计合理的数据类型、长度、约束)
- create table emp(
- id int unsigned primary key auto_increment comment 'ID,主键',
- username varchar(20) not null unique comment '用户名',
- password varchar(32) not null comment '密码',
- name varchar(10) not null comment '姓名',
- gender tinyint unsigned not null comment '性别, 1:男, 2:女',
- phone char(11) not null unique comment '手机号',
- job tinyint unsigned comment '职位, 1:班主任,2:讲师,3:学工主管,4:教研主管,5:咨询师',
- salary int unsigned comment '薪资',
- image varchar(255) comment '头像',
- entry_date date comment '入职日期',
- create_time datetime comment '创建时间',
- update_time datetime comment '修改时间'
- ) comment '员工表';
复制代码 综合项目:
JavaWeb(SpringBoot3+vue3)开发+教学管理系统项目实战
|