Oracle数据库第三讲

概述:子查询和DML语言使用

一、子查询

概念 :当一个查询的结果是另一个查询的条件时,称之为子查询

使用子查询注意事项:

         子查询可以嵌套多层

         子查询需要圆括号()括起来

 子查询可以放到查询字段的位置

 子查询可以放到where条件位置

 子查询可以放到from后当做临时表来使用

 子查询中也可以使用主查询中的字段和变量

语法:

SELECT select_list 

FROM table 

WHERE expr operator

  (SELECT select_list 

       FROM table);

l 子查询 (内查询在主查询之前一次执行完成。

l 子查询的结果被主查询使用 (外查询)

单行子查询:

子查询的结果返回的一行且一列,就只有一个值,子查询可以返回空行 没要查询到结果是可以的。

单行操作符对应单行子查询

单行操作符

>、>=、 <、 <= 、<>、=

SQL> select * from emp where job=( select job from emp where empno=7876) and sal>( select sal from emp where empno=7521);

子查询含有组函数

SQL> select * from emp where sal>(select avg(nvl(sal,0)) from emp);

多行子查询:

返回多行结果,使用多行比较操作符。

In   等于列表中的任何一个

Any 子查询返回的任意一个值比较 相同还有some

All  和子查询返回的所有值比较  

Exists

//查询岗位与部门编号为10相同的员工信息 不包含自己。

SQL> select * from emp where job in(select job from emp where deptno=10) and deptno<>10;

二、DML(Data Manipulation Language – 数据操作语言) 简介

概述:DMLData Manipulation Language)数据操纵语言,SQL的分类之一,此外还有DDLData Definition Language数据定义语言DCLData Control Language数据控制语言DML包括:INSERTUPDATEDELETE。注意,select语句属于DQL(Data Query Language)

DML执行条件:

• 向表中插入数据

• 修改现存数据

• 删除现存数据

a) 插入语句

使用 INSERT 语句向表中插入数据。

INSERT INTO table [(column [, column...])] 

VALUES (value [, value...]);

使用这种语法一次只能向表中插入一条数据

注意:

l 为每一列添加一个新值。

l 按列的默认顺序列出各个列的值。 

l 在 INSERT 子句中随意列出列名和他们的值。

l 字符和日期型数据应包含在单引号中

SQL> insert into users(username,password,name,address,zip) values('rrmy','1234','marico_zhang','北京',100089);

备注:如果是字符串加’’ 如果是数字可与加’’也可以不加===>一般不加

SQL> commit;

注意:oracle数据库在DOS命令中执行插入,修改等操作时,必须手动完成提交。否则不会(正真)插入成功。

在插入完整的记录是users()中的表对应的字段可以省略不写.但一定要与数据库中表的结构对应才行。

常见面试题:

//备份一张表

SQL> create table usess as select * from users;

//清空表中的记录

SQL> delete from usess;

//使用插入语句把users表中记录插入到usess中

SQL> insert into usess(username,password,name,address,zip) select username,password,name,address,zip from users;

SQL> commit

注意:

l 不必书写 VALUES 子句。 

l 子查询中的值列表应于 INSERT 子句中的列名对应

b) 更新数据

采用update语法进行更新数据:

语法如下:

  UPDATE table 

  SET column = value [, column = value, ...]

  [WHERE  condition];

备注:一次可以更新多条记录

update语句中使用子查询

//更新huxz的邮编与用户liucy的邮编一致

SQL> update users set zip=(select zip from users where username='liucy') where username='huxz';

//备注:在更新数据的时候 where条件中也可以使用子查询。

c) 删除数据

 在表中如果某些数据不在需要就可以使用delete语句进行删除,并释放该数据所占用的存储空间删除语法如下:

DELETE [FROM]   table 

[WHERE   condition];

备注:delete语句只是从表中删除数据,不会删除表结构.删除表结构采用drop语句。

注意:删除表中的数据时,一定要考虑表的约束(否则会出现一些异常信息)

//清空表  delete from 表名 ||delete 表名  

//删除数据 where条件与更新一致,必须保证唯一性(主键是唯一)条件

SQL> delete from users where username='test';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值