百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

Oracle中的增、删、改和简单查询(oracle 删除和修改语句)

sinye56 2024-09-23 23:51 8 浏览 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里面的数据是或者关系。

相关推荐

程序员:JDK的安装与配置(完整版)_jdk的安装方法

对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...

Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置

一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...

麒麟系统安装JAVA JDK教程_麒麟系统配置jdk

检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...

学习笔记-Linux JDK - 安装&amp;配置

前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

测试员必备:Linux下安装JDK 1.8你必须知道的那些事

1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...

Linux 下安装JDK17_linux 安装jdk1.8 yum

一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...

在Ubuntu系统中安装JDK 17并配置环境变量教程

在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...

如何在 Linux 上安装 Java_linux安装java的步骤

在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

linux安装jdk_linux安装jdk软连接

JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...

linux安装jdk,全局配置,不同用户不同jdk

jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...

运维大神教你在linux下安装jdk8_linux安装jdk1.7

1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...

window和linux安装JDK1.8_linux 安装jdk1.8.tar

Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...

最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?

默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: