![SQL应用及误区分析](https://wfqqreader-1252317822.image.myqcloud.com/cover/566/937566/b_937566.jpg)
上QQ阅读APP看书,第一时间看更新
3.2 建表新增
SQL Server数据库与Oracle数据库中的建表新增语法不同。
SQL Server数据库中建表新增语法如以下代码所示。
select * into table_a from table_b;
代码中各关键字的解释如下。
❑ select:关键字,指定要查询哪些列。
❑ into:关键字,指定要插入哪个表中。
❑ table_a:代表要新建的表。
❑ table_b:代表当前要查询的表。
Oracle数据库建表新增语法如以下代码所示。
create table table_a as select * from table_b;
代码中各关键字的解释如下。
❑ create table:关键字,标识当前命令是新建表的命令。
❑ table_a:代表要新建的表。
❑ as:指定生成查询结果的语句。
❑ table_b:代表当前要查询的表。
建表新增将查询、建表和新增3个操作合并到了一个命令中,它将查询的结果集保存到一张新建的表中。在实际的编程中不会这么写,但是对于数据库管理员来说,这个操作非常有用,可以帮他快速地实现表结构的复制,也可以帮他很方便地对表中满足条件的数据进行备份。
接下来,通过一个例子来帮助读者掌握建表新增的用法。
例3-6:将EMP表中的数据插入名为EMP_BAK的新表中。
SQL Server数据库中的写法如图3-17所示。
![](https://epubservercos.yuewen.com/090464/10797217703874606/epubprivate/OEBPS/Images/figure_0029_0001.jpg?sign=1738844292-9Tyv8kcEUgze7IGx4BDEbXI58gVP8mtm-0-009370ef7f20c85fa604a9d0249a3fd1)
图3-17
Oracle数据库中的写法如图3-18所示。
![](https://epubservercos.yuewen.com/090464/10797217703874606/epubprivate/OEBPS/Images/figure_0029_0002.jpg?sign=1738844292-JMziSxJjDbEFovpmOBgGAUiOULv27EWt-0-555322678228f23943f9aa075ff6a187)
图3-18
有一点需要读者注意,建表新增会创建一张列属性一样的新表,也会把查询结果的记录插入新表中。但是,查询表的键、约束、索引、触发器等表的附属对象是不会自动创建到新表中的。无论是SQL Server数据库还是Oracle数据库都是这样处理的。