软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 数据库 -> 【数据库】SQL更新数据之增删改 -> 正文阅读

[数据库]【数据库】SQL更新数据之增删改


数据库中的数据变更,主要有三种:插入数据inset、修改数据update、删除数据delete。这几种操作都是开发人员常用的操作,本文将对这几种操作进行简要讲解。
insert操作及注意事项;
update操作及注意事项;
delete操作及注意事项;

1、insert操作


insert操作用于向表中插入新的数据,insert操作既可以单条插入,也可以与子查询结合使用实现批量插入。
1.1单条插入
对于insert操作来说,单条插入是最常用的方式,其语法形式如下所示。
insert into 表名(列名1, 列名2,列名3.....列名n)
values(值1,值2,值3.....值n)
在insert操作中,列名列表中的各列需要以逗号分隔;而值列表指定各列的值,列名与值需要一一对应。
insert into students(stuent_id, student_name,student_age,status)
values(12,'张三',12,'act')
其中,insert into students 用于向表students中插入新的数据;student_id,student_name, student_age,status指定列名列表;values(12,'张三',12,'act')则为各列指定要插入的值。
当然,如果insert语句所指定的列名列表包含了表中的所有列,那么可以列名列表省略,如下:
insert into  values(12,'张三',12,'act');
1.2批量插入
子查询中,可以在插入语句中使用子查询,以实现批量插入,接下来还有另外一个例子:
表c_students的数据结构及内容如下所示:
select * from c_students;
student_id    student_name
可以利用如下SQL语句向其中插入新的数据,新数据来自表students中student_id处于前10的学生信息。
insert into c_students(student_id,student_name)
select student_id, student_name
from students
where student_id <=10;
说明:insert into c_students用于向表c_students中插入数据;select student_id, student_name from students where student_id <=10则指定要插入的数据。在这里,新插入的数据来自select语句选定的结果集合,注意,此处没有values关键字,这也是单条插入与批量插入的区别所在。
此时,表c_students中已成功插入了10条记录。
1.3注意事项与技巧
insert操作语法简单,也是开发人员掌握的最熟练的SQL语句之一,在实际开发过程中,有以下问题和技巧需要注意。
A. 应该养成使用列名列表的习惯
在一条插入语句中,即使为表中所有列都赋值,也不应该省略列名列表。在一个应用系统中,很难保证数据表结构不发生改变。
[img]http://img.blog.csdn.net/20160330102912997?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
报错:insert语句执行时,缺少足够的值。
B. 快速获得列名列表
对于表结构比较简单的数据表,例如c_students,一一罗列其列名并不困难,但是当数据结构复杂,列的数目较大时,一一罗列所有的列名耗时耗力且极易出错,此时,我们应该使用工具获得列名列表。以PL/SQL Devloper为例,相应的步骤如下所示。
(1)在PL/SQL Develpoler右侧的对象列表中找到对应的表。以表tmp_user_objects为例,在对象列表中的位置下图:
(2)右击tmp_user_objects下的columns分支,将弹出快捷菜单,如下图:
[img]http://img.blog.csdn.net/20160330105631580?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
(3)选择快捷菜单中的Copy comma separated选项,可以将列名列表以字符串的形式复制到黏贴板中。各列之间使用comma(逗号)进行分割。
[img]http://img.blog.csdn.net/20160330105825645?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
(4)打开任意的文本编辑器,将列名列表黏贴到文本编辑器中,即可。

2.update操作


