创建表
基本语法
create table 表名(
字段1 字段类型 约束 comment '字段1注释',
字段2 字段类型 约束 comment '字段2注释'
)
create table tb_user(
id int comment 'id唯一标识符',
username varchar(20) comment '用户名',
name varchar(10) comment '姓名',
age int comment '年龄'
gender char(1) comment '性别'
)
基本语法(约束)
- 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
- 目的:保证数据库中数据的正确性、有效性和完整性。
| 约束 | 描述 | 描述 |
|---|
| 非空约束 | 限制字段值不能为null | not null |
| 唯一约束 | 保证字段的所有数据都是唯一,不重复 | unique |
| 主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | primary key (auto_increment自增) |
| 默认约束 | 保存数据时,如果未指定该字段值,则采用默认值 | default '默认值' |
| 外键约束 | 让两张表的数据建立连接,保证数据的一致性和完整性 | primary key |
create table tb_user(
id int primary key 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中的数据类型有很多,主要分为三类:数值类型,字符串类型,日期时间类型
| 类型 | 大小(byte) | 有符号(SIGNED)范围 | 无符号(UNSIGNED)范围 | 描述 | 备注 |
|---|
| tinyint | 1 | (-128, 127) | (0, 255) | 小整数值 | |
| smallint | 2 | (-32768, 32767) | (0, 65535) | 大整数值 | |
| mediumint | 3 | (-8388608, 8388607) | (0, 16777215) | 大整数值 | |
| int | 4 | (-2147483648,2147483647) | (0, 4294967295) | 大整数值 | |
| bigint | 8 | (-2^63, 2^63-1) | (0, 2^64-1) | 极大整数值 | |
| float | 4 | (-3.402823466 E+38, 3.402823466351 E+38) | 0和 (1.175494351 E-38,3.402823466 E+38) | 单精度浮点数值 | float(5,2): 5表示整个数宇长度,2 表示小数位个数 |
| double | 8 | (-1.7976931348623157 E+308, 1.7976931348623157 E+308) | 0和(2.2250738585072014 E-308, 1.7976931348623157 E+308) | 双精度浮点数值 | double(5.2): 5表示整个数字长度,2 表示小数位个数 |
| decimal | | | | 小数值(精度更高) | decimal(5.2): 5表示整个数字长度,2 表示小数位个数 |
| 类型 | 大小(byte) | 描述 |
|---|
| 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 | 极大文本数据 |
| 类型 | 大小(byte) | 范围 | 格式 | 描述 |
|---|
| 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 | 混合日期和时间值,时间戳 |
案例练习
| 字段名称 | 必填/选填 | 长度限制 | 输入限制 | 是否唯一 |
|---|
| 用户名 | 必填 | 2-20 | 数字、字母 | 是 |
| 员工姓名 | 必填 | 2-10 | 汉字 | 否 |
| 性别 | 必填 | 2-10 | 选择男/女 | 否 |
| 图像 | 选填 | 2M | 图片大小不能超过2M | 否 |
| 职位 | 选填 | - | 选择班主任/讲师/学工主管/教研主管 | 否 |
| 入职时间 | 选填 | - | YYYY-MM-DD | 否 |
| 创建时间 | 选填 | - | YYYY-MM-DD HH:MM: SS | 否 |
| 更新时间 | 选填 | - | YYYY-MM-DD HH:MM: SS | 否 |
添加员工时,会给员工设置一个默认的密码123456。
create table tb_emp(
id int primary key comment '主键id,唯一标识符',
username varchar(20) not null unique comment '用户名',
password varchar(32) default '123456' comment '密码',
name varchar(10) not null comment '员工姓名',
gender tinyint unsigned not null comment '性别:1 男,2 女',
image_url varchar(300) comment '图像url',
job tinyint unsigned comment '职位:1 班主任,2 讲师,3 学工主管,4 教研主管',
entrydate date comment '入职时间',
create_time datetime not null comment '创建时间',
update_time datetime not null comment '修改时间'
) comment '员工表';
查询
show tables;
desc tb_emp;
show create table tb_emp;
修改
alter table tb_emp add qq varchar(11) comment 'QQ';
alter table tb_emp modify qq varchar(13) comment 'QQ';
alter table tb_emp change qq qq_num varchar(13) comment 'QQ';
alter table tb_emp drop column qq_num;
rename table tb_emp to emp;
删除
drop table if exists tb
注意事项:在删除表时,表中的全部数据也会被删除