请选择 进入手机版 | 继续访问电脑版

牛大大的个人博客

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1382|回复: 2

MySQL创建数据表(CREATE TABLE语句)

[复制链接]

149

主题

201

帖子

643

积分

版主

Rank: 7Rank: 7Rank: 7

积分
643
发表于 2020-5-10 21:10:48 | 显示全部楼层 |阅读模式
MySQL创建数据表(CREATE TABLE语句)

基本语法
在 MySQL 中,可以使用 CREATE TABLE 语句创建表。其语法格式为:
CREATE TABLE <表名> ([表定义选项])[表选项][分区选项];

其中,[表定义选项]的格式为:
<列名1> <类型1> [,…] <列名n> <类型n>

CREATE TABLE 命令语法比较多,其主要是由表创建定义(create-definition)、表选项(table-options)和分区选项(partition-options)所组成的。

CREATE TABLE 语句的主要语法及使用说明如下:
CREATE TABLE:用于创建给定名称的表,必须拥有表CREATE的权限。
<表名>:指定要创建表的名称,在 CREATE TABLE 之后给出,必须符合标识符命名规则。表名称被指定为 db_name.tbl_name,以便在特定的数据库中创建表。无论是否有当前数据库,都可以通过这种方式创建。在当前数据库中创建表时,可以省略 db-name。如果使用加引号的识别名,则应对数据库和表名称分别加引号。例如,'mydb'.'mytbl' 是合法的,但 'mydb.mytbl' 不合法。
<表定义选项>:表创建定义,由列名(col_name)、列的定义(column_definition)以及可能的空值说明、完整性约束或表索引组成。
默认的情况是,表被创建到当前的数据库中。若表已存在、没有当前数据库或者数据库不存在,则会出现错误。
提示:使用 CREATE TABLE 创建表时,必须指定以下信息:

要创建的表的名称不区分大小写,不能使用SQL语言中的关键字,如DROP、ALTER、INSERT等。
数据表中每个列(字段)的名称和数据类型,如果创建多个列,要用逗号隔开。
在指定的数据库中创建表
数据表属于数据库,在创建数据表之前,应使用语句“USE<数据库>”指定操作在哪个数据库中进行,如果没有选择数据库,就会抛出 No database selected 的错误。

【实例 1】创建员工表 tb_emp1,结构如下表所示。

字段名称        数据类型        备注
id                INT(ll)                   员工编号
name        VARCHAR(25)           员工名称
deptld        INT(ll)                   所在部门编号
salary        FLOAT                   工资
选择创建表的数据库 test_db,创建 tb_emp1 数据表,输入的 SQL 语句和运行结果如下所示。
  1. mysql> USE test_db;
  2. Database changed
  3. mysql> CREATE TABLE tb_emp1
  4.     -> (
  5.     -> id INT(11),
  6.     -> name VARCHAR(25),
  7.     -> deptId INT(11),
  8.     -> salary FLOAT
  9.     -> );
  10. Query OK, 0 rows affected (0.37 sec)
复制代码

语句执行后,便创建了一个名称为 tb_emp1 的数据表,使用 SHOW TABLES;语句查看数据表是否创建成功,如下所示。
  1. mysql> SHOW TABLES;
  2. +--------------------+
  3. | Tables_in_test_db  |
  4. +--------------------+
  5. | tb_emp1            |
  6. +--------------------+
  7. 1 rows in set (0.00 sec)
复制代码

查看表结构
在 MySQL 中,使用 SQL 语句创建好数据表之后,可以查看结构的定义,以确认表的定义是否正确。在 MySQL 中,查看表结构可以使用 DESCRIBE 和 SHOW CREATE TABLE 语句。

DESCRIBE/DESC 语句可以查看表的字段信息,包括字段名、字段数据类型、是否为主键、是否有默认值等,语法规则如下:
DESCRIBE <表名>;
或简写成:
DESC <表名>;

【实例 2】使用 DESCRIBE 查看表 tb_emp1 的结构,输入的 SQL 语句和运行结果如下所示。
  1. mysql> DESCRIBE tb_emp1;
  2. +--------+-------------+------+-----+---------+-------+
  3. | Field  | Type        | Null | Key | Default | Extra |
  4. +--------+-------------+------+-----+---------+-------+
  5. | id     | int(11)     | YES  |     | NULL    |       |
  6. | name   | varchar(25) | YES  |     | NULL    |       |
  7. | deptId | int(11)     | YES  |     | NULL    |       |
  8. | salary | float        | YES  |     | NULL    |       |
  9. +--------+-------------+------+-----+---------+-------+
  10. 4 rows in set (0.14 sec)
