欢迎来到小居数码网-一家分享数码知识,生活小常识的网站,希望可以帮助到您。

当前位置:生活小常识 > 数码知识 >
优质

oracle数据库增删改查命令(oracle的增删改查语句)

数码知识

林洁雯优秀作者

原创内容 来源:小居数码网 时间:2024-08-15 18:13:01 阅读() 收藏:24 分享:64

导读:您正在阅读的是关于【数码知识】的问题,本文由科普作家协会,生活小能手,著名生活达人等整理监督编写。本文有1897个文字,大小约为8KB,预计阅读时间5分钟。

1.更新(update)语法: update 表名 set 列名 =值,列名=值 where 条件1.1 例子修改所有的老师的性别为男update teacherinfo set tsex = '男';修改王老师的性别为‘女'update teacherinfo set tsex = '女' where tname ='王老师';2.删除(delete)语法: delete from 表名 where 条件;2.1 几种删除操作的区别如删除所有的老师信息,有以下几种方式,他们的区别如下

oracle的增删改查语句

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 enamelike '__O%';

    3.7 exists

  • 存在则为true
  • 3.7.1 例子

  • 查询出哪些部门下面存在员工
  • select * from dept d where notexists(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里面的数据是或者关系。

    上面就是小居数码小编今天给大家介绍的关于(oracle的增删改查语句)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。

    94%的朋友还想知道的:

    (405)个朋友认为回复得到帮助。

    部分文章信息来源于以及网友投稿,转载请说明出处。

    本文标题:oracle数据库增删改查命令(oracle的增删改查语句):http://sjzlt.cn/shuma/155945.html

    猜你喜欢