MySQL表结构操作

对数据库表结构的基本操作

➕ 创建表结构

💻 代码结构

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 创建一个新的表
create table table_name(
	字段1 字段类型[约束] [comment '关于字段的描述'],
	...
	字段n 字段类型[约束] [comment '关于字段的描述']
    <完整性约束>,
    ...
    <完整性约束>
)[comment 关于表的描述]

#创建与现有的某个表的模式相同的表
create table new_table like old_name

#将查询结果保存为一张表,默认插入数据
create table new_table as
<查询表达式>;

🔒 约束

概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。

目的:保证数据库中数据的正确性、有效性和完整性。

常见约束参考

约束描述关键字
非空约束限制该字段不能为nullnot null
唯一约束保证该字段的所有数据都是唯一,不存在重复unique
主键约束主键是一个元组的唯一标识,要求非空且唯一primary key
默认约束保存数据时要是未指定该字段值则存入默认值default
谓词约束保证所有数据都满足条件谓词check
外键约束通过外键建立两张表的联系,保证数据的一致性和完整性foreign key

示例代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
create table student
(ID varchar (5) comment['唯一标识符'],
 name varchar (20) not null,unique
 dept_name varchar (20),
 tot_cred numeric (3,0) check (tot_cred >= 0),
 age int default 18 #默认约束
 primary key (ID), #主键约束
 foreign key (dept_name) references department(dept_name) #外键约束
     on delete set null) #违反约束的方法:置为null
 unique(name,age); #多列唯一约束

📊 数据类型

🔢 数值类型

类型大小(byte)有符号范围无符号范围描述备注
tinyint1(-128,127)(0,255)小整数
smallint2(-32768,32767)(0,65535)大整数
mediumint3(-8388608,8388607)(0,1677215)大整数
int4(-2^31,2^31-1)(0,2^32-1)大整数
bigint8(-2^63,2^63-1)(0,2^64-1)极大整数
float4单精度浮点值float(5,2),5为长度,2为小数位数
double8双精度浮点值double(5,2),5为长度,2为小数位数
decimal小数值(精度最高)

🔤 字符类型

类型大小(byte)描述备注
char0~255定长字符串char(10) 最多存10字符,不足时也占10字符空间
varchar0~63315变长字符串varchar(10) 最多存10字符,按实际长度存储
tinyblob0~255不超过255个字符的二进制数据
tinytext0~255短文本字符串
blob0~65535二进制形式长文本数据
text0~65535长文本数据
mediumblob0~16777215二进制形式中等长文本数据
mediumtext0~16777215中等长度文本数据
longblob0~4294967295二进制形式的极大文本数据
longtext0~4294967295极大文本数据

📅 日期类型

类型大小(byte)格式范围描述
date3YYYY-MM-DD1000-01-01 到 9999-12-31日期值
time3HH:MM:SS-838:59:59 到 838:59:59时间值或持续时间
year1YYYY1901 到 2155年份值
datetime8YYYY-MM-DD HH:MM:SS1000-01-01 到 9999-12-31混合日期和时间值
timestamp4YYYY-MM-DD HH:MM:SS1000-01-01 到 9999-12-31混合日期和时间值

时间域的提取:

1
2
3
extract(unit from date)
# unit 为所提取的时间域
# date 为字符串

字符串转时间类型:

1
cast('2024-12-21' as date)

📦 大对象类型

  • 字符数据:clob
  • 二进制数据:blob

📋 查询表结构

查询当前数据库的所有表:

1
show tables

查询指定表的表结构:

1
desc table_name

查询建表语句:

1
show create table table_name

🛠️ 修改表结构

添加字段:

1
2
alter table table_name
	add 字段名 字段类型(长度) [comment '关于字段的描述'] [约束];

修改字段类型:

1
2
alter table table_name
	modify 字段名 新字段类型(长度);

修改字段名和字段类型:

1
2
alter table table_name
	change 旧字段名 新字段名 新类型(长度)[comment '关于字段的描述'] [约束];

删除字段:

1
2
3
4
5
alter table table_name
	drop column 字段名;
# column 可以不填写
alter table table_name
	drop 字段名;

修改表名:

1
rename table 旧表名 to 新表名;

🗑️ 删除表结构

删除表中所有元组以及表的结构:

1
drop table 表名;
그 경기 끝나고 좀 멍하기 있었는데 여러분 이제 살면서 여러가
使用 Hugo 构建
主题 StackJimmy 设计