IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 数据库系统原理与应用教程(023)—— MySQL 创建数据表的各种方法总结 -> 正文阅读

[大数据]数据库系统原理与应用教程(023)—— MySQL 创建数据表的各种方法总结

数据库系统原理与应用教程(023)—— MySQL 创建数据表的各种方法总结

MySQL 的数据表是最终保存数据的场所,在数据库中,所有的数据都保存在数据表中。创建数据表需要做三件事:

(1)定义数据表中所包含的列,包括:列名、数据类型、数据的完整性约束;

(2)定义数据表选项,包括:存储引擎,字符集;

(3)定义表分区选项。

可使用三种方式创建表:

一、使用 create table 命令创建数据表

create table 命令的语法如下:

create [temporary] table [if not exists]  <表名>([列定义选项])
[表选项]
[分区选项];

-----------------------------------------------------------------------------------------
[列定义选项]的格式为:
                  <列名1> <类型> <数据完整性约束>
                  [, <列名2> <类型> <数据完整性约束>
                  [, ...
                  [, <列名n> <类型n> <数据完整性约束>]]]
<数据完整性约束>的格式:
                    [NOT NULL | NULL]        -- 非空约束
                    [DEFAULT default_value]  -- 默认值
                    [AUTO_INCREMENT]         -- 定义为自增列(类型必须是整型)
                    [PRIMARY KEY]            -- 主键
                    [[unique] index|key index_name field_name(length)]  -- 索引,唯一索引
                    [foreign KEY(column_name) REFERENCES table_name(column_name))]  
                                             -- 定义外键
                    [COMMENT 'string']       -- 为字段添加注释             
[表选项]的格式为:
               ENGINE = engine_name(存储引擎的名称)   -- 指定存储引擎
                                                      -- 常用的存储引擎有 InnoDB 和 MyISAM
               AUTO_INCREMENT = value                 -- 设置自增字段的起始值
               [DEFAULT] CHARACTER SET charset_name(字符集名称) --设置字符集
               [COLLATE collation_name(校对集名称)]  -- 设置校对集
               COMMENT = 'string'                     -- 表注释
/*
参数说明:
(1)temporary:表示创建临时表。只有在当前连接情况下,TEMPORARY 表才是可见的。当连接关闭时,TEMPORARY 表被自动取消。这意味着两个不同的连接可以使用相同的临时表名称,同时两个临时表不会互相冲突,也不与原有的同名的非临时表冲突。
(2)IF NOT EXISTS:如果加了该选项,只有在要创建的表不存在的情况下,才创建该表。如果要创建的表已经存在,则不执行 create table 命令。
(3)表名:如果只指定表名,则把表创建到当前数据库中,可以使用【db_name.table_name】格式指定表名,则把表创建到指定的数据库中。
*/

例子:

1、定义主键

/*
create table t1(
    id int primary key,
    name char(20)
);

create table t2(
    s_id int,
    c_id int,
    grade int,
    primary key(s_id, c_id)
);
*/
-- 单列主键
mysql> create table t1(
    ->     id int primary key,
    ->     name char(20)
    -> );
Query OK, 0 rows affected (0.03 sec)

-- 多列主键
mysql> create table t2(
    ->     s_id int,
    ->     c_id int,
    ->     grade int,
    ->     primary key(s_id, c_id)
    -> );
Query OK, 0 rows affected (0.02 sec)

2、定义外键

/*
create table dept(
    dept_id int primary key,
    dept_name char(20)
);

create table stu(
    stu_id int primary key,
    stu_name char(20),
    dept_id int,
    foreign key(dept_id) references dept(dept_id)
);
*/

-- 被参照关系
mysql> create table dept(
    ->     dept_id int primary key,
    ->     dept_name char(20)
    -> );
Query OK, 0 rows affected (0.02 sec)

-- 参照关系,外键为 dept_id,参照 dept 表的 dept_id 取值
mysql> create table stu(
    ->     stu_id int primary key,
    ->     stu_name char(20),
    ->     dept_id int,
    ->     foreign key(dept_id) references dept(dept_id)
    -> );
