Skip to content
🗂️ 文章分类: 数据库  
🏷️ 文章标签: MySql  
📝 文章创建时间: 2023-07-15
🔥 文章最后更新时间:暂无

[toc]

MySQL笔记3-表的结构

MySQL 数据表是由行和列构成的,通常把表的“列”称为字段(Field),把表的“行”称为记录(Record)。

下面是与表的结构相关的Mysql语法

创建表

在 MySQL 中,可以使用 CREATE TABLE 语句创建表。其语法格式为:

sql
create table 表名 ( <字段名1> <类型1> [,..<字段名n> <类型n>]);
  • 表名:表的名称,必须符合标识符命名规则。

例子:创建Person表,表属性如下

字段名数字类型数据宽度是否为空是否主键自动增加默认值
idint4primary keyauto_increment
namechar20
sexint40
degreedouble16
sql
create table Person( 
id int(4) not null primary key auto_increment,
name char(20) not null,
sex int(4) not null default '0',
degree double(16,2)
);

查看表

表格的形式展示表结构

DESCRIBE/DESC 语句会以表格的形式来展示表的字段信息。

sql
# 语法如下
DESCRIBE <表名>;
# 简写语法如下
DESC <表名>;

## 展示tb_emp1表
mysql> DESC tb_emp1;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(11)     | YES  |     | NULL    |       |
| name   | varchar(25) | YES  |     | NULL    |       |
| deptId | int(11)     | YES  |     | NULL    |       |
| salary | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.14 sec)

SQL语句的形式展示表结构

SHOW CREATE TABLE 语句会以 SQL 语句的形式来展示表信息。

sql
# 语法
SHOW CREATE TABLE <表名>;

# 查看表 tb_emp1 的详细信息
mysql> SHOW CREATE TABLE tb_emp1;
+---------+------------------------------------------------+
| Table   | Create Table                                   |
+---------+------------------------------------------------+
| tb_emp1 | CREATE TABLE `tb_emp1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(25) DEFAULT NULL,
  `salary` float DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gb2312 |
+---------+------------------------------------------------+
1 row in set (0.01 sec)

修改表

在表中末尾添加字段

使用 alter table ... add... 在表的最后位置(最后一列的后面)添加新字段。

sql
# 语法如下  
ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件];

# 添加字段age, int类型,长度为4,默认值为0
alter table 表名 add age int(4) default 0;
  • 表名:为数据表的名字;
  • 新字段名:为所要添加的字段的名字;
  • 数据类型:为所要添加的字段能存储数据的数据类型;
  • 约束条件:是可选的,可以用来对添加的字段进行约束。

在表的开头添加字段

使用 alter table ... add...first 在表的开头位置(第一列的前面)添加新字段。

sql
# 语法如下  
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] FIRST;

# 添加字段stuId, int类型,长度为4
ALTER TABLE student ADD stuId INT(4) FIRST;

在表的中间添加字段

使用 alter table ... add...AFTER.... 在表的中间位置(指定字段之后)添加新字段。

sql
# 语法如下  
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] AFTER <已经存在的字段名>;

# 在name字段之后,添加字段stuno, int类型,长度为11。
ALTER TABLE student ADD stuno INT(11) AFTER name;

同时修改字段的名称和数据类型

使用 alter table ... change 同时修改字段的名称与类型。

sql
# 语法如下
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>

# 将 col1 字段名称改为 col3,同时将数据类型变为 CHAR(30)
ALTER TABLE tb_emp1 CHANGE col1 col3 CHAR(30);

只修改字段的数据类型

使用 alter table ... modify 只修改字段的数据类型。

sql
# 语法如下
ALTER TABLE <表名> MODIFY <字段名> <新的数据类型>

# 将 name 字段的数据类型由 VARCHAR(22) 修改成 VARCHAR(30)
ALTER TABLE tb_emp1 MODIFY name VARCHAR(30);

删除表中字段

使用 alter table ... drop来删除表中的字段

sql
# 语法如下
ALTER TABLE <表名> DROP <字段名>

# 删除tb_emp1表中的 col2 字段
ALTER TABLE tb_emp1 DROP col2;

修改表名

mysql通过 ALTER TABLE 语句来实现表名的修改。

sql
# 语法如下
ALTER TABLE <旧表名> RENAME <新表名>;

# 将数据表 student 改名为 tb_students_info
ALTER TABLE student RENAME tb_students_info;

修改表的字符集

MySQL 通过 ALTER TABLE 语句来实现表字符集的修改。

sql
# 语法如下
ALTER TABLE 表名 CHARACTER SET <字符集名> COLLATE <校对规则名>;

# 将数据表 tb_students_info 的字符集修改为 gb2312,校对规则修改为 gb2312_chinese_ci。
ALTER TABLE tb_students_info CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;

删除表

注意:删除表的同时,表的结构和表中所有的数据都会被删除。

使用 DROP TABLE 语句可以删除一个或多个数据表。语法如下

sql
# 语法
DROP TABLE 表名1 [ ,表名2, 表名3 ...]

# 删除test_db表
drop table test_db;

DROP TABLE用于删除一个或多个表。您必须有每个表的DROP权限。DROP是删除表的数据和表的定义。

Released under the MIT License.