跳到主要内容

十四、MySQL 创建数据表

MySQL 可以使用 CREATE TABLE SQL 语句创建表

创建MySQL 数据表需要 表名表字段名定义每个表字段

CREATE TABLE 语句语法

下面的SQL 语句为创建 MySQL 数据表的通用语法

CREATE TABLE table_name (column_name column_type);

例如下面的 SQL 语句将在 souyunku 数据库中创建 tbl_language

CREATE TABLE IF NOT EXISTS tbl_language(
id INT UNSIGNED AUTO_INCREMENT,
name VARCHAR(64) NOT NULL,
url VARCHAR(128) NOT NULL,
founded_at DATE,
PRIMARY KEY ( id )
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  • 如果不想字段为 NULL 可以设置字段的属性为 NOT NULL

往表中插入数据时,如果输入该字段的数据为 NULL ,就会报错

  • AUTO_INCREMENT 定义列为自增的属性,一般用于主键,数值会自动加 1
  • PRIMARY KEY 关键字用于定义列为主键

可以使用多列来定义主键,列间以逗号分隔

  • ENGINE 设置存储引擎
  • CHARSET 设置编码

通过命令提示符创建表

可以在mysql> 命令行窗口中使用 SQL 语句 CREATE TABLE 来创建数据表

下面的操作在 souyunku 数据库中创建 languages

以下为创建数据表 pottercoding.cn 程序员波特,程序员编程资料站_tbl 实例:

[root@pottercoding.cn ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 18
Server version: 10.2.13-MariaDB Homebrew
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> use souyunku;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [souyunku]>` CREATE TABLE IF NOT EXISTS tbl_language(
->` id INT UNSIGNED AUTO_INCREMENT,
->` name VARCHAR(64) NOT NULL,
->` url VARCHAR(128) NOT NULL,
->` founded_at DATE,
->` PRIMARY KEY ( id )
-> )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Query OK, 0 rows affected (0.03 sec)
MariaDB [souyunku]> show tables;
+----------------+
| Tables_in_souyunku |
+----------------+
| customer |
| sites |
| tbl_language |
+----------------+
3 rows in set (0.00 sec)
MariaDB [souyunku]> DESC tbl_language;
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(64) | NO | | NULL | |
| url | varchar(128) | NO | | NULL | |
| founded_at | date | YES | | NULL | |
+------------+------------------+------+-----+---------+----------------+
4 rows in set (0.02 sec)