Oracle中的增、删、改和简单查询(oracle view 增删改)
mhr18 2024-09-15 21:34 21 浏览 0 评论
1.更新(update)
- 语法: update 表名 set 列名 =值,列名=值 where 条件
1.1 例子
- 修改所有的老师的性别为男
- update teacherinfo set tsex = '男';
- 修改王老师的性别为‘女
'update teacherinfo set tsex = '女'
where tname ='王老师';
2.删除(delete)
- 语法: delete from 表名 where 条件;
2.1 几种删除操作的区别
如删除所有的老师信息,有以下几种方式,他们的区别如下
- truncate: 删除表中所有的数据,会自动地提交事务
truncate table teacherinfo;
- delete :可以删除表中所有的数据,也可以删除条件指定的数据,需要手动提交事务删除满足条件的数据
delete from teacherinfo where tname ='王老师';
- drop : 删除整个表
delete from teacherinfo_bak ;
3.查询(select)
- 语法: select * from 表名 where 条件;
3.1 基础查询
- 查询出所有的员工信息
select * from emp;
- 查询出所有员工的编号,姓名,薪资
select empno,ename,sal from emp;
- 查询出所有员工的编号,姓名,薪资列名以中文显示
- select empno 员工编号,ename as 员工姓名,sal "薪 资" from emp;
- 注意:当为列取的别名中有特殊字符时,一定要用双引号把别名引起来,否则会报错找不到from关键字,Oracle中唯一出现双引号的地方。
- 查询出部门为30号的员工信息并且岗位为 'SALESMAN'
select *from emp where deptno = 30 and job = 'SALESMAN';
3.2 查询结果过过滤重复的列
- 单列去重:在要去重的列前面添加distinct关键字(Oracle独有),只针对这一列
- 查询出所有员工的岗位,并去重select distinct job from emp;
- 多列去重:?
3.2.1 例子
- 查询出所有员工的岗位,并且去重(单列去重)
select distinct job from emp;
- 查询出所有员工编号,岗位,并且去重(多列去重)
select distinct empno,job from emp;
3.3 对查询结果排序
- desc: 降序排序
- asc:升序排序(不写排序方式,默认为升序)
- 如果有第一排序和第二排序,则所有排序条件跟着order by后面,并且用逗号隔开。
- select empno , ename ,sal from emp order by sal desc, empno asc ;
3.3.1 例子
- 查询出所有员工的编号,姓名,薪资,并且根据员工的薪资进行降序排序
select empno , ename ,sal from emp order by sal desc, empno asc ;
- 查询出所有员工的编号,姓名,薪资,并且根据员工的薪资进行降序排序,如果薪资相等则按照编号进行升序排序
select empno , ename ,sal from emp
order by sal desc, empno asc ;
3.4 Oracle中字符串的连接
- 使用 || 符号连接字符串
3.4.1 例子
- 查询出所有员工的编号,姓名,薪资 ,显示在一列当中
select '员工编号:' || empno || '员工姓名:' || ename || '薪资:' || sal
员工信息 from emp;
3.5 查询中的运算符
3.5.1 查询中运用算术运算符
要执行基于数值的运算,可以在SQL命令汇总使用算术表达式。
算数表达式有number数据列席的列名、数值常量和连接他们的算数操作符组成。算术操作符包括+(加)、-(减)、*(乘)、/(除)。
日期可以进行加、减操作,加减的是天数,但是不能进行乘除操作。
但日期相减后得到的是天数。
3.5.2 查询中运用比较操作符
- 比较操作符用于比较两个表达式的值。比较操作符包括 =、!=、<、>、<=、>=、between---and(检查是否在两个值之间)、in(与列表中的值相匹配)、like(匹配字符模式)和 is null(检查是否为空)。
- 查询出部门编号不等于30的员工信息
select * from emp where deptno !=30;
select * from emp where deptno <>30;
3.5.3 查询中的逻辑操作符
逻辑操作符用于组合多个比较运算的结果以生成一个或真或假的操作。逻辑操作符包括AND(与)、OR(或)、NOT(非)。
- 查询出岗位为'CLERK','MANAGER','SALESMAN'的员工
1、select * from emp where job='CLERK' or
job ='MANAGER' or job ='SALESMAN';
2、select * from emp
where job in('CLERK','MANAGER','SALESMAN');
- 查询出岗位不为'CLERK','MANAGER','SALESMAN'的员工:
select * from emp
where job not in ('CLERK','MANAGER','SALESMAN');
3.5.4 查询中的日期类型
- 日期类型跟数值类型相加,加的是天数
- 日期类型跟日期类型相减,得到的是天数
- 查询所有员工的编号,姓名,入职日期,转正日期;
- select empno , ename ,hiredate,hiredate +90 from emp;
3.5.5 系统时间
- oracle中使用sysdate()函数代表系统当前时间
- 查询所有员工的编号,姓名,入职日期,工作年限
- select empno , ename ,hiredate ,trunc((sysdate- hiredate)/365,2) from emp;
3.6 模糊查询(like)
- _ : 一个下划代表一个字符
- % : 一个%代表多个字符
3.6.1 例子
- 查询员工姓名以‘S’开头的员工信息
select * from emp where ename like 'S%';
- 查询员工姓名中包含'O' 的员工信息
select * from emp where ename like '%O%';
- 查询出员工姓名第三位为’O‘ 的员工信息
select * from emp where ename like '__O%';
3.7 exists
- 存在则为true
3.7.1 例子
- 查询出哪些部门下面存在员工
select * from dept d where not exists
(select 1 from emp where deptno =d.deptno);
3.8 查询中的null
- is null: 为空
- is not null: 不为空
- 此处的null不是Java中的null,即代表什么都没有,空字符串也不是null
- Oracle中的null+任何值都等于null
- 如果碰到非null列和null列相加,例如薪资和奖金相加,不能直接加,应该把为null的类当作0处理,可以使用nvl()函数处理。
3.8.1 例子
- 查询出员工福利为空的员工信息
select * from emp where comm is null;
- 查询出员工福利不为空的员工信息
select * from emp where comm is not null;
3.8.2 当查询的字段的值有null
- 可以使用nvl(x, 0)函数把x的值由null变为0
- 给员工福利为空的员工加100元的福利
update emp set comm = nvl(comm,0) +100 where comm is null;
3.9 in操作
- 针对同一个条件列使用or时,就可以使用in,in里面的数据是或者关系。查询出工资为1000或者5000的员工信息
3.10 not in操作
- 取反,相当于取where xxx != xxx or yyy != yyyy
3.11 between and操作
- 当出现范围查询,如条件大于x,同时小于y时使用查询工资在1000到4000范围内的员工的薪资
笔试题:
1.exists和in的区别?
(1)因为exists是对外表做loop循环,每次循环在对内表(子查询)进行查询,所以当内表(子查询)大的时候,使用exists效率更高。
(2)in是把外表和内表做hash连接,先查询内表,再把内表结果和外表匹配,所以当外表大的时候,使用in效率更高(外表可以使用索引)。
(3)针对同一个条件列使用or时,就可以使用in,in里面的数据是或者关系。
相关推荐
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
-
IT之家5月21日消息,科技媒体linuxiac昨日(5月20日)发布博文,报道称代号为SageMargay的AlmaLinux9.6发行版已上线,距上一版本9.5发...
- Java最新学习路线,系统全面,零基础适用
-
首先,我个人比较推崇的学习方法是:先学java前段,也就是HTML,css,js,因为学习java以后肯定是往javaee方向发展的,学习完前端,在学习后端很多东西比计较容易理解!其中J2SE是关键...
- 深入理解数据库事务(数据库事务处理的理解)
-
Transaction作为关系型数据库的核心组成,在数据安全方面有着非常重要的作用,本文会一步步解析事务的核心特性,以获得对事务更深的理解。什么是事务数据库几乎是所有系统的核心模块,它将数据有条理地保...
- IvorySQL 4.4 发布(1044mysql)
-
IvorySQL4.4已于2025年3月10日正式发布。新版本全面支持PostgreSQL17.4,新增多项新功能,并修复了已知问题。增强功能PostgreSQL17.3增强功...
- Oracle 与 Google Cloud 携手大幅扩展多云服务
-
据DCD4月10日报道,甲骨文(Oracle)与谷歌云(GoogleCloud)深化合作,全力扩展多云产品。双方计划为OracleDatabaseGoogleCloud解决方案新增11...
- Izzi 利用 Oracle 云提高计费效率和客户体验
-
据thefastmode网5月2日报道,墨西哥电信运营商Izzi宣布采用Oracle云基础设施(OCI),对其业务支持系统(BSS)进行现代化改造增强客户体验,已经成功完成。通过在OCI上运行...
- 好莱坞群星也有明星脸?硅谷科技名人本尊分身比一比
-
假如有部电影齐聚了众科技名人角色,如同许多好莱坞大牌卡司所共同主演的《瞒天过海》(Ocean’sEleven)那样,演出彼此在商场上竞逐、或共同对抗外来竞争捍卫硅谷的故事,更在剧中有不少对手戏,会不...
- 澳大利亚Find My iPhone被黑 多人被黑客锁机
-
FindMyiPhone本来是一个用于协助找回被盗手机的好工具,但是现在,澳洲的苹果用户发现他们的FindMyiPhone变成了黑客的帮凶。昨天,这名自称为OlegPliss的黑客使用Fin...
- 服务器密码错误被锁定怎么解决(服务器密码失效)
-
#服务器密码错误被锁定解决方案当服务器因多次密码错误导致账户被锁定时,可以按照以下步骤进行排查和解决:##一、确认锁定状态###1.检查账户锁定状态(Linux)```bash#查看账户锁定...
- 凌晨突发的数据库重大故障,我排查了一整天……
-
春节期间过得太热闹了,上班确实没啥状态,这不刚发生的一个重大性能故障,排查了整整一天,后面的领导都站成了一排,本次把故障发生的详细分析过程分享给大家!本次故障发生在凌晨,核心应用卡顿非常严重,Orac...
- Oracle锁表紧急处理!3招快速解锁方案
-
开篇:突发故障现场凌晨1点,某电商系统突然卡顿,数千笔支付订单无法完成——数据库出现死锁,技术团队紧急响应...(遇到类似情况的,欢迎在评论区分享经历)一、问题重现:死锁是如何产生的?典型场景:问题根...
- JetBrains DataGrip Mac中文破解版V2025.1下载安装教程
-
DataGripforMac是由JetBrains开发的数据库集成开发环境(IDE),专为数据库管理员和开发人员设计。它支持多种数据库(如MySQL、PostgreSQL、Oracle、SQ...
- 电脑装安卓系统,安卓X86版5.1 RC1下载
-
日前,谷歌放出了Android-x865.1的第一个候选版本Android-x865.1RC1,该版本基于Android5.1.1r24Lollipop开发,更新包括大量x86(32位)代...
- 来来来!一文告诉你Eclipse的正确安装使用姿势,你都清楚吗?
-
前言本学习笔记是有关如何设置Eclipse的详细说明。即使你天天在使用它,但是,相信我,或许你并不足够了解它。安装Java运行时环境Eclipse是Java应用程序,因此设置Eclipse的第一步是安...
- 分享收藏的 oracle 11.2.0.4各平台的下载地址
-
概述oracle11.2.0.4是目前生产环境用的比较多的版本,同时也是很稳定的一个版本。目前官网上已经找不到下载链接了,有粉丝在头条里要求分享一下下载地址。一、各平台下载地址1.1Linuxx...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)