Query OK, 0 rows affected (0.07 sec)

3、非空约束

/*
create table t21(
    id int primary key,
    name char(20) not null,
    gender char(1),
    birth datetime not null,
    phone char(20) not null
);
*/

mysql> create table t21(
    ->     id int primary key,
    ->     name char(20) not null,
    ->     gender char(1),
    ->     birth datetime not null,
    ->     phone char(20) not null
    -> );
Query OK, 0 rows affected (1.82 sec)

4、自增列

/*
create table t22(
    id int auto_increment primary key,
    name char(20) not null,
    gender char(1),
    birth datetime not null,
    phone char(20) not null
);
*/

mysql> insert into t22(name,gender,birth,phone) values('张云','女','1988-1-22','13503732544');
Query OK, 1 row affected (0.00 sec)

mysql> select * from t22;
+----+--------+--------+---------------------+-------------+
| id | name   | gender | birth               | phone       |
+----+--------+--------+---------------------+-------------+
|  1 | 张云   || 1988-01-22 00:00:00 | 13503732544 |
+----+--------+--------+---------------------+-------------+
1 row in set (0.00 sec)

-- 定义自增列的初始值
/*
create table t23(
    id int auto_increment primary key,
    name char(20) not null,
    gender char(1),
    birth datetime not null,
    phone char(20) not null
) 
auto_increment = 1001;
*/

mysql> create table t23(
    ->     id int auto_increment primary key,
    ->     name char(20) not null,
    ->     gender char(1),
    ->     birth datetime not null,
    ->     phone char(20) not null
    -> ) 
    -> auto_increment = 1001;
Query OK, 0 rows affected (0.06 sec)

mysql> insert into t23(name,gender,birth,phone) values('张云','女','1988-1-22','13503732544');
Query OK, 1 row affected (0.02 sec)

mysql> select * from t23;
+------+--------+--------+---------------------+-------------+
| id   | name   | gender | birth               | phone       |
+------+--------+--------+---------------------+-------------+
| 1001 | 张云   || 1988-01-22 00:00:00 | 13503732544 |
+------+--------+--------+---------------------+-------------+
1 row in set (0.00 sec)

5、索引

/*
create table t24(
    id int auto_increment primary key,
    name char(20) not null,
    gender char(1),
    birth datetime not null,
    phone char(20) not null,
    dept_name char(20),
    addr varchar(200),
    index (name),              
    unique index(phone),       
    key idx_dept_birth(dept_name,birth),
    key idx_addr(addr(12))
);
*/

mysql> create table t24(
    ->     id int auto_increment primary key,
    ->     name char(20) not null,
    ->     gender char(1),
    ->     birth datetime not null,
    ->     phone char(20) not null,
    ->     dept_name char(20),
    ->     addr varchar(200),
    ->     index (name),           -- 没有指定索引的名称,则字段名就是索引名
    ->     unique index(phone),    -- 唯一索引
    ->     key idx_dept_birth(dept_name,birth),  -- 多列索引
    ->     key idx_addr(addr(12))  -- 根据 addr 字段的左边12个字符创建索引
    -> );
Query OK, 0 rows affected (0.03 sec)

mysql> desc t24;
+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| id        | int(11)      | NO   | PRI | NULL    | auto_increment |
| name      | char(20)     | NO   | MUL | NULL    |                |
| gender    | char(1)      | YES  |     | NULL    |                |
| birth     | datetime     | NO   |     | NULL    |                |
| phone     | char(20)     | NO   | UNI | NULL    |                |
| dept_name | char(20)     | YES  | MUL | NULL    |                |
| addr      | varchar(200) | YES  | MUL | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+
7 rows in set (0.06 sec)

mysql> show create table t24\G
*************************** 1. row ***************************
       Table: t24
