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,如需转载请自行联系原作者