【MySQL】第三章-表的操作

第三章-表的操作

创建表

基本语法

1
2
3
4
5
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;

  在库中创建表是数据库最为基础的操作,在创建表过程中我们也可以对表进行一些自定义,但是大家尽可以放心的去创建表,对于表一的字段和一些属性在表创建成功也是可以更改的,就算我们创建错了表,也不要害怕,大不了就是删表重建罢了,最为主要的是不断的练习与尝试。

示例

1
2
3
4
5
create table student 
(
id int primary key auto_increment,
name varchar(20)
);

  关于以上的指令的要求是创建一个名为student的表,表中包含intidvarchar()name两个字段,并且约束id字段为主键,设置自增长(关于表的约束后面章节会有讲解)。

查看表

查看表结构

语法

  desc 表名;

  用此指令用于查看表的详细结构。

示例

1
desc student;

  结果:

1
2
3
4
5
6
7
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.26 sec)

  可以看到如我们所愿打印出了表的详细结构。一共分为了几列。其中Field列显示字段名;Type列显示字段类型;Null列显示是否可以为空(由于我将id设置为了主键因此不可以为空了);Key列显示键的类型,没有则不显示;Default列显示默认值,未设置则默认值为空;Extra显示其他约束。

查看表的创建语句

语法

  show create table 表名;
  与查看库的创建语句类似,但是所显示的信息却有很大变化。

示例

1
show create table student;

结果:

1
2
3
4
5
6
7
8
9
10
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.02 sec)

  从表的创建语句中我们可以看到表的名称,表的字段创建信息包括字段类型大小以及字符集和校验值等。

修改表

  在实际开发过程中我们最初所创建的表往往要随着需求的变更而进行改变,然而每次变更需求都重新建立新表未免显得麻烦,因此修改表便成了数据库中不可或缺的操作。

添加字段

语法
1
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...);

  通过以上指令即可在已建成的表中添加新的字段,并且可以做到在任意字段后进行添加。

示例
1
alter table student add class varchar(20) after id;

结果:

1
2
3
4
5
6
7
8
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| class | varchar(20) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

  可以看出我们通过指令在id后添加了一个新的字段class,并且类型为carchar(20)。在指令中,after则就表示插入在哪个字段之后,可以任意选择,如果不写此选项,默认插在尾部。

修改字段属性

语法
1
ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column datatype]...);

  通过以上指令即可对字段的属性进行更改,包括字段的类型,大小,约束等都可以修改。

示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
MariaDB [db1]> desc student;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| class | varchar(20) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

MariaDB [db1]> alter table student modify class varchar(20) default '20';
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0

MariaDB [db1]> desc student;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| class | varchar(20) | YES | | 20 | |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

  这个例子中我修改了class字段的默认值,前后可以看出来我将默认值修改为了20。这个指令还可以修改很多其他属性。

更换字段

语法
1
alter table 表名 change 字段名 新字段名 定义; --新字段需要完整定义

  这个指令可以将字段更换为新的字段,新的字段需要进行完整的定义,包括字段的类型大小和各种约束等等。

示例
1
alter table student change class banji varchar(20) default '20';

结果:

1
2
3
4
5
6
7
8
desc student;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| banji | varchar(20) | YES | | 20 | |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+

  这个例子中我将class字段更换为banji字段,并且重新设置类型为varchar(20)默认值为20。

更改表名

语法
1
alter table 表名 rename 新表名;

  这个指令可以将表进行改名。

示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
MariaDB [db1]> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| student |
+---------------+
1 row in set (0.00 sec)

MariaDB [db1]> alter table student rename xuesheng;
Query OK, 0 rows affected (0.01 sec)

MariaDB [db1]> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| xuesheng |
+---------------+
1 row in set (0.00 sec)

  这个例子中我将student表名更改为了xuesheng

删除字段

语法
1
ALTER TABLE tablename DROP (column);

  这个指令即可删除字段,不过删除字段要谨慎小心,因为删除字段失去的数据不可恢复,除非事先备份过。

示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
MariaDB [db1]> desc xuesheng;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| banji | varchar(20) | YES | | 20 | |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)

MariaDB [db1]> alter table xuesheng drop banji;
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0

MariaDB [db1]> desc xuesheng;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

  在这个例子中我删除了表xuesheng中的banji字段。

删除表

语法

1
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

  删除整张表,千万慎用,数据无法恢复,除非事先备份。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
MariaDB [db1]> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| xuesheng |
+---------------+
1 row in set (0.00 sec)

MariaDB [db1]> drop table xuesheng;
Query OK, 0 rows affected (0.00 sec)

MariaDB [db1]> show tables;
Empty set (0.00 sec)

  在这个例子中我删除了xuesheng表,删表和删库一样需谨慎!

  以上就是关于表的所有基本操作,熟能生巧。

-------------本文结束感谢您的阅读!-------------
记录学习每一分,感谢您的赞助