复制代码

其中,各个字段的含义如下:
Null:表示该列是否可以存储 NULL 值。
Key:表示该列是否已编制索引。PRI 表示该列是表主键的一部分,UNI 表示该列是 UNIQUE 索引的一部分,MUL 表示在列中某个给定值允许出现多次。
Default:表示该列是否有默认值,如果有,值是多少。
Extra:表示可以获取的与给定列有关的附加信息,如 AUTO_INCREMENT 等。

SHOW CREATE TABLE语句可以用来显示创建表时的CREATE TABLE语句,语法格式如下:
SHOW CREATE TABLE <表名>\G;
【实例 3】使用 SHOW CREATE TABLE 查看表 tb_emp1 的详细信息,输入的 SQL 语句和运行结果如下所示。
  1. mysql> SHOW CREATE TABLE tb_emp1\G
  2.        Table: tb_emp1
  3. Create Table: CREATE TABLE `tb_emp1` (
  4.   `id` int(11) DEFAULT NULL,
  5.   `name` varchar(25) DEFAULT NULL,
  6.   `deptId` int(11) DEFAULT NULL,
  7.   `salary` float DEFAULT NULL
  8. ) ENGINE=InnoDB DEFAULT CHARSET=gb2312
  9. 1 row in set (0.03 sec)
复制代码

提示:使用 SHOW CREATE TABLE 语句不仅可以查看创建表时的详细语句,而且可以查看存储引擎和字符编码。如果不加“\G”参数,显示的结果可能非常混乱,加上“\G”参数之后,可使显示的结果更加直观,易于查看。

回复

使用道具 举报

149

主题

201

帖子

643

积分

版主

Rank: 7Rank: 7Rank: 7

积分
643
 楼主| 发表于 2020-5-10 21:32:32 | 显示全部楼层
MySQL 创建数据表
CREATE TABLE table_name (column_name column_type);
  1. CREATE TABLE IF NOT EXISTS `runoob_tbl`(
  2.    `runoob_id` INT UNSIGNED AUTO_INCREMENT,
  3.    `runoob_title` VARCHAR(100) NOT NULL,
  4.    `submission_date` DATE,
  5.    PRIMARY KEY ( `runoob_id` ),
复制代码
  1. CREATE TABLE zy_article(
  2.     art_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT  COMMENT '编号',
  3.     type_id INT UNSIGNED  COMMENT '类型号',
  4.     title VARCHAR(50) NOT NULL DEFAULT '' COMMENT '标题' ,
  5.     article_label VARCHAR(64) NOT NULL DEFAULT '' COMMENT '标签',
  6.     create_time INT(10) NOT NULL DEFAULT 0,
  7.     INDEX (type_id)
  8. );
复制代码

COMMENT:注释,备注
DEFAULT :缺省值
UNSIGNED:是无符号的意思,代表该字段没有正负。
AUTO_INCREMENT:定义列为自增的属性,一般用于主键,数值会自动加1。
NOT NULL:如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL
ENGINE :设置存储引擎,CHARSET 设置编码。
PRIMARY KEY:主键索引,关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
unique:唯一索引
key:普通索引
index:普通索引

回复

使用道具 举报

149

主题

201

帖子

643

积分

版主

Rank: 7Rank: 7Rank: 7

积分
643
 楼主| 发表于 2020-5-10 21:48:53 | 显示全部楼层
本帖最后由 牛大舅 于 2020-5-10 21:54 编辑
  1. mysql> use my_home_01;
  2. Database changed
  3. mysql> create table if not exists myhome_01(
  4.     -> id int unsigned auto_increment primary key,
  5.     -> name varchar(20) not null  comment '名称',
  6.     -> age int unsigned not null default 1 comment '年龄',
  7.     -> sex varchar(2) not null comment '性别'
  8.     -> );
复制代码
  1. mysql> describe  myhome_01;
  2. +-------+------------------+------+-----+---------+----------------+
  3. | Field | Type             | Null | Key | Default | Extra          |
  4. +-------+------------------+------+-----+---------+----------------+
  5. | id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
  6. | name  | varchar(20)      | NO   |     | NULL    |                |
  7. | age   | int(10) unsigned | NO   |     | 1       |                |
  8. | sex   | varchar(2)       | NO   |     | NULL    |                |
  9. +-------+------------------+------+-----+---------+----------------+
  10. 4 rows in set (0.00 sec)

  11. mysql>
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|牛大大的个人博客 ( 苏ICP备17043571号-2 )

GMT+8, 2021-6-15 12:46 , Processed in 0.200761 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表