Oracle数据库教程(第三章 操作数据库)笔记

本文详细介绍了Oracle数据库中操作数据的基本方法,包括如何插入、更新和删除数据,以及如何使用SELECT语句进行各种复杂的查询操作,如简单查询、筛选、条件查询、模糊查询、排序、分组、多表关联查询和子查询的运用。
摘要由CSDN通过智能技术生成

三、操作数据库

3.1 插入数据(insert)

1.格式:
insert into 表名(列名…) values(值…)

案例:在dept表中,使用insert语句添加一条记录

insert into dept(deptno,dname,loc)
values(23,'bsl','berlin');

insert into dept
values(24,'qianfeng','beijing');    --表名后若不写列名,添加记录时要先desc dept,注意插入数据与列名的一一对应
/*
insert into dept
values(25,'tfl','hql'),(26,'testing','siceng');*/   --出错

2.批量插入数据
insert into 表名(列名)
select 查询语句

insert into emp_temp
select * from emp;

3.2 更新数据

update 表名 set 列=值 where 条件

例:把emp表中职务是销售员(SALESMAN)的工资上调20%

update emp
set sal=sal*1.2
where job='SALESMAN';

• update语句也可以与select语句结合使用。

例:把emp表中工资小于2000的雇员工资调整为管理者(MANAGER)的平均工资。

update emp
set sal=(
select avg(sal) from emp
where job='MANAGER')
where sal<2000;

update emp
set sal=(select avg(sal) from emp where job=‘MANAGER’)
where sal<2000;

3.3 删除数据

格式:delete from 表名 [where 条件]

例:删除姓名是”SMITH”个人信息

delete from emp where ename='SMITH';

注:使用delete语句删除数据时,oracle系统会产生回滚记录,所以这种操作可以使用rollback语句来撤销。

3.4 检索数据

用户对表或视图的操作就是检索数据,使用select语句实现。

select {
  [ distinct] 列名...}
[into 表名]         --查询的列重新生成一个新的表
from 表名
[where 选择条件]
[group by 列名]
[having 选择条件]
[order by 列名]

注意顺序

3.4.1 简单查询

• 简单查询: 只包含SELECT子句和FROM子句的查询
• 数据将按照SELECT子句后面指定的列名的顺序来显示
• 如果使用星号(*),则表示检索所有的列,数据按照表结构的
自然顺序来显示。

  1. 检索所有的列 *

案例1:
查询dept表中所有的数据

select * from dept;

案例2:
查询表dept和salgrade

select * from dept,salgrade;
  1. 检索指定的列
    select 列名1,列名2… from 表名

案例:
在SCOTT模式下,检索emp表中指定列(job,ename,empno)

select job,ename,empno from emp;

补充:ROWID:行标识符,是Oracle数据库内部使用的隐藏列

案例:检索emp表指定的列job和ename,还包括rowid伪列

select rowid,ename,job,empno from emp;
  1. 带有表达式的select子句 ,算数运算符:+ - * / ()

案例:
检索emp表的sal列,把其值调整为原来的1.1倍

select sal*(1+0.1),sal from emp;
  1. 为列指定别名
    两种:as关键字;直接指定列名

案例:
检索emp表的指定列(empno,ename,job),并使用as关键字为这些列指定中文别名(员工编号,员工名称,职务)

select empno as "员工编号",ename as "员工名称",job as "职务" from emp;

:这里的别名as后必须用双引号“”,不能用单引号‘’,要注意区别连接符||

  1. 显示不重复的记录 distinct

3.4.2 筛选查询

• 在SELECT语句中,WHERE子句位于FROM子句之后,其语法格式
如下:
SELECT 列名
FROM 表名
WHERE 选择条件

3.4.3 条件查询:where关键词

格式:select 列名 | * from 表名 where 选择条件

例: 查询工资高于1200的有哪些人?
注意:在进行比较筛选的时候,字符串必须使用单引号标识。

select * from emp
where sal>1200;
ALL关键字

只有与所有的元素比较值都为true,才返回数据行。

案例:
使用all关键字过滤工资(sal)同时不等于3000,950,800的员工记录

select empno,sal,ename from emp
where sal !=all(3000,950,800);

注意:在进行比较筛选的时候,字符串和日期值必须使用单引号表示

IS [NOT] NULL关键字

判断字段中是否存在内容:
1)内容为空:is null;
例:查询每月可以得到奖金的雇员信息

select * from emp 
where comm is not null

2)内容不为空:is not null
例:查询没有奖金的雇员

select * from emp
where comm is null;

注意:如果查询出现多个条件,在where语句之后,条件与条件之间用and进行连接。

例:要求查询出,基本工资大于1500,同时可以领取奖金的雇员信息。

select * from emp
where sal>1500 and comm is not null;
OR关键字

满足其中的一个条件,使用关键字or来进行连接。

例:查询出基本工资大于1500,或者可以领取奖金的雇员信息。

SELECT * FROM emp 
WHERE sal>1500 OR comm IS NOT NULL ;
NOT关键字

取反,把真的条件变为假,假的变为真

例:查询出基本工资不大于1500,同时不可以领取奖金的雇员信息。

SELECT * FROM emp 
WHERE NOT 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值