WEB开发网
开发学院数据库Oracle Oracle数据库入门之DML与事务控制 阅读

Oracle数据库入门之DML与事务控制

 2012-11-28 15:27:20 来源:WEB开发网   
核心提示: insert语句语法:insert into table [(column1, column2...)] values (value1, value2...);说明:insert语句每次只能向表中插入一条记录,缺省字段名列表时,Oracle数据库入门之DML与事务控制,应为新插入记录中的每个字段显式的设定新值也可在i

 insert语句
语法:insert into table [(column1, column2...)] values (value1, value2...);
说明:insert语句每次只能向表中插入一条记录。缺省字段名列表时,应为新插入记录中的每个字段显式的设定新值
也可在insert语句中指定赋值字段列表,只为部分字段显式设定新值,其余字段将被缺省赋值为null
举例:insert into dept values(88,'研发部','北京');--此句便是缺省字段名列表的情况
insert into dept values(66,'美工部');--这句将执行出错,提示为没有足够的值。即必须为所有字段设定值
insert into dept(deptno,dname) values(99,'财务部');--也可以单独为deptno和dname字段赋值
select table_name from user_tables;--用到了数据字典表。目的是查询当前用户方案下所有的表的名字
select user from dual;--查询当前连接到数据库的用户名
补充:可以在insert语句中使用子查询,实现表间数据拷贝。在现实开发中很少用的到,有点类似Java中的数组拷贝
比如insert into dept1(id, name) select deptno, dname from dept;
此时不必再给出values子句。子查询中的值列表应与insert子句中的字段列表相匹配
实现数据复制的时候,也可以在应用程序层面采用这种方式进行数据备份,但一般来说这种备份是不可靠的
应该在数据库的层面做备份,也可以由DBA对整个数据库做自动的数据备份处理,包括出现问题的时候的恢复



update语句
语法:update table set column1=value1 [, column2=value2, ...] [where condition];
说明:update语句用于更新表中的数据。update语句每次可更新多条记录
可使用where子句限定要更新的记录,如果缺省where子句,则更新表中的所有记录
举例:update emp set sal=sal+88;--将所有员工的工资都涨88元钱
update student2 set phone='010-51288984' where name='张三';--将张三的电话改为010-51288984



delete语句
语法:delete [from] table [where condition];
说明:delete语句用于从表中删除数据。delete语句每次可删除多条记录
可使用where子句限定要删除的记录,如果缺省where子句,则删除表中的所有记录
delete语句并不是删除整个表,只是删除表中的记录,表仍然存在,还可用来存放数据
举例:delete emp;--等价于delete from emp;
delete emp where empno=7778;--删除empno字段的值为7778的所有记录



merge语句
概述:merge语句用于进行数据合并,它是根据条件在表中执行数据的修改或插入操作
如果要插入的记录在目标表中已经存在,则执行更新操作,否则执行插入操作
实际开发的过程中使用它的机会并不是很多
语法:merge into table [alias]
using(table|view|sub_query) [alias]
on(join_condition)
when matched then
update set col1=col1_val, col2=col2_val
when not matched then
insert (column_list) values(column_values);
举例:create table test1(eid number(10), name varchar2(20), birth date, salary number(8,2));
insert into test1 values (1001, 'Stone', '21-1月-10', 8888);
insert into test1 values (1002, 'Smith', '04-1月-09', 6666);
select * from test1;
create table test2(eid number(10), name varchar2(20), birth date, salary number(8,2));
select * from test2;
merge into test2
using test1
on(test1.eid=test2.eid)
when matched then
update set name=test1.name,birth=test1.birth,salary=test1.salary

1 2 3  下一页

Tags:Oracle 数据库 入门

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接