Create Table: CREATE TABLE `t24` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL,
  `gender` char(1) DEFAULT NULL,
  `birth` datetime NOT NULL,
  `phone` char(20) NOT NULL,
  `dept_name` char(20) DEFAULT NULL,
  `addr` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `phone` (`phone`),
  KEY `name` (`name`),
  KEY `idx_dept_birth` (`dept_name`,`birth`),
  KEY `idx_addr` (`addr`(12))
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.01 sec)

6、默认值

/*
create table t25(
    id int primary key auto_increment,
    name char(20),
    gender char(1) default '男',
    createtime datetime default now(),
    phone char(20),
    addr varchar(200)
);
*/
mysql> create table t25(
    ->     id int primary key auto_increment,
    ->     name char(20),
    ->     gender char(1) default '男',
    ->     createtime datetime default now(),
    ->     phone char(20),
    ->     addr varchar(200)
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> desc t25;
+------------+--------------+------+-----+-------------------+----------------+
| Field      | Type         | Null | Key | Default           | Extra          |
+------------+--------------+------+-----+-------------------+----------------+
| id         | int(11)      | NO   | PRI | NULL              | auto_increment |
| name       | char(20)     | YES  |     | NULL              |                |
| gender     | char(1)      | YES  |     ||                |
| createtime | datetime     | YES  |     | CURRENT_TIMESTAMP |                |
| phone      | char(20)     | YES  |     | NULL              |                |
| addr       | varchar(200) | YES  |     | NULL              |                |
+------------+--------------+------+-----+-------------------+----------------+
6 rows in set (0.01 sec)

mysql> insert into t25(name,phone,addr) values('张平','13637351245','河南省新乡市');
Query OK, 1 row affected (0.36 sec)

mysql> select * from t25;
+----+--------+--------+---------------------+-------------+--------------------+
| id | name   | gender | createtime          | phone       | addr               |
+----+--------+--------+---------------------+-------------+--------------------+
|  1 | 张平   || 2022-07-16 15:06:23 | 13637351245 | 河南省新乡市       |
+----+--------+--------+---------------------+-------------+--------------------+
1 row in set (0.00 sec)

7、字段注释

/*
create table t26(
    id int primary key auto_increment comment '编号',
    name char(20) comment '姓名',
    gender char(1) default '男' comment '性别',
    createtime datetime default now()  comment '插入日期',
    phone char(20) comment '电话',
    addr varchar(200) comment '地址'
);
*/

mysql> show create table t26\G
*************************** 1. row ***************************
       Table: t26
Create Table: CREATE TABLE `t26` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',
  `name` char(20) DEFAULT NULL COMMENT '姓名',
  `gender` char(1) DEFAULT '男' COMMENT '性别',
  `createtime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '插入日期',
  `phone` char(20) DEFAULT NULL COMMENT '电话',
  `addr` varchar(200) DEFAULT NULL COMMENT '地址',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

8、添加表注释

/*
create table t31(
    id int primary key,
    name char(20)
)
comment '测试表';
*/
mysql> create table t31(
    ->     id int primary key,
    ->     name char(20)
    -> )
    -> comment '测试表';
Query OK, 0 rows affected (1.83 sec)

mysql> show create table t31\G
*************************** 1. row ***************************
       Table: t31
Create Table: CREATE TABLE `t31` (
  `id` int(11) NOT NULL,
  `name` char(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试表'
1 row in set (0.00 sec)

9、设置表的存储引擎(默认为 innodb)

mysql> create table t41(id int);
Query OK, 0 rows affected (1.50 sec)

mysql> show create table t41\G
*************************** 1. row ***************************
       Table: t41
Create Table: CREATE TABLE `t41` (
  `id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

mysql> create table t42(id int) engine=myisam;
Query OK, 0 rows affected (0.04 sec)

mysql> show create table t42\G
*************************** 1. row ***************************
       Table: t42
Create Table: CREATE TABLE `t42` (
  `id` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.05 sec)

10、设置表所用的字符集(默认和数据库相同)

mysql> create table t51(id int);
Query OK, 0 rows affected (0.03 sec)

mysql> show create table t51\G
*************************** 1. row ***************************
       Table: t51
Create Table: CREATE TABLE `t51` (
  `id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

mysql> create table t52(id int) default charset=latin1;
Query OK, 0 rows affected (0.02 sec)

mysql> show create table t52\G
*************************** 1. row ***************************
       Table: t52
Create Table: CREATE TABLE `t52` (
  `id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

二、在原有表的基础上定义新表

使用 create table like 命令可以利用一个已经存在的表创建一个新表。语法如下:

-- 使用该命令可以创建一个和原数据表结构完全相同的新表,但不会复制原数据表中的数据。
create [temporary] table [if not exists] table_name
like old_tbale_name; 

例如:

/*
create table t61(
    id int auto_increment primary key,
    name char(20) not null,
    gender char(1),
    birth datetime not null,
    phone char(20) not null,
    dept_name char(20),
    addr varchar(200),
    index (name),              
    unique index(phone),       
    key idx_dept_birth(dept_name,birth),
    key idx_addr(addr(12))
);
*/
mysql> create table t61(
    ->     id int auto_increment primary key,
    ->     name char(20) not null,
    ->     gender char(1),
    ->     birth datetime not null,
    ->     phone char(20) not null,
    ->     dept_name char(20),
    ->     addr varchar(200),
    ->     index (name),              
    ->     unique index(phone),       
    ->     key idx_dept_birth(dept_name,birth),
    ->     key idx_addr(addr(12))
    -> );
Query OK, 0 rows affected (1.51 sec)

mysql> insert into t61(name,gender,birth,phone,dept_name,addr) 
    -> values('张华','男','1998-10-8','13937325888','销售部','河南省新乡市');
Query OK, 1 row affected (0.22 sec)

mysql> show create table t61\G
*************************** 1. row ***************************
       Table: t61
Create Table: CREATE TABLE `t61` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL,
  `gender` char(1) DEFAULT NULL,
  `birth` datetime NOT NULL,
  `phone` char(20) NOT NULL,
  `dept_name` char(20) DEFAULT NULL,
  `addr` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `phone` (`phone`),
  KEY `name` (`name`),
  KEY `idx_dept_birth` (`dept_name`,`birth`),
  KEY `idx_addr` (`addr`(12))
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

mysql> select * from t61;
+----+--------+--------+---------------------+-------------+-----------+--------------------+
| id | name   | gender | birth               | phone       | dept_name | addr               |
+----+--------+--------+---------------------+-------------+-----------+--------------------+
|  1 | 张华   || 1998-10-08 00:00:00 | 13937325888 | 销售部    | 河南省新乡市       |
+----+--------+--------+---------------------+-------------+-----------+--------------------+
1 row in set (0.00 sec)

-- 根据表 t61 创建表 t62
mysql> create table t62 like t61;
Query OK, 0 rows affected (0.08 sec)

mysql> show create table t62\G
*************************** 1. row ***************************
       Table: t62
Create Table: CREATE TABLE `t62` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL,
  `gender` char(1) DEFAULT NULL,
  `birth` datetime NOT NULL,
  `phone` char(20) NOT NULL,
  `dept_name` char(20) DEFAULT NULL,
  `addr` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `phone` (`phone`),
  KEY `name` (`name`),
  KEY `idx_dept_birth` (`dept_name`,`birth`),
  KEY `idx_addr` (`addr`(12))
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.01 sec)

-- 表 t62 中没有数据
mysql> select * from t62;
Empty set (0.00 sec)

三、使用 select 查询的结果创建表

可以利用一个 select 查询的结果创建一张新表。语法如下:

-- 使用此命令可以根据查询结果创建一张新表,并且把查询到的数据插入到新建的表中。
create [temporary] table [if not exists] table_name
    [(create_definition,...)]
    [table_options]
    [partition_options]
    [ignore | replace]
    [as] query_expression

例如:

1、使用查询结果创建一张新表,表结构和查询相同

/*
create table emp(
    e_id int primary key,
    e_name char(20) not null,
    gender enum('男','女'),
    phone char(20) not null,
    salary int,
    addr varchar(200)
);
*/
mysql> create table emp(
    ->     e_id int primary key,
    ->     e_name char(20) not null,
    ->     gender enum('男','女'),
    ->     phone char(20) not null,
    ->     salary int,
    ->     addr varchar(200)
    -> );
Query OK, 0 rows affected (0.04 sec)

insert into emp values(1001,'张静静','女','13737325699',5200,'河南省新乡市');
insert into emp values(1002,'张学有','男','13737327788',8500,'河南省新乡市');
insert into emp values(1003,'刘得华','男','13737326688',6400,'河南省开封市');
insert into emp values(1004,'麻花藤','男','13737329988',9200,'河南省商丘市');
insert into emp values(1005,'刘晓庆','女','13737328877',6800,'河南省开封市');
insert into emp values(1006,'码云','男','13737326688',4900,'河南省新乡市');
insert into emp values(1007,'张朝阳','男','13737324567',8600,'河南省郑州市');
insert into emp values(1008,'巩利利','女','13737328888',6300,'河南省新乡市');
insert into emp values(1009,'张云','女','13637326666',7400,'河南省郑州市');

mysql> select * from emp;
+------+-----------+--------+-------------+--------+--------------------+
| e_id | e_name    | gender | phone       | salary | addr               |
+------+-----------+--------+-------------+--------+--------------------+
| 1001 | 张静静    || 13737325699 |   5200 | 河南省新乡市       |
| 1002 | 张学有    || 13737327788 |   8500 | 河南省新乡市       |
| 1003 | 刘得华    || 13737326688 |   6400 | 河南省开封市       |
| 1004 | 麻花藤    || 13737329988 |   9200 | 河南省商丘市       |
| 1005 | 刘晓庆    || 13737328877 |   6800 | 河南省开封市       |
| 1006 | 码云      || 13737326688 |   4900 | 河南省新乡市       |
| 1007 | 张朝阳    || 13737324567 |   8600 | 河南省郑州市       |
| 1008 | 巩利利    || 13737328888 |   6300 | 河南省新乡市       |
| 1009 | 张云      || 13637326666 |   7400 | 河南省郑州市       |
+------+-----------+--------+-------------+--------+--------------------+
9 rows in set (0.02 sec)

mysql> create table t81 as select * from emp where addr='河南省新乡市';
Query OK, 4 rows affected (0.13 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> show create table t81\G
*************************** 1. row ***************************
       Table: t81
Create Table: CREATE TABLE `t81` (
  `e_id` int(11) NOT NULL,
  `e_name` char(20) NOT NULL,
  `gender` enum('男','女') DEFAULT NULL,
  `phone` char(20) NOT NULL,
  `salary` int(11) DEFAULT NULL,
  `addr` varchar(200) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

mysql> select * from t81;
+------+-----------+--------+-------------+--------+--------------------+
| e_id | e_name    | gender | phone       | salary | addr               |
+------+-----------+--------+-------------+--------+--------------------+
| 1001 | 张静静    || 13737325699 |   5200 | 河南省新乡市       |
| 1002 | 张学有    || 13737327788 |   8500 | 河南省新乡市       |
| 1006 | 码云      || 13737326688 |   4900 | 河南省新乡市       |
| 1008 | 巩利利    || 13737328888 |   6300 | 河南省新乡市       |
+------+-----------+--------+-------------+--------+--------------------+
4 rows in set (0.00 sec)

2、使用查询结果创建一张新表,并且重新定义表结构

/*
create table t82(
    e_id int primary key,
    e_name char(20),
    addr char(100)
) engine = myisam
as
select e_id,e_name,addr
from emp
where gender='女';
*/
mysql> create table t82(
    ->     e_id int primary key,
    ->     e_name char(20),
    ->     addr char(100)
    -> ) engine = myisam
    -> as
    -> select e_id,e_name,addr
    -> from emp
    -> where gender='女';
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> show create table t82\G
*************************** 1. row ***************************
       Table: t82
Create Table: CREATE TABLE `t82` (
  `e_id` int(11) NOT NULL,
  `e_name` char(20) DEFAULT NULL,
  `addr` char(100) DEFAULT NULL,
  PRIMARY KEY (`e_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

mysql> select * from t82;
+------+-----------+--------------------+
| e_id | e_name    | addr               |
+------+-----------+--------------------+
| 1001 | 张静静    | 河南省新乡市       |
| 1005 | 刘晓庆    | 河南省开封市       |
| 1008 | 巩利利    | 河南省新乡市       |
| 1009 | 张云      | 河南省郑州市       |
+------+-----------+--------------------+
4 rows in set (0.00 sec)

四、MySQL 常用的操作表的命令

1、查看当前数据库中的数据表

语法格式如下:

show tables;

例如:

mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| dept           |
| emp            |
| stu            |
| t1             |
| t2             |
| t21            |
| t22            |
| t23            |
| t24            |
| t25            |
| t26            |
| t31            |
| t41            |
| t42            |
| t51            |
| t52            |
| t61            |
| t62            |
| t81            |
| t82            |
+----------------+
20 rows in set (0.02 sec)

2、删除数据表

语法格式如下:

drop table 表名;

例如:

mysql> drop table t1;
Query OK, 0 rows affected (0.01 sec)

mysql> drop table t2;
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| dept           |
| emp            |
| stu            |
| t21            |
| t22            |
| t23            |
| t24            |
| t25            |
| t26            |
| t31            |
| t41            |
| t42            |
| t51            |
| t52            |
| t61            |
| t62            |
| t81            |
| t82            |
+----------------+
18 rows in set (0.00 sec)

3、查看表结构

语法格式如下:

describe | desc 表名;

例如:

mysql> desc emp;
+--------+-------------------+------+-----+---------+-------+
| Field  | Type              | Null | Key | Default | Extra |
+--------+-------------------+------+-----+---------+-------+
| e_id   | int(11)           | NO   | PRI | NULL    |       |
| e_name | char(20)          | NO   |     | NULL    |       |
| gender | enum('男','女')   | YES  |     | NULL    |       |
| phone  | char(20)          | NO   |     | NULL    |       |
| salary | int(11)           | YES  |     | NULL    |       |
| addr   | varchar(200)      | YES  |     | NULL    |       |
+--------+-------------------+------+-----+---------+-------+
6 rows in set (0.01 sec)

mysql> describe emp;
+--------+-------------------+------+-----+---------+-------+
| Field  | Type              | Null | Key | Default | Extra |
+--------+-------------------+------+-----+---------+-------+
| e_id   | int(11)           | NO   | PRI | NULL    |       |
| e_name | char(20)          | NO   |     | NULL    |       |
| gender | enum('男','女')   | YES  |     | NULL    |       |
| phone  | char(20)          | NO   |     | NULL    |       |
| salary | int(11)           | YES  |     | NULL    |       |
| addr   | varchar(200)      | YES  |     | NULL    |       |
+--------+-------------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

4、查看创建表的语句

语法格式如下:

show create table 表名;
show create table 表名\G

例如:

mysql> show create table emp;
+-------+---------------------------------------------------------------------------------------------------------------+| Table | Create Table                                       
|+-------+-----------------------------+| emp   | CREATE TABLE `emp` (
  `e_id` int(11) NOT NULL,
  `e_name` char(20) NOT NULL,
  `gender` enum('男','女') DEFAULT NULL,
  `phone` char(20) NOT NULL,
  `salary` int(11) DEFAULT NULL,
  `addr` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`e_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8   |
+-------+------------------------------------------------+
1 row in set (0.00 sec)

mysql> show create table emp\G
*************************** 1. row ***************************
       Table: emp
Create Table: CREATE TABLE `emp` (
  `e_id` int(11) NOT NULL,
  `e_name` char(20) NOT NULL,
  `gender` enum('男','女') DEFAULT NULL,
  `phone` char(20) NOT NULL,
  `salary` int(11) DEFAULT NULL,
  `addr` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`e_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:30:00  更:2022-07-17 16:31:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:31:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码