数据增加、删除、更改
dml类型
1、更新操作前的准备
事务(开始) 结束(提交comit,回滚rollback),事务未提交前数据处于锁定未变更,查询不到正在修改内容。
创建表myemp来源表emp
create table myemp as select * from emp;
drop table myemp;删除表myemp
desc myemp;查看表中数据类型
select * from table; 查看当前用户下的表
select * from myemp;查看表中数据
2、数据的增加操作
形式一:插入一条新的数据。
语法:INSERT INTO 表名称[(列1,列2,列3,…)] VALUES(值1,值2,值3,…);
形式二:插入子查询的返回结果。
语法:INSERT INTO 表名称[(列1,列2,列3,…)] 子查
我们即将接触的数据类型:
NUMBER类型:直接编写,例如:231
VARCHAR2类型:使用“‘”声明,例如’VDATA‘
DATE类型:可以按照已有的日期格式编写字符串,例如:
“’22-2月-81’”,或者使用TO_DATE()函数将字符串变为DATE型数据,如果为当前时间,则直接使用SYSDAT
数据的增加操作
范例:向myemp数据表之中增加一条新的数据
推荐:insert into myemp(empno,job,hiredate,ename,mgr,sal,comm,deptno) values (8888,‘CLERK’,sysdate,‘TOM’,7369,800,100,20);
不推荐:insert into myemp values (8899,‘JACK’,‘MANAGER’,7369,to_date(‘1981-10-19’,‘yyyy-mm-dd’),1000,100,20);
范例:查询myEmp表中的全部记录;
select * from muemp;
insert into myemp values(8888,‘hexin’,'boss’null ,sysdate-1,1,99999,10);插入信息
commit; 保存更改
insert into myemp(empno,ename,job,hiredate,sal)values (6612,
‘lee’,‘clerk’,to_date(‘1982-10-19’,‘yyyy- mm-dd’),600);
查询myemp表中是否存在编号为6612和6616的信息
select * from myemp where empno in(6612,6616) ;
增加子查询结果数据
范例:通过子查询增加myEmp表数据
insert into myemp(empno,ename,job,mgr,hiredate,sal,comm,deptno)
select * from emp where deptno=20 ;
insert into myemp
select * from emp where deptno=10 ;
范例-9:查询myEmp表中的数据
select * from myemp;
char定长,varchar2 变长
alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss’;修改会话窗口系统时间显示格式,当前会话显示日期,下次无效
select trunc(sysdate,‘dd’)+3/24+1/96 from dual;显示晚上3:15
to_char(sysdate,‘dd’)求当天零点数据
to_char(sysdate,‘dd’)+3/24+1/24/4
3、数据更新操作
形式一:用户指定更新数据
update 表名 set 字段=值 【,字段=值。。。】where 更新条件(s);
形式二:给予子查询的更新
update 表名 set(列1,列2,…)=(SELECT 列1,列2,…FROM table WHERE 查询条件(s));
由用户指定更新数据
范例:将smith(雇员编号为7369)的工资修改为3000元,并且每个月有500元的奖金
update myemp set sal=3000,comm=500 where empno=7369 ;
范例:查询smith的完整信息
select * from myemp where empno=7369;
范例:将工资低于公司平均薪金的雇员的基本工资上涨20%
update myemp set sal=sal1.2 WHERE sal<(select avg(sal) from myemp) ;
范例:一次性上涨公司全部雇员的基本工资,每个雇员的基本工资上涨10%
update myemp set sal=sal1.1;
使用已有数据更新数据表
范例:将雇员7369的职位、基本工资、雇佣日期更新为与7839相同的
信息
update myemp set(job,sal,hiredate)=(select job,sal,hiredate
from myemp where empno=7839)where empno=7369 ;
查询更新之后的7369和7839的雇员完整信息
select * from myemp where empno in (7369,7839) ;
4 、删除操作
语法:DELETE FROM 表名称 [WHERE 删除条件];
范例:删除雇员编号是7566的雇员信息
delete from myemp where empno=7566 ;
范例:验证7566雇员的信息是否还存在
select * from myemp where empno=7566 ;
范例:删除30部门内的所有雇员
delete from myemp where deptno=30 ;
范例:查询30部门是否还存在雇员
select * from myemp where deptno=30;
范例:删除雇员编号为7369、7566、7788的雇员信息
delete from myemp where empno in (7369,7566,7788);
范例:删除所有在1987年雇佣的雇员
delete from myemp where to_char(hiredate,
‘yyyy’)=‘1987’ ;
范例:删除公司工资最高的雇员
delete from myemp where sal=(select max(sal) from myemp);
注意:不写删除条件表示删除全部!