在MySQL中创建数据库完成后,需要使用USE 数据库名
的形式指定进行操作的数据库,然后再去执行创建数据表的SQL语句,也可以直接使用数据库名.数据表名
的形式创建数据表。
1.创建空数据表
语法格式:CREATE TABLE [IF EXISTS] 表名 (
字段1,数据类型,[约束条件] [默认值] ,
字段2,数据类型,[约束条件] [默认值],
字段3,数据类型,[约束条件] [默认值]);
ps:创建数据表时,必须指定数据表名,表名在Windows操作系统不区分大小写,在Linus操作系统上区分大小写。如果需要在Linus操作系统中不区分大小写,则需要Mysql的 配置文件my.cnf中添加一项配置lower_case_table_names=1
eg.在student数据库创建一个students表
字段名称 | 字段类别 | 字段含义 |
---|---|---|
id | INT | 学生id |
s_id | INT | 学号 |
name | VARCHAR(30) | 姓名 |
mysql> create table students (
-> id int(11),
-> s_id int(11),
-> name varchar(30));
Query OK, 0 rows affected, 2 warnings (0.03 sec)
我们可以看到数据表已经创建成功,但有2 warnings (0.03 sec)
两个警告信息,我们可以使用SHOW WARNING
来查看警告信息
mysql> show warnings;
+---------+------+------------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+------------------------------------------------------------------------------+
| Warning | 1681 | Integer display width is deprecated and will be removed in a future release. |
| Warning | 1681 | Integer display width is deprecated and will be removed in a future release. |
+---------+------+------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
在MySQL8.x中,不再推荐为INT类型指定显示长度,并在未来可能会移除这样的语法。
2.创建数据表时指定主键
在MYSQL中创建数据表时,可以为数据指定主键(又称主码),包含表中的一列或者多列,能够唯一标识表中的一行记录。同时,主键列的数据必须唯一,并且不能为空。主键可以分为单列主键和多列联合主键。
2.1单列主键
语法格式:字段 数据类型 PRIMARY KEY [默认值]
eg.(1)创建名称为 students2的数据表,并在创建时的同时指定id主键。
mysql> create table students2(
-> id int primary key,
-> s_id int,
-> name varchar(30));
Query OK, 0 rows affected (0.02 sec)
(2)定义完数据表中的所有列之后指定主键
语法格式:[CONSTRAINT 约束条件名] PRIMARY KEY [字段名]
mysql> create table students2(
-> id int,
-> s_id int,
-> name varchar(30)),
->primary key(id) ;
Query OK, 0 rows affected (0.02 sec)
2.2多列联合主键
语法格式:PRIMARY KEY [字段1, 字段2,字段3]
注意:多列联合主键只能在定义完数据表的所有列之后进行指定