软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
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
生肖星座解梦 人民的名义 人民的名义在线看 三沣玩客 拍拍 视频 开发 Android开发 站长 古典小说 网文精选 搜图网 天下美图
中国文化英文 多播视频 装修知识库
2017-7-22 4:49:13
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --