mysql复制表结构和内容
许多时候我们想复制一张表部分或者全部内容,或者只复制一张表的框架,这种需求应该说我们很常见。
其实想要实现这种需求十分简单。
表一:

mysql> select * from student_info; +----+-----------+------+ | id | name | sex | +----+-----------+------+ | 1 | 科比 | 男 | | 2 | 毛线 | 女 | | 3 | 黄鱼 | 男 | | 4 | 子栋 | 男 | | 5 | 子豪 | 女 | | 6 | 小鸟 | 男 | | 7 | 星爷 | 男 | | 8 | 戴鹏 | 男 | | 9 | 秦子琪 | 女 | +----+-----------+------+ 9 rows in set (0.00 sec)
表二:

mysql> select * from student_addr; +--------+--------------+ | name | addr | +--------+--------------+ | 科比 | 湖北罗田 | | 小鸟 | 湖北襄阳 | | 子豪 | 江苏扬州 | | 毛线 | 湖北孝感 | | 子栋 | 湖北洪湖 | | 黄鱼 | 湖北罗田 | +--------+--------------+ 6 rows in set (0.00 sec)
表三:

mysql> select * from student_score; +--------+-------+-------+--------+ | name | MYSQL | LIUNX | python | +--------+-------+-------+--------+ | 科比 | 56 | 87 | 74 | | 毛线 | 87 | 95 | 78 | | 小鸟 | 60 | 78 | 87 | | 子豪 | 54 | 67 | 57 | | 子栋 | 90 | 95 | 94 | | 黄鱼 | 78 | 69 | 90 | | 星爷 | 24 | 45 | 42 | +--------+-------+-------+--------+ 7 rows in set (0.00 sec)
需求一:我想要一张新的学生信息表,表名new_student_info,只想要湖北的同学的信息。
SQL语句:create table new_student_info (select * from student_addr where addr like '湖北%');

mysql> create table new_student_info (select * from student_addr where addr like '湖北%'); Query OK, 5 rows affected (0.01 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> select * from new_student_info; +--------+--------------+ | name | addr | +--------+--------------+ | 科比 | 湖北罗田 | | 小鸟 | 湖北襄阳 | | 毛线 | 湖北孝感 | | 子栋 | 湖北洪湖 | | 黄鱼 | 湖北罗田 | +--------+--------------+ 5 rows in set (0.00 sec)
需求二:我想复制表三的框架,表名new_student_score.
SQL语句:create table new_student_score select * from student_score where 1=2;

mysql> create table new_student_score select * from student_score where 1=2; #where后面的条件随便写 Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> select * from new_student_score; #框架存在 Empty set (0.00 sec) mysql> desc new_student_score; +--------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+----------+------+-----+---------+-------+ | name | char(10) | YES | | NULL | | | MYSQL | int(4) | YES | | NULL | | | LIUNX | int(4) | YES | | NULL | | | python | int(4) | YES | | NULL | | +--------+----------+------+-----+---------+-------+ 4 rows in set (0.01 sec)
需求三:一张新的表,囊括所有信息,表名info_all
SQL语句:
mysql> create table info_all -> select new.id,new.name,new.sex,new.addr,sc.python,sc.MYSQL,sc.LIUNX -> from ( -> select student_info.id,student_info.name,student_info.sex,student_addr.addr -> from student_info left join student_addr -> on student_info.name = student_addr.name) as new -> left join student_score as sc on new.name=sc.name;

mysql> select * from info_all; +----+-----------+------+--------------+--------+-------+-------+ | id | name | sex | addr | python | MYSQL | LIUNX | +----+-----------+------+--------------+--------+-------+-------+ | 1 | 科比 | 男 | 湖北罗田 | 74 | 56 | 87 | | 2 | 毛线 | 女 | 湖北孝感 | 78 | 87 | 95 | | 3 | 黄鱼 | 男 | 湖北罗田 | 90 | 78 | 69 | | 4 | 子栋 | 男 | 湖北洪湖 | 94 | 90 | 95 | | 5 | 子豪 | 女 | 江苏扬州 | 57 | 54 | 67 | | 6 | 小鸟 | 男 | 湖北襄阳 | 87 | 60 | 78 | | 7 | 星爷 | 男 | NULL | 42 | 24 | 45 | | 8 | 戴鹏 | 男 | NULL | NULL | NULL | NULL | | 9 | 秦子琪 | 女 | NULL | NULL | NULL | NULL | +----+-----------+------+--------------+--------+-------+-------+ 9 rows in set (0.00 sec)
分类:
数据库
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理