Oracle数据库第三讲

来源:互联网 发布:java平台下载 编辑:程序博客网 时间:2024/04/29 06:35

概述:子查询和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';

原创粉丝点击