数据的插入和删除

1、插入单行记录

基本语法:

 

插入单行记录时,要注意对null值的插入唯一值的插入, 特殊字段数据的插入处理,以及通过视图输入行应该注意的事项。

下面只说说通过视图插入数据行的的注意事项:

通过视图插入数据与通过表插入数据的语法一样,只是将上述的表名改为视图名称而已。通过视图向表中插入数据有一定的局限性:如果表中某一列不包含在视图中 ,则不能通过视图向这一列插入数据,那么要求只要表中有非空约束的列都要出现在视图中。否则通过视图就不可能对表插入数据 。

2、插入多行数据:

(1)使用insert into...select语句插入值

这个语句是将查询语句的输出结果插入到表中,语法如下:

使用insert into...select 插入数据有一些注意事项:

  • select后面的列的数目和各列的数据类型必须与insert into后列的数目和数据类型相同
  • select语句不能从正在被插入的表中选择数据, 即table_name和table_name2不能相同

insert into...select的作用:

  • 常用来创建查找表,提高检索的性能。差招标可以包含分布在多个数据库的多个表的数据,因为多个表连接处理起来比简单查询要慢,对一个查找表执行select语句, 则明显快于执行又长又复杂的连接查询 。(说明:查找表通常存储在C/S环境的客户机中,用来降低网络信息流量)
  • 另一个作用是用作备份表,备份要删除,截断数据或者重新装入数据的表,这个过程需要建立一个临时表,并且可以通过从原始表选择任何内容,将包含在原始表的数据插入临时表。(许多数据库都支持临时表,临时表的存在是相对数据库连接的寿命而言的,当连接终止时,它被删除)
  • 需要将多个表进行频繁查询时,可以将多个表需要的数据合并到一个临时表中,作为新的总表,再执行SQL语句,则查询较为简单而且执行地更快。

eg:将多个表中的数据合并到一个临时表

创建一个新标temp_teacher存储所有教师的姓名,所在系,所授课程的课程名,学时,以及选修这门课程的最高成绩的学生姓名。其中教师的姓名,所在系来自于teacher表,课程名,学时信息来源于course表,最高成绩的学生姓名来源于student表。

teacher,course,student表参见:http://blog.csdn.net/qinyushuang/archive/2010/12/31/6110245.aspx

执行的结果:

说明:

  • 因为要求temp_teacher表要存储所有教师的信息,因此采用了左外连接的方式。
  • temp_teacher 表存储了来自teacher表,student表,course表的数据,省掉了连接的环节,因此直接对查找表temp_teacher进行查询,速度要快得多 。
  • 虽然通过创建视图的方式也可以简化查询,但是这里的简化也只是对语句的逻辑层次的简化, 使得容易理解, 但是由于视图本身并不存放任何数据,只在数据库中存储了一个查询的定义(视图是被存储的查询),其操作的对象仍然是各个地层表,因为并不能提高查询的速度。

 

(2)select ....into...表中数据的复制

上述insert into ...select语句虽然可以将其他表中的记录插入到新表中,但是前提是新表必须是已经创建了,在SQL中还有另外一种方式无需先建立新表,无需设定表的字段的数据类型,但可以达到复制数据的目的。

基本语法:

注意:

  • 创建的新表的字段与select语句选择的字段名称相同,当然可以更改新表的列名。
  • 可以连接多个表,将多个数据库表中的数据一次性复制到新表中
  • 不管有多少数据,来自多少个表,所有数据都将复制到一个表中

eg:

有一个表cominfo如下:

将表cominfo中的pame,sex,type,email 列的数据复制到一个新的数据表new_cominfo中 ,并将各列更名为new_name,new_sex,new_type,new_email.代码如下:

 

执行的结果如下图:

 

除了上除复制数据的方式外,所有的数据库都支持数据的导入和导出,具体操作(略)

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值