问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle 单表查询受外键影响吗?

发布网友 发布时间:2022-04-07 20:38

我来回答

3个回答

懂视网 时间:2022-04-08 01:00

(一)基本语句 1、语法
  • select 【distinct】 * | {列名...}  from 表名 【where {条件}】
  • 2、注意 1)distinct:指显示结果时,是否剔除重复数据
  • 指查询的字段数据,全部一致,才算重复。
  • SELECT distinct deptno,job,empno FROM EMP order by deptno;
  • 查询的这(deptno,job,empno)三个字段需要一样,才算重复。
  • SELECT a.deptno,a.job FROM EMP a; 
    SELECT distinct a.deptno,a.job FROM EMP a order by a.deptno
    
    
  • 查询的这(deptno,job)2个字段需要一样

  • 2)去重:
    SELECT a.deptno,a.job FROM EMP a; 
    SELECT distinct a.deptno,a.job FROM EMP a order by a.deptno
  • 查询的这(deptno,job)2个字段需要一样
  • (二)其他用法 1、算数表达式 1)方法:
  • ABS(x) :绝对值
  • sign(x) :判断正负。
  • 正值返回1,负值返回-1,0返回0
  • ceil(x):向上取整。
  • select ceil(3.1),ceil(0),ceil(-3.9) from dual; --4、0、-3
  • floor(x) :向下取整。
  • power(x,y) :返回x的y次幂 
  • mod(x,y) :返回x除以y的余数
  • round(x[,y]) :返回四舍五入后的值 
  • trunc(x[,y]) :返回x按精度y截取后的值 。*
  • select trunc(5555.66666,2.1),trunc(5555.66666,-2.6),trunc(5555.033333) from dual;

  • 显示:5555.66、5500、5555
  • sqrt(x) :返回x的平方根
  • 2)、实例:显示每个雇员的年工资
  • 语句:
  • SELECT a.ename,(a.sal*13+nvl(a.comm,0)*13) as "年薪", a.ename||'-'||(a.sal*13+nvl(a.comm,0)*13) as "拼接字串"FROM EMP a ;

  • comm:为奖金
  • 注意:
  • nvl(字段,0):处理null值
  • as "" :增加别名
  • ||:拼接字串
  • 2、where 条件 1)to_char()函数:
    SELECT * FROM EMP a WHERE to_char(a.hiredate,'yyyy-mm-dd') > '1981-11-17';

    2)like:‘%’-0~多个;‘_’-1个 3)between:薪水在2000~2500的员工
    SELECT * FROM EMP a WHERE a.sal between 2000 and 2500;--包含本身,都是闭区间SELECT * FROM EMP a WHERE a.sal >= 2000 and a.sal <= 2500;

    4)in:员工编号号为7369,7521,7654的员工
    SELECT * FROM EMP a WHERE a.empno in (7369,7521,7654);


    5)is null :没有上级的员工
    SELECT * FROM EMP a WHERE a.mgr IS NULL;

    6)逻辑操作符:NOT 、And 、Or
    SELECT * FROM EMP a WHERE (a.sal >500 or a.job='MANAGER') and a.ename like 'J%';
  • and 与 or的优先级:NOT > AND > OR
  • where 后面如果有or的条件,则or自动会把左右的查询条件分开
  • 用()来区分执行顺序
  • 7)order by:对结果进行排序(先有结果,支持对别名排序)
  • asc-升序(默认)/desc-降序
  • 排序实例
  • SELECT * FROM EMP a order by a.sal;--一个条件
    SELECT * FROM EMP a order by a.deptno , a.hiredate desc;--2个条件

  • 先按deptno 排序
  • 在第一个排序结果中,按第二个条件。
  • 按列的别名排序
  • SELECT a.ename,(a.sal*13+nvl(a.comm,0)*13) as "年薪" FROM EMP a order by 年薪;
  • 这边可以按照列的编号排序
  • SELECT a.ename,(a.sal*13+nvl(a.comm,0)*13) as "年薪" FROM EMP a order by 1;
  • 这边的编号,不能超出显示的列的数量。

  • 二、聚合函数:max、min、avg、sum、count
    1、取最高和最低工资:max、min 1)SQL实例
    SELECT max(a.sal),min(a.sal) FROM emp a ;
    SELECT max(a.sal*13) , min(a.sal*13) FROM emp a ;
  • --放在一起,前提条件是max 和min都返回一个值
  • 2)注意:max 与min 只能返回一个值。
    2、显示平均工资与工资总额:avg、sum 1)SQL实例
    SELECT round(avg(a.sal),2),sum(a.sal) FROM emp a ;
  • round:四舍五入
  • 2)注意:avg:计算平均值,不会把sal为null的统计在内
    SELECT avg(a.comm) FROM emp a ;
    SELECT sum(a.comm)/count(*) FROM emp a ;
  • 为空的参与,可以这么解决
  • 3、计算总的员工数:count 1)SQL实例
    SELECT count(*) FROM emp a ;SELECT count(a.empno) FROM emp a ;

    2)注意:
    SELECT count(a.comm) FROM emp a ;
  • 不统计 null 的列。
  • 4、扩展练习 1)显示工资最高的员工的名字,工作岗位
    SELECT a.ename,a.job FROM emp a WHERE a.sal = (SELECT max(a.sal) FROM emp a);
  • 子查询
  • 可以先查出最高工资
  • 然后查出哪位员工的工资是这么多
  • 分析执行顺序
  • sql执行默认是从右到左执行
  • 先执行:SELECT max(a.sal) FROM emp a 得到 5000
  • 再执行:SELECT a.ename,a.job FROM emp a WHERE a.sal =5000;
  • 2)显示工资高于平均工资的员工信息
    SELECT a.ename,a.job FROM emp a WHERE a.sal > (SELECT avg(a.sal) FROM emp a);

    三、分组:group by 和 having
    1、解释:
  • group by:对查询的结果进行分组统计
  • having:修饰分组的条件,限制分组显示结果。
  • 不支持别名
  • 2、实例: 1)显示每个部门的平均工资和最高工资
  • SQL:
  • SELECT avg(a.sal), max(a.sal),a.deptno FROM emp a group by a.deptno;
  • 分析:
  • SELECT avg(a.sal), max(a.sal),a.deptno FROM emp 报错
  • avg(a.sal) 和max(a.sal)为一个结果,而 a.deptno 很多结果。
  • 2)显示每个部门的每种岗位的平均工资和最低工资
  • SQL:
  • SELECT avg(a.sal), max(a.sal),a.deptno,a.job FROM emp a group by a.deptno ,a.job order by a.deptno ;
  • 分析:
  • 先对【部门】分组,再对【岗位】分组。
  • 【排序】都是放在末尾

  • 3)显示部门平均工资低于2000 的部门号和它的平均工资
  • SQL:
  • SELECT avg(a.sal) as "平均工资", a.deptno FROM emp a group by a.deptno having avg(a.sal)<2000
  • 分析:
  • having:限制分组显示结果。后面不支持别名,只能重新计算。
  • 先分组,计算各个部门的平均工资。再利用having对分组后的结果进行删选。
  • 3、原则总结: 1)聚合函数(avg...)只能出现在选择列表、having、order by 子句中,绝不能出现在group by  函数 和where中。 2)如果在 select 语句中同时包含 group by 、having、order by 那么他们的顺序是 group by 、having、order by 。 3)在选择列中如果有列、表达式和聚合函数,那么这些列和表达式必须有一个出现在 group by 子句中,否则就会出错。
  • SELECT avg(a.sal), max(a.sal),a.deptno,a.job FROM emp a group by a.deptno, a.job;
  • 这边的 deptno 和 job 必须都要 出现在 group by 中。
  • 原因为聚合函数 每次返回一个结果

  • Oracle基础(四):单表查询

    标签:order by   group by   having   where条件   聚合函数   

    热心网友 时间:2022-04-07 22:08

    在Oracle数据库中,外键是强制实施参照完整性的一种方式,我们约定主键表为主表,外键表为从表,使用外键就意味着一个表中的值在另一个表中也必须出现,指挥在修改时受到影响,在查询时是不受影响的。

    或者在查询时也可以禁用外键,语法参考:

    热心网友 时间:2022-04-07 23:26

    正确答案应该是不受影响的
    oracle 单表查询受外键影响吗?

    在Oracle数据库中,外键是强制实施参照完整性的一种方式,我们约定主键表为主表,外键表为从表,使用外键就意味着一个表中的值在另一个表中也必须出现,指挥在修改时受到影响,在查询时是不受影响的。或者在查询时也可以禁用外键,语法参考:

    oracle里的外键是不是影响效率,影响到什么程度

    肯定影响啊。插入数据的时候,要去B表查看,该数据是否存在于B表,删除B表数据的时候,要查看外头时候有关联中的数据。虽然这些都是oracle系统管理的,但是想想就知道需要资源,如果B表中的数据比较多,那么查找就慢,同样的删除的时候,关联的表数据要是多,也会影响,关联的表越多越影响。

    oracle中 主键和外键是什么意思?什么地方采用呢?

    主键就是区别这个表的唯一关键字 比如一个学生表 学号不能重复且唯一 学号就是关键字 外键就是跟其他表联系的字段 还是比如有一张学生表 还有一张选课表 这个时候要修改学生表中的学号 选课表里对应的就也得变 这样就需要给选课表加学号作为外键约束 这样当你修改 学号时 所有外键关联的就都改了 ...

    oracle中外键对表的修改、删除、插入会有怎么样的印象。 外键是从另...

    1、外键的概念:外键是关系数据库三个完整性的五个约束条件之一,是表与表之间建立的一种关系。在Oracle数据库的scott/tiger用户中,表Dept和Emp通过外键进行了关联。在这里Dept表叫主表,Emp表叫从表,外键是字段Deptno。2、加入外键的条件:a、两个表有相同属性字段,取值范围相同;b、外键在主表中...

    oracle的外键怎么使用?

    2、所以,外键只是辅助,并不能起到你说的【B.NAME是否也自动出现张三两个字】。3、外键的作用是能够避免如下情况。如 【班级信息表】存放的是班级信息表。【学生表】存放的是学生信息,包含班级信息。这个时候 在【学生表】中存放的班级信息应该在【班级信息表】存在才合法,自己人为控制的话难免有...

    小议Oracle外键约束修改行为(一)

    Oracle的外键用来限制子表中参考的字段的值 必须在主表中存在 而且在主表的记录发生变化导致外键参考唯一约束值发生了变化时 定义了一系列的动作 在SQL 标准中定义了几种外键改变后 如何处理子表记录的动作 其中包括 限制Restrict 这种方式不允许对被参考的记录的键值执行更新或删除的操作 置为空Set to...

    oracle 为什么查询数据很快 但是插入数据很慢

    跟索引关系不大 看看你这个表有没有外键吧 我之前的项目里就出现过这个情况,一个记录INSERT很慢,后来定位是外键的问题,把 FK去掉之后,速度可是瞬间完成。只不过去掉外键也有可能造成数据异常,这个需要应用程序来做部分的保证了!

    多表连接查询和多次单表查询哪个效率高?为什么?

    不知道有没有注意到,debug所打印出来的多表联合查询, 都是拆分为“单个表查询”,然后使用PHP处理的。 Happy coding :-) 是做表连接查询还是做分解查询要具体情况具体分析。 如果数据库的结构合理,索引设计得当,表连接的效率要高于分解查询。比如,在有外键的时候,数据库可以为外键建表并建立索引从而提升多个表连接...

    “oracle主键、外键、主键约束、唯一约束”这几个词语如何理解?

    主键:就是这个表的目录,以方便你查询、更新等等,既然是“目录”,所以不可能有重复的定义出现,所以也就自动有一个主键约束。外键:就是这个表外在的约束,要求某一列值,必须与外面的某一数据相符 ,是表与表之间数据的约束 。主键约束 :就是要求,主键不能重复,才可以生成“目录”。唯一约束 ...

    oracle怎么查看外键在哪个表

    如果不了解表之间的关系,可以通过以下语句查询到外键是建在哪张表上的:select * from dba_constraints where constraint_name='xxx' and constraint_type = 'R';例如:我的程序日志中报如下错误,我要知道外键是在那个表上.2015-09-08 18:28:18 [ main:261597003 ] - [ ERROR ] java.sql....

    oracle查外键外键约束 oracle查看表的外键 oracle的主键和外键 oracle查看外键 oracle创建表外键 oracle 外键约束 oracle创建外键 oracle设置外键 oracle数据库建立外键
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    ...现在说的最多一句话就是不想解释了让我相信他 我问他什么的说不想... 猫妈妈买回的是什么? 公务员考试中要求的“2009年应届毕业生”怎么界定? 165身高女生标准体重 投诉家里养了很臭的鸡鸭怕 No.93 希望皇霍普·真皇的卡片信息 邻居在我家边上养了好多鸡,夏天气味很臭,严重影响我的生活 手上总起小水泡怎么回事 ...问我,你为什么选择我们公司??你有什么优势可以让我们录用你?_百度... 艾滋病患者舌头发白怎么回事 饿了么商家怎么不接固定地址订单 的少儿超能宝一个月了,我想退保,请问扣多少钱 京东白条闪付身份证认证不了怎么办? 太平洋超能宝白癜风能理赔吗? 超能宝交了2700半年退保能退多少钱 饿了么订单客人电话打不通,地址不详细怎么办 - 信息提示 脸过敏导致下巴起皮 干 痒应怎么办? 上传的身份证照片没有问题,为什么审核没有通过? 少儿超能宝2.0保险理赔 昨天烫了的蒜台泡了一晚上还能吃吗? 每到秋冬下巴就又干又起皮是怎么回事? 千丝万缕打一生肖,不要乱说的,说明原因的 荣耀手机和荣耀IPAD怎么同步 京东实名为何我上传照片老是失败? 下巴老起皮怎么回事 财源求证3肖6码 荣耀手机怎样同步连接桌面音乐 下巴起皮是怎么回事,有点像癣一样。但是不疼不痒 我的下巴起皮发痒是缺水现象吗? 京东金条为什么上传身份证照片没反应 在网上营业厅购买卡提示身份证照片信息审核失败了怎么办? 六个数复式三中三共多少组 网上办理身份证照片审核没有通过还能再次申请办理么? 为什么京东金条上传身份证时被驳回 深圳欧阳杰是骗子吗?那个6肖选1肖的 生肖的资料 YY频道怎么设置声音 真珍珠的首饰能带着洗澡吗? 请问我长期戴着珍珠项链洗澡会不会对珍珠造成损害? 珍珠路路通吊坠能带着洗澡吗 如何保养珍珠项链 珍珠项链在洗澡时要取下来吗? 自然珍珠项链不能贴水吗 珍珠项链戴过之后可以用清水浸泡吗 晚上睡觉可以带着珍珠项链吗 珍珠项链多带对保养好吗?睡觉的时候能戴着吗 珍珠项链戴久了会掉色麽 请问一下各位网络大神,有什么好用的电脑软件。跟火绒之类的这些类似的? 请问哪个杀毒软件好?有火绒,qq安全管家,哪个好?