Oracle学习笔记:SQL更新数据和一些常用函数

2014-11-24 18:28:28 · 作者: · 浏览: 0

数据库中的数据变更,主要有以下三种:插入数据(insert)、修改数据(update)、删除数据(delete)。这几种操作都是开发人员常用的操作。本章将针对这几种操作进行简要讲解。本章的主要内容包括:


insert操作及注意事项


update操作及注意事项


delete操作及注意事项


通过本章的学习,读者既可以学习insert/update/delete操作的基本语法,同时,还可以了解实际开发中的注意事项。


1 插入数据——insert操作


insert操作用于向表中插入新的数据。insert操作既可以单条插入,也可以与子查询结合使用实现批量插入。本章将讲述insert操作的语法及使用。


1.1 单条插入


对于insert操作来说,单条插入是最常用的方式,其语法形式如下所示。


insert into 表名(列名1, 列名2, 列名3…列名n)


values(1, 2, 3…n)


insert操作中,列名列表中的各列需要以逗号进行分隔;而值列表指定各列的值,列名与值需要一一对应


1.2 批量插入


c_students的数据结构及内容如下所示。


SQL> select * from c_students;


STUDENT_ID STUDENT_NAME


我们可以利用如下SQL语句向其中插入新的数据,新数据来自表studentsstudent_id处于前十的学生信息。


SQL> insert into c_students(student_id, student_name)


select student_id, student_name


from students


where student_id<=10;


1.3 注意事项与技巧


insert操作语法简单,也是广大开发人员掌握的最熟练的SQL语句之一。在实际开发过程中,有以下问题和技巧需要注意。


1.应该养成使用列名列表的习惯


2.快速获得列名列表


2 更新数据——update操作


update操作用于更新已有数据。


2.1 update更新单列


update操作的语法形式如下所示。


update 表名 set = 新值


其中update命令用于更新表中数据,其后紧跟表名;set命令用于重新设置列值,其后紧跟列名,并用等号指定新值。


在表students中,列status的值均为小写形式。我们可以利用update语句将其转换为大写形式。


SQL> update students set status = upper(status);


2.2 update更新多列


使用update语句,同样可以更新多列,其语法如下所示。


update 表名 set 1=新值1, 2=新值2, …


set命令之后,可以为多列同时赋值,而这些列之间使用逗号进行分隔。


对于表students中的学生信息,可以在修改列status的同时,修改列student_age的值。例如,除了将status进行大写转换之外,还需要将学生年龄student_age增加1。相应的SQL语句如下所示。


SQL> update students set student_age = student_age+1, status = upper(status);


2.3 注意事项


update操作添加where条件。


SQL> update students set student_age = student_age+1


where student_age > 20;


3 删除数据——delete操作


delete操作用于删除表中数据。除了delete语句之外,truncate命令同样可以删除表中数据。


3.1 delete操作


delete操作用于删除表中数据,其使用语法如下所示。


delete from 表名


delete from指定从哪个表中删除数据。因为删除动作的作用对象为记录级别,因此无需指定列名信息。


我们可以利用delete命令删除表students中、employee_id大于10的记录,相应的SQL语句如下所示。


SQL> delete from students where student_id>10;



3.2 delete操作与truncate table操作


除了delete命令,Oracle还可以利用truncate table命令来删除表中数据。但是truncate table语句与delete语句是有着本质区别的。delete语句与insertupdate语句同属于DML——数据操作语言的范畴,当数据修改之后,可以通过回滚操作,来忽略所做的数据修改。而truncate table语句则是属于DDL——数据定义语言的范畴,当数据被删除之后,无法回滚。


SQL>rollback ;