MySQL利用现有的数据表创建新表

您所在的位置:网站首页 如何用mysql建立数据表结构 MySQL利用现有的数据表创建新表

MySQL利用现有的数据表创建新表

2023-12-14 22:42| 来源: 网络整理| 查看: 265

MySQL利用现有的数据表创建新表

MySQL使用create table可以创建数据表,该命令通过为表指定字段并设置字段的数据类型,也可以设置主键、外键、unique约束、索引、默认值、自增等特性。

使用create table命令除了可以通过定义字段名创建一张新表,还可以在已有表的基础上创建新表。比如已经创建了emp(员工)表,并输入了数据。

create table emp( emp_id int primary key auto_increment comment '员工号', emp_name char(20) not null default '' comment '员工姓名', gender char(2) not null default '男' comment '性别', birth datetime not null default '1990-1-1' comment '出生日期', salary decimal(10,2) not null default 0 comment '工资', address varchar(200) not null default '' comment '通讯地址', dept_name char(20) comment '部门' ); insert into emp(emp_name,gender,birth,salary,address,dept_name) values('张晓红','女','1980-1-23',5800,'河南省郑州市中原路10号','销售部'), ('张静静','女','1987-10-3',5400,'河南省新乡市平原路38号','销售部'), ('王云飞','男','1992-11-15',5600,'河南省新乡市人民路28号','销售部'), ('王鹏飞','男','1987-10-1',6800,'河南省新乡市东明大道12号','销售部'), ('王大鹏','男','1989-2-11',5900,'河南省郑州市东风路15号','生产制造部'), ('王萌萌','女','1986-12-30',5000,'河南省开封市五一路14号','生产制造部'), ('王大光','男','1988-11-8',6200,'河南省开封市八一路124号','生产制造部'), ('王小明','男','1998-1-3',4800,'河南省驻马店市雪松路128号','生产制造部'), ('王娜娜','女','1994-3-5',5200,'河南省驻马店市车站路2号','生产制造部'), ('刘云飞','男','1992-8-13',6800,'河南省南阳市民生路255号','人事部'), ('张陆军','男','1991-9-6',6200,'河南省南阳市张仲景路14号','人事部'); 一、根据emp表结构创建新表

命令如下:

create table new_tablename like old_tablename; create table employee like emp;

查看结果:

mysql> select * from employee; Empty set (0.00 sec) mysql> desc emp; +-----------+---------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+---------------+------+-----+---------------------+----------------+ | emp_id | int(11) | NO | PRI | NULL | auto_increment | | emp_name | char(20) | NO | | | | | gender | char(2) | NO | | 男 | | | birth | datetime | NO | | 1990-01-01 00:00:00 | | | salary | decimal(10,2) | NO | | 0.00 | | | address | varchar(200) | NO | | | | | dept_name | char(20) | YES | | NULL | | +-----------+---------------+------+-----+---------------------+----------------+ 7 rows in set (0.00 sec) mysql> desc employee; +-----------+---------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+---------------+------+-----+---------------------+----------------+ | emp_id | int(11) | NO | PRI | NULL | auto_increment | | emp_name | char(20) | NO | | | | | gender | char(2) | NO | | 男 | | | birth | datetime | NO | | 1990-01-01 00:00:00 | | | salary | decimal(10,2) | NO | | 0.00 | | | address | varchar(200) | NO | | | | | dept_name | char(20) | YES | | NULL | | +-----------+---------------+------+-----+---------------------+----------------+ 7 rows in set (0.00 sec)

利用select命令可以看到,employee表为空表;利用desc命令可以看到,employee表结构和emp表完全相同。

二、根据另一个表的查询结果创建新表

命令如下:

create table table_name select statement;

举例:

mysql> create table emp1 select emp_id,emp_name,salary,address from emp; Query OK, 11 rows affected (0.02 sec) Records: 11 Duplicates: 0 Warnings: 0 mysql> desc emp1; +----------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+---------------+------+-----+---------+-------+ | emp_id | int(11) | NO | | 0 | | | emp_name | char(20) | NO | | | | | salary | decimal(10,2) | NO | | 0.00 | | | address | varchar(200) | NO | | | | +----------+---------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) mysql> select * from emp1; +--------+-----------+---------+--------------------------------------+ | emp_id | emp_name | salary | address | +--------+-----------+---------+--------------------------------------+ | 1 | 张晓红 | 5800.00 | 河南省郑州市中原路10号 | | 2 | 张静静 | 5400.00 | 河南省新乡市平原路38号 | | 3 | 王云飞 | 5600.00 | 河南省新乡市人民路28号 | | 4 | 王鹏飞 | 6800.00 | 河南省新乡市东明大道12号 | | 5 | 王大鹏 | 5900.00 | 河南省郑州市东风路15号 | | 6 | 王萌萌 | 5000.00 | 河南省开封市五一路14号 | | 7 | 王大光 | 6200.00 | 河南省开封市八一路124号 | | 8 | 王小明 | 4800.00 | 河南省驻马店市雪松路128号 | | 9 | 王娜娜 | 5200.00 | 河南省驻马店市车站路2号 | | 10 | 刘云飞 | 6800.00 | 河南省南阳市民生路255号 | | 11 | 张陆军 | 6200.00 | 河南省南阳市张仲景路14号 | +--------+-----------+---------+--------------------------------------+ 11 rows in set (0.00 sec)

利用select命令可以看到,emp1表包含了emp表的数据。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3