update操作用于更新已有数据。
2.1 update更新单列
update操作的语法形式如下:
update 表名 set 列 = 新值
其中,update命令用于更新表中数据,其后紧跟表名;set命令用于重新设置列值,其后紧跟列名,并用等号指定新值。
例子:在表students中,列status的值均为小写形式。可以利用update语句将其转换为大写形式。
update students set status = upper(status);
其中,set status = upper(status)用于为表students中的status列赋予新值,新值为原列值的大写形式。
2.2 update更新多列
使用update语句,同样可以更新多列,其语法如下所示。
update 表名 set 列1 = 新值1, 列2=新值2,....
在set命令之后,可以为多列同时赋值,而这些列之间使用逗号进行分隔。
例子:对于表students中的学生信息,可以在修改列status的同时,修改列student_age的值。例如:除了将status进行大写转换之外,还需要将学生年龄student_age增加1,相应的SQL语句如下所示。
update students set student_age = student_age +1, status = upper(status);
set student_age = student_age +1, status = upper(status)用于设置表students中列student_age与列status的新值。当两个列都被成功更新之后,可以查询表中实际数据进行验证。
2.3注意事项
对于update操作,最容易被用户忽视的就是添加where 条件,在上面的例子中,所进行的操作实际是非常危险的。因为没有添加任何限制条件,因此oracle将更新表中的所有数据。而实际应用中,往往只需更新部分数据,因此,对于重要数据的update操作,首先添加where关键字是一个好的习惯,尽管有时并不需要过滤条件。
当然,如果要修改的数据表非常重要,首先进行备份是最为稳妥的方式,接着遵守如下步骤,将极大的减少用户出错的几率。
(1)首先搜寻表中的记录,并确认这些记录是预期进行修改的数据。
select * from students where student_id = 1;
当我们预期修改student_id为1的记录时,可以首先利用where student_id=1的条件获得记录,以确认预期修改的数据。
(2)利用update语句,并结合where条件修改数据。
update students set status = 'CXL' where student_id = 1;
where student_id =1所指定的条件与步骤(1)中经过确认的where 条件相同。
(3)查看修改后的数据,确认无误之后,再提交修改;否则,回滚操作。
SQL>select * from students where student_id = 1;
SQL>commit;   commit命令用于修改确认之后提交数据。提交之后,不可回滚。

3、delete操作


delete操作用于删除表中数据。除了delete语句之外,truncate命令同样可以删除表中数据。本段落将说明delete操作及delete操作与truncate操作的区别。
3.1 delete操作
delete操作用于删除表中的数据,其使用语法如下所示。
delete from 表名
delete from 指定从哪个表中删除数据,因为删除动作的作用对象为记录级别。因此,无须定列名信息。
例子:我们可以利用delete命令删除students中employee_id大于10的记录,相应的SQL语句如下:
delete from students where student_id > 10:
如同update 语句,在使用delete语句时,添加where 子句是一个好的习惯。这样可以避免删除表中的所有数据。
3.2 delete 操作与truncate table 操作
除了delete命令,oracle还可以利用truncate table命令删除表中的数据,但是truncate table语句与delete语句是有本质区别的:
delete语句与insert、update语句同属于DML-数据操作语言的范畴,当数据修改之后,可以通过回滚操作,忽略所做的数据修改。
而truncate table语句则是数据DDL---数据定义语言的范畴,当数据被删除之后,无法回滚。
例子:通过truncate table 命令删除表students的数据。
truncate table students;
分析查询结果可知,当执行了truncate table 命令之后,表students中的数据将被完全删除。
delete操作与truncate table操作具有不同的应用场合,当删除部分数据时,应该使用delete语句,并添加where条件;删除全部数据时,应该使用truncate table语句。同时,truncate table 删除全表数据时,效率也要高于delete语句。
......显示全文...
    点击查看全文


上一篇文章           查看所有文章
2016-04-01 16:56:17  
数据库 最新文章
Python&MySQL&PyQt
最新用python来操作mysql完全解析
mongodb的安装详解
1.PDO简介
《MySQL必知必会学习笔记》:高级联结
【翻译自mos文章】怎么对Microsoft(Office)
MyCAT全局表描述及示例
ocp
关于SQL数据表存储过程表名前缀换成dbo代码
数据库调优教程(二)慢查询数据准备
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年7日历
2018-7-19 13:55:27
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --