mysql之表结构的操作

147 阅读5分钟

创建表

基本语法
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 '性别'
)
基本语法(约束)
  • 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
  • 目的:保证数据库中数据的正确性、有效性和完整性。
约束描述描述
非空约束限制字段值不能为nullnot 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)范围描述备注
tinyint1(-128, 127)(0, 255)小整数值
smallint2(-32768, 32767)(0, 65535)大整数值
mediumint3(-8388608, 8388607)(0, 16777215)大整数值
int4(-2147483648,2147483647)(0, 4294967295)大整数值
bigint8(-2^63, 2^63-1)(0, 2^64-1)极大整数值
float4(-3.402823466 E+38, 3.402823466351 E+38)0和 (1.175494351 E-38,3.402823466 E+38)单精度浮点数值float(5,2): 5表示整个数宇长度,2 表示小数位个数
double8(-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)描述
char0-255 bytes定长字符串
varchar0-65535 bytes变长字符串
tinyblob0-255 bytes不超过255个字符的二进制数据
tinytext0-255 bytes短文本字符串
blob0-65 535 bytes二进制形式的长文本数据
text0-65 535 bytes长文本数据
mediumblob0-16 777 215 bytes二进制形式的中等长度文本数据
mediumtext0-16 777 215 bytes中等长度文本数据
longblob0-4 294 967 295 bytes二进制形式的极大文本数据
longtext0-4 294 967 295 bytes极大文本数据
  • 日期时间类型
类型大小(byte)范围格式描述
date31000-01-01 至 9999-12-31YYYY-MM-DD日期值
time3-838:59:59 至 838:59:59HH:MM: SS时间值或持续时间
year11901 至 2155YYYY年份值
datetime81000-01-01 00:00:00 至 9999-12-31 23:59:59YYYY-MM-DD HH:MM: SS混合日期和时间值
timestamp41970-01-01 00:00:01 至 2038-01-19 03:14:07YYYY-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;

修改

-- 语法
-- 1.添加字段:alter table 表名 add 字段名 类型(长度) comment '注释' 约束;
-- 2.修改字段类型:alter table 表名 modify 字段名 新数据类型(长度);
-- 3.修改字段名和字段类型:alter table 表名 change 旧字段名 新字段名 类型(长度) comment '注释' 约束;
-- 4.删除字段:alter table 表名 drop column 字段名;
-- 5.修改表名:rename table 表名 to 新表名;

-- 例子
-- 1.修改:为表tb_emp添加字段qq varchar(11)
alter table tb_emp add qq varchar(11) comment 'QQ';

-- 2.修改:修改tb_emp字段类型qq varchar(13)
alter table tb_emp modify qq varchar(13) comment 'QQ';

-- 3.修改:修改tb_emp字段名 qq 为qq_num varchar(13)
alter table tb_emp change qq qq_num varchar(13) comment 'QQ';

-- 4.修改:删除tb_emp的qq_num字段
alter table tb_emp drop column qq_num;

-- 5.修改:将tb_emp表名修改为emp
rename table tb_emp to emp;

删除

-- 语法 if exists (判断是否存着表,如果存着删除,不存着不删除)
-- 删除表:drop table if exists 表名;

-- 例子
-- 删除:删除tb_emp表
drop table if exists tb

注意事项:在删除表时,表中的全部数据也会被删除