简单问题:用"select * into 新表 from 表1 "语句,怎么让生成表和“新表”表结构完全一样呢?

songfengerer 2003-10-17 08:45:04
我想用"select * into 新表 from 表1“"select 列1,列2,列3,列4 into 新表 from 表1 "语句来生成新表,
但这样生成的"新表"表结构会变得和"表1"不完全一致,比如说:
1、表1中有自动加1的主键值,新表中则没有;
2、生成“新表”中部分字段类型会变成varchar型,并且长度会变;
3、“表1”中允许为空的字段在“新表”中变的不允许为空。
4。。。。
所以我想生成和原表结构完全一致 的表结构,怎么写Sql语句呢???

...全文
209 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
crazycyber 2003-10-17
  • 打赏
  • 举报
回复
up
youngby 2003-10-17
  • 打赏
  • 举报
回复
--原来数据库中JOBS表的生成脚本
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK__employee__job_id__1BFD2C07]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[employee] DROP CONSTRAINT FK__employee__job_id__1BFD2C07
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[jobs]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[jobs]
GO

CREATE TABLE [dbo].[jobs] (
[job_id] [smallint] IDENTITY (1, 1) NOT NULL ,
[job_desc] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[min_lvl] [tinyint] NOT NULL ,
[max_lvl] [tinyint] NOT NULL
) ON [PRIMARY]
GO


--执行 SELEC INTO后的生成JOBS1的脚本

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[jobs1]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[jobs1]
GO

CREATE TABLE [dbo].[jobs1] (
[job_id] [smallint] IDENTITY (1, 1) NOT NULL ,
[job_desc] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[min_lvl] [tinyint] NOT NULL ,
[max_lvl] [tinyint] NOT NULL
) ON [PRIMARY]
GO


可以看出JOBS 和JOBS1在表结构上完全一致,除了外健约束,
如果你想让它们的约束都完全相同,就不能用SELECT INTO语句了
welyngj 2003-10-17
  • 打赏
  • 举报
回复
before:
CREATE TABLE [a] (
[a] [int] NULL ,
[b] [int] NULL ,
[c] [int] NULL ,
CHECK (((not([a] is null and [b] is null and [c] is null))))
) ON [PRIMARY]
GO

select * into aa from a

after:
CREATE TABLE [aa] (
[a] [int] NULL ,
[b] [int] NULL ,
[c] [int] NULL
) ON [PRIMARY]
GO

约束丢失。
welyngj 2003-10-17
  • 打赏
  • 举报
回复

运行select * into hh from h前:
CREATE TABLE [h] (
[a] [int] IDENTITY (1, 1) NOT NULL ,
[b] [char] (4) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
运行select * into hh from h后:
CREATE TABLE [hh] (
[a] [int] IDENTITY (1, 1) NOT NULL ,
[b] [char] (4) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

可见:1、“表1中有自动加1的主键值,新表中则没有
2、生成“新表”中部分字段类型会变成varchar型,并且长度会变;
3、“表1”中允许为空的字段在“新表”中变的不允许为空。“得出的结论是不正确。
表的结构完全相同。但如果原表有约束,则后来的表将丢失。

songfengerer 2003-10-17
  • 打赏
  • 举报
回复
to: youngby(诗人)
我已经说了啊,这样生成的新表,表结构和原表不一样,会发生变化的!!
youngby 2003-10-17
  • 打赏
  • 举报
回复
select * into 新表 from 表1
目 录、摘 要 I、Abstract II、目 录 III、第1章 绪论 1、1.1 课题背景 1、1.2 设计原则 1、1.3 研究内容 2、第2章 关键技术简介 3、2.1 Java技术 3、2.2 Spring Boot框架 3、2.3 B/S结构 3、2.4 MYSQL数据库 4、第3章 系统分析 5、3.1 可行性分析 5、3.1.1 技术可行性 5、3.1.2 经济可行性 5、3.1.3 操作可行性 5、3.1.4 时间可行性 5、3.2 系统功能分析 6、3.3 系统性能分析 7、3.4 系统流程分析 8、3.4.1注册流程 8、3.4.2登录流程 8、3.4.3购买流程 9、第4章 系统设计 10、4.1 系统结构设计 10、4.2系统顺序图 10、4.2.1登录模块顺序图 10、4.2.2添加信息模块顺序图 11、4.3 数据库设计 12、4.3.1 数据库E-R图设计 12、4.3.2数据库设计 14、第5章 系统的实现 18、5.1 用户功能模块的实现 18、5.1.1用户注册界面 18、5.1.2用户登录界面 18、5.1.3个人中心界面 19、5.1.4商品详情界面 20、5.1.5购物车界面 20、5.1.6我的订单界面 21、5.1.7我的地址界面 21、5.2 管理员功能模块的实现 21、5.2.1管理员登录界面 21、5.2.2商家管理界面 22、5.2.3用户管理界面 23、5.2.4商品分类管理界面 23、5.3 商家功能模块的实现 24、5.3.1商品信息管理界面 24、5.3.2添加商品信息界面 24、第6章 系统测试 25、6.1 程序测试 25、6.2 测试方案计划 25、6.3 测试方法 26、6.4 测试分析 26、第7章 总结 27、参考文献 28、致 谢 29

34,875

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