sql语句 怎么从一张表中查询数据插入到另一张表中

sql语句 怎么从一张表中查询数据插入到另一张表中,第1张

sql语句从一张表中查询数据插入到另一张表中的方法如下:

1、select * into destTbl from srcTbl。

2、insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl。

以上两句都是将 srcTbl 的数据插入到 destTbl,但两句又有区别的:

第一句(select into from)要求目标表(destTbl)不存在,因为在插入时会自动创建。

第二句(insert into select from)要求目标表(destTbl)存在,由于目标表已经存在,所以我们除了插入源表(srcTbl)的字段外,还可以插入常量。

拓展资料:

结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。sql 语句就是对数据库进行 *** 作的一种语言。

常见语句:

1、更新:update table1 set field1=value1 where 范围。

2、查找:select * from table1 where field1 like ’%value1%’ (所有包含‘value1’这个模式的字符串)。

3、排序:select * from table1 order by field1,field2 [desc]。

4、求和:select sum(field1) as sumvalue from table1。

5、平均:select avg(field1) as avgvalue from table1。

6、最大:select max(field1) as maxvalue from table1。

7、最小:select min(field1) as minvalue from table1[searator]。

通过sql语句添加,通过可视化窗口直接添加。

打开企业管理器,新建数据库,新建表,建立字段,打开表就可以填数据了。SQL采用集合 *** 作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、更新 *** 作的对象也可以是元组的集合。

SQL可以独立完成数据库生命周期中的全部活动,包括定义关系模式、录入数据、建立数据库、查询、更新、维护、数据库重构、数据库安全性控制等一系列 *** 作,这就为数据库应用系统开发提供了良好的环境,在数据库投入运行后,还可根据需要随时逐步修改模式,且不影响数据库的运行,从而使系统具有良好的可扩充性。

对于 单表的视图, 插入/修改 数据是没有问题的。 (只要你不做特别的设置)

对于多表的视图, *** 作的时候,会存在一定的问题。

下面是一个例子:

1>CREATE VIEW v_main_sub AS

2>SELECT

3>  test_main.id AS main_id,

4>  test_main.value AS main_value,

5>  test_sub.id  AS  sub_id,

6>  test_sub.value AS sub_value

7>FROM

8>  test_main, test_sub

9>WHERE

10>  test_main.id = test_sub.main_id

11>go

1>SELECT * FROM v_main_sub

2>go

main_id     main_value sub_id      sub_value

----------- ---------- ----------- ----------

1 ONE                  1 ONEONE

2 TWO                  2 TWOTWO

(2 行受影响)

1>UPDATE v_main_sub

2>SET main_value='ONX'

3>WHERE main_id = 1

4>go

(1 行受影响)

1>UPDATE v_main_sub

2>SET sub_value='ONXONX'

3>WHERE main_id = 1

4>go

(1 行受影响)

1>DELETE FROM v_main_sub WHERE main_id = 1

2>go

消息 4405,级别 16,状态 1,服务器 GMJ-PC\SQLEXPRESS,第 1 行

视图或函数 'v_main_sub' 不可更新,因为修改会影响多个基表。

-- 这个触发器, 只测试输出, 不删除数据。

1>CREATE TRIGGER  v_main_sub_trigger

2>ON  v_main_sub

3>INSTEAD OF DELETE

4>AS

5>DECLARE

6>  @main_id  INT,

7>  @sub_id   INT

8>BEGIN

9>  SELECT @main_id=main_id, @sub_id=sub_id FROM deleted

10>

11>

12>  PRINT(@main_id)

13>  PRINT(@sub_id)

14>END

15>go

1>DELETE FROM v_main_sub WHERE main_id = 1

2>go

1

1

(1 行受影响)

1>DELETE FROM v_main_sub WHERE sub_id = 1

2>go

1

1

(1 行受影响)

对于多表关联的视图, 删除的时候,需要人为的去判断

例如当 主表 和 子表,都只有一条记录的情况下。

无法判断 本次删除, 是要删除掉一个子表的记录,留下主表的。

还是 主表 子表的数据,一同删除。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11943812.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存