天天看点

数据操作

3.1、数据操作

3.1.1、先把emp表复制一份

 复制的语法:CREATE TABLE 复制的表名称 AS (原表的查询语句)

CREATE TABLE myemp AS (SELECT * FROM emp) ;

3.1.2、插入操作

现在要向myemp表中增加一条新的记录 —— 增加新的雇员

现在要把以下的数据插入:

 • 雇员编号为:7777

 • 雇员姓名:张三

 • 职务:清洁工

 • 领导:7369用户

 • 工资:1000

 • 奖金:200

 • 部门:40部门

 • 雇佣日期:2001-3-14

插入的时候:

 • 如果数据的类型为NUMBER,则不用加单引号,表示插入的是数字

 • 如果数据类型为VARCHAR(),则表示字符串,插入时必须用单引号括起来

 • 如果数据类型为DATE,则表示日期,插入的时候要按照标准的日期格式插入,按字符串的形式

INSERT INTO myemp(empno,ename,job,mgr,hiredate,sal,comm,deptno) 

VALUEs (7777,'张三','清洁工',7369,'14-3月-2001',1000,200,40) ;

数据插入的时候如果明确的要将全部的字段插入内容,也可以不用去写要插入的列名称

INSERT INTO myemp VALUEs (7778,'李四','清洁工',7369,'14-3月-2001',1000,200,40) ;

注意1:

 如果插入的内容是日期格式,除了按照本身的日期格式编写外,也可以使用to_date函数完成字符串向日期的转换。

 INSERT INTO myemp VALUEs (7778,'李四','清洁工',7369,to_date('2001-3-14','YYYY-MM-DD'),1000,200,40) ;

注意2:

 如果使用了插入的时候不写列名称的语句形式,则如果有的内容为空,必须明确的给出null值。

INSERT INTO myemp VALUEs (7779,'王五','清洁工',7369,null,1000,null,40) ;

注意3:

 可以将一张表的数据集中插入到表中(只限与表结构相同的情况下操作)

 把emp表中的数据插入到myemp表中:INSERT INTO myemp SELECT * FROM emp ;

3.1.3、更新操作

UPDATE myemp SET ename='赵六',job='总经理',sal=6000

如果执行以上代码,则肯定所有的记录都会被修改,现在希望的是只修改一个用户的信息。

 UPDATE myemp SET ename='赵六',job='总经理',sal=6000 WHERE empno=7777 ;

现在用户已经没有上级,他是最高领导,mgr编号肯定无效了,应该为null?

 UPDATE myemp SET mgr=null WHERE empno=7777 ;  更新的时候依然可以更新值为null。

更新也有一些其他的功能:可以基于另一个表的数据更新本张表(比较少见)

将一个用户的工作换成编号为7566的雇员的工作,经理编号也与7566相同。

 UPDATE myemp SET(job,mgr) = (SELECT job,mgr FROM myemp WHERE empno=7566) WHERE empno=7779 ;

3.1.4、删除数据

删除一个雇员的信息:

 DELETE FROM myemp WHERE empno=7779 ;

 如果在删除语句之后不编写WHERE,则表示删除全部的数据;

3.1.5、事务处理

 在一个客户端的修改,并没有影响到真正的数据。

 如果修改的时候要想把修改真正的起作用就必须使用到事务

事务解释:

 张三想去大连拜访朋友,从北京出发。去之前说了:请帮我买一张三天后回北京的车票,但是后来张三出事了,没去成。要立刻跟他朋友说,我去不了了,不要帮我买票。

 出发,买票是有关联的,要么同时成功,要么有一个失败则同时失败。

因为事务没有提交,所以数据的更新是无法看见的

 • 事务的提交:commit,只有真正被提交了,数据库的信息才能变更

 • 事务的回滚:rollback,如果有错误则可以通过此命令回退到最原始的状态

事务的使用注意:

 如果一个用户更新数据库的时候,还没有进行提交,则其他用户是不能更新此数据库的。此时的现象称为“死锁”,永无休止的等待ing…。

本文转自 李兴华 51CTO博客,原文链接:http://blog.51cto.com/lixinghua/91213,如需转载请自行联系原作者