首页 > 编程笔记 > MySQL笔记 阅读:310

SQL CREATE TABLE创建数据表的用法(附带实例)

数据库创建完成后就要创建数据表了,其实创建数据表的过程就是在规定存储什么类型的数据和按什么格式存储。

创建数据表之前要先用 USE 命令指定数据库,这个操作的目的是告诉数据库系统:“我要在这个数据库中创建表”。若没有执行这项操作就直接创建数据表,数据库会显示“No database selected”的错误提示。

MySQL/MariaDB 数据库中,创建表需要使用 CREATE TABLE 命令,其语法格式为:
CREATE TABLE [IF NOT EXISTS]表名称(
字段名称 数据类型[(宽度)] [字段属性|约束] [索引] [注释],
字段名称 数据类型[字段属性|约束] [索引] [注释],
...
)[ENGINE=存储引擎] [CHARSET=编码方式];

[ ] 中的内容是可选的;语句中的逗号一定要是英文的逗号,不能是中文的;最后一行定义字段不能有逗号。

语句中每段的具体含义如下:
配置项 功能
PRIMARY KEY 主键约束,表示唯一标识,且一个表中只能有一个主键。拥有主键约束的字段(列)不能为空,而且不能有重复的值,一般用来约束 ID 之类的内容,例如,学生信息表中的学号是唯一的。
UNIQUE KEY 唯一约束,表示该字段下的值不能重复,能够确保列的唯一性。与主键约束不同的是,唯一约束在一个表中可以有多个,并且设置唯一约束的列是允许有空值的,虽然只能有一个空值。
FOREIGN KEY 外键约束,目的是保证数据的完整性和唯一性,以及实现一对一或一对多关系。外键约束经常和主键约束一起使用,用来确保数据的一致性。
NOT NULL 非空约束,表示该字段下的值不能为空。
AUTO_INCREMENT 自增长,只能用于数值列,配合索引使用,默认起始值从 1 开始,每次增加 1。
UNSIGNED 数据类型为无符号,值从 0 开始,无负数
ZEROFILL 零填充,当数据的显示长度不够的时候可以使用在数据前补 0 的方式填充至指定长度,字段会自动添加“UNSIGNED”
DEFAULT 表示如果插入数据时没有给该字段赋值,那么就使用默认值


在整张表中,设为自增长约束条件的字段必须是主键。数据宽度和约束条件的关系:数据宽度用于限制数据的存储,约束条件是在宽度的基础之上增加的额外的约束。

接下来就让我们登录到 MariaDB 数据库中创建一个表,这个表根据学生成绩信息表创建,表头有 ID、学生姓名和英语、数学、地理 3 门课的考试成绩。
[root@linux ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.6.5-MariaDB Source distribution

Copyright (c) 2000, 2000, 2000, 2000, 2000, 2000, 2000, MariaDB Corporation Ab and others.

Type 'help;' or 'h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database test01;  #创建数据库
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> show databases;
+---------------+
| Database       |
+---------------+
| information_schema |
| mysql        |
| performance_schema |
| sys         |
| test01       |
+---------------+
5 rows in set (0.001 sec)

MariaDB [(none)]> use test01;  #指定此数据库,在这个库中创建表
Database changed
MariaDB [test01]> create table stu_score (
    -> stu_id int not null,
    -> name varchar(20) primary key,
    -> english char(3) not null,
    -> mathematics char(3),
    -> geography char(3) not null
    -> );
Query OK, 0 rows affected (0.004 sec)
MariaDB [test01]>
可以看到,我们使用 CREATE TABLE 命令创建了一个名为 stu_score 的表,在这张表中共添加了 5 个字段:

相关文章