Oracle基础(七)DML语句

65 篇文章 0 订阅
64 篇文章 0 订阅
insert

insert into table_name [column1,column2,…] values(value1,value2,…);
insert into table_name [column1,column2,…] select (column1,column2,…) from table_name2;

insert into : 指明要插入表中的字段
values : 插入相应字段中的值

SQL> create table dept4 as select * from dept where 1!=1;
		
		表已创建。
2. Update

update table_name set column1 = value1[,column2=value2,…] where expression;

SQL> update newemp set sal = sal*1.1 ;

	已更新14行。
SQL> select ename,sal from newemp;
	
	ENAME             SAL
	---------- ----------
	SMITH             880
	ALLEN            1760
	WARD             1375
	JONES          3272.5
	MARTIN           1375
	BLAKE            3135
	CLARK            2695
	SCOTT            3300
	KING             5500
	TURNER           1650
	ADAMS            1210
	
	ENAME             SAL
	---------- ----------
	JAMES            1045
	FORD             3300
	MILLER           1430
	
	已选择14行。
	
	SQL> update newemp set sal = sal*1.2 where ename = 'WARD' ;
	
	已更新 1 行。
	
	SQL> select ename,sal from newemp;
	
	ENAME             SAL
	---------- ----------
	SMITH             880
	ALLEN            1760
	WARD             1650
	JONES          3272.5
	MARTIN           1375
	BLAKE            3135
	CLARK            2695
	SCOTT            3300
	KING             5500
	TURNER           1650
	ADAMS            1210
	
	ENAME             SAL
	---------- ----------
	JAMES            1045
	FORD             3300
	MILLER           1430
	
	已选择14行。
3. delete

delete from table_name [where expression];

使用delete语句删除表中的数据,并不能释放被善用的数据块空间,它只是把哪些被删除的数据块标记为 Unused,将来还可以回退(rollback)操作.

4. merge

把数据从一个表中复制到另一个表,插入新数据或替换掉旧数据.
merge into table11 using table2 on expression
when matched then update…
when not matched then insert …;

SQL> merge into newemp ne
	  2  using emp e
	  3  on (ne.empno = e.empno)
	  4  when matched then
	  5  update set ne.sal = e.sal
	  6  when not matched then
	  7  insert values(e.empno,e.ename,e.job,e.mgr,e.hiredate,e.sal,e.comm,e.deptno);
	
	14 行已合并。

表连接查询
连接查询是指将两个或两个以上的表或视图的查询,在实际应用中,查询单个表可能无法满足需求
1.简单连接
使用逗号将两个或多个表进行连接
自然连接是指使用相等比较(=) 指定连接条件,主要用于检索主从表之间的关联数据
select table1.column,table2.column… from table1,table2
where table1.column1 = table2.column2;

显示部门名称,员工名称,工资 只显示部门编号为10的

表的别名:
	SQL> select dname as 部门名称,ename "员工姓名",sal 员工工资 from dept d,emp e where e.deptno = d.deptno and d.deptno = 10;

	部门名称       员工姓名     员工工资
	-------------- ---------- ----------
	ACCOUNTING     CLARK            2450
	ACCOUNTING     KING             5000
	ACCOUNTING     MILLER           1300

内连接
内连接用于返回满足条件的记录
select table1.column,table2.column…
from table1 [inner] join table2
on table1.column1 = table2.column2;

SQL> select d.dname,e.ename from dept d inner join emp e on d.deptno = e.deptno;

	DNAME          ENAME
	-------------- ----------
	SALES          ALLEN
	SALES          WARD
	RESEARCH       JONES
	SALES          MARTIN
	SALES          BLAKE
	ACCOUNTING     CLARK
	RESEARCH       SCOTT
	ACCOUNTING     KING
	SALES          TURNER
	RESEARCH       ADAMS
	SALES          JAMES
	
	DNAME          ENAME
	-------------- ----------
	RESEARCH       FORD
	ACCOUNTING     MILLER
	
	已选择13行。

外连接
select table1.column,table2.column…
from table1 [left | right] join table2
on table1.column1 = table2.column2;
外连接是内连接的扩展,他不仅会返回满足条件的所有记录,也会返回不满足条件的记录,如果连接表中(主表)有一列空值,也会被显示;

SQL> select d.dname,e.ename from dept d left join emp e on d.deptno = e.deptno;
	
	DNAME          ENAME
	-------------- ----------
	SALES          ALLEN
	RESEARCH       JONES
	SALES          MARTIN
	SALES          BLAKE
	ACCOUNTING     CLARK
	RESEARCH       SCOTT
	ACCOUNTING     KING
	SALES          TURNER
	RESEARCH       ADAMS
	SALES          JAMES
	
	DNAME          ENAME
	-------------- ----------
	RESEARCH       FORD
	ACCOUNTING     MILLER
	吃饭部
	OPERATIONS

	已选择15行。	


	SQL> select d.dname,e.ename from dept d ,emp e where d.deptno = e.deptno(+);
	
	DNAME          ENAME
	-------------- ----------
	SALES          ALLEN
	SALES          WARD
	RESEARCH       JONES
	SALES          MARTIN
	SALES          BLAKE
	ACCOUNTING     CLARK
	RESEARCH       SCOTT
	ACCOUNTING     KING
	SALES          TURNER
	RESEARCH       ADAMS
	SALES          JAMES
	
	DNAME          ENAME
	-------------- ----------
	RESEARCH       FORD
	ACCOUNTING     MILLER
	吃饭部
	OPERATIONS
	
	已选择15行。

自连接
同一张表之间的连接查询

SQL> select m.ename||' 是 '||e.ename||' 领导!' from emp m,emp e where m.mgr = e.empno;

	M.ENAME||'是'||E.ENAME||'领导!
	------------------------------
	FORD 是 JONES 领导!
	SCOTT 是 JONES 领导!
	JAMES 是 BLAKE 领导!
	TURNER 是 BLAKE 领导!
	MARTIN 是 BLAKE 领导!
	WARD 是 BLAKE 领导!
	ALLEN 是 BLAKE 领导!
	MILLER 是 CLARK 领导!
	ADAMS 是 SCOTT 领导!
	CLARK 是 KING 领导!
	BLAKE 是 KING 领导!
	
	M.ENAME||'是'||E.ENAME||'领导!
	------------------------------
	JONES 是 KING 领导!
	SMITH 是 FORD 领导!
	
	已选择13行。
SQL> select m.ename,e.ename from emp m,emp e where m.mgr = e.empno;
	
	ENAME      ENAME
	---------- ----------
	FORD       JONES
	SCOTT      JONES
	JAMES      BLAKE
	TURNER     BLAKE
	MARTIN     BLAKE
	WARD       BLAKE
	ALLEN      BLAKE
	MILLER     CLARK
	ADAMS      SCOTT
	CLARK      KING
	BLAKE      KING
	
	ENAME      ENAME
	---------- ----------
	JONES      KING
	SMITH      FORD
	
	已选择13行。

	交叉连接(笛卡尔积)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值