SQL的数据操纵功能:
1.数据插入 insert
---------------------------------------------------------------------------------------
插入命令一般形式 :
SQL>insert into <表名>[(列名表)]
values(<值表>)
sql>insert into emp(empno,ename,sal,deptno)
values(7594,'CARTER',500,20);
带参数插入语句形式:
SQL>insert into <表名> values(<参数表>)
sql>insert into dept
values(&deptno,'&dname','&loc');
用带有子查询的插入语句(查询插入):
通过查询子句从某表中找出所需数据,拷贝到现行表中,用查询代替values子句实现
SQL>insert into <表名>[(列名表)] <select 语句>
sql>insert into emp2(empno,ename,deptno)
select empno,ename,deptno
from emp
where deptno in(20,30,40);
若命令中缺省“列名表”,则用 select * 将满足条件的所有行的各列数据插入
若指出列名,则要与select后指定的列名要位置一一对应,类型相同,字段名可不同于查询表
插入空值
sql>insert into dept values(50,'DEC',NULL);
插入日期值
SQL>insert into emp(empno,ename,hiredata)
values(7655,'MARY','10-MAY-96');
要想改变日期表示格式, 用函数 to-date实现: to_date(char,format)
sql>insert into emp(empno,ename,hiredate)
values(7655,'MARY',to_date('5/10/96','MM/DD/YYYY'))
-------------------------------------------------------------------------------------------
2.数据修改命令 UPDATE SET
直接赋值:
SQL>update <表名>
set <列名1>=<表达式1> [, <列名2>=<表达式2>…]
[where<条件>] ;
将雇员ALLEN提升为经理,工资增至$2500,佣金增加40%
SQL>update emp
set job='MANAGER',sal=2500,comm=1.4*comm
where ename='ALLEN';
对20号部门中所有经理或分析员提高工资15%
sql>update emp
set sal=sal*1.15
where job IN('MANAGER','ANALYST') AND deptno=20;
利用子查询修改数据
给在 NEW YORK工作的雇员提高工资5%
sql>update emp
set sal=1.05*sal
where deptno IN(select deptno from dept
where loc='NEW YORK');
使所有销售人员的工资等于其平均工资1.1倍
sql>update emp
set sal=(select 1.1*avg(sal) from emp
where job='SALESMAN' )
where job='SALESMAN';
3.数据删除 delete
SQL>delete from <表名>
[where<条件>]
sql>delete from emp2
where sal>500;