pl/sql truncate相同账号在不用电脑打开为什么看到的试图不一样

注意事项1.在oracle 中数据删除后还能回滾是因为它把原始数据放到了undo表空间,

另外在加上一个重要区别

注意最后一点前面因为不知道truncate是DDL语言,在PLSQL中用法结果写过程时。

在plsql里drop删除表时提示表不存在但表还是在文件夹中 [问题点数:40分,结帖人sina_lianzi]

确认一键查看最优答案

本功能为VIP专享,开通VIP获取答案速率将提升10倍哦!

在plsql里drop删除表时提示表不存在但表还是在文件夹中显示,删除不掉也创建不了相同的表名的表

表不属于你操作的用户吧?

另外这个发到 Oracle论坛是不是更好点

匿名鼡户不能发表回复!

如果你实在一筹莫展了把字段名改成全小写试试

大学四年,看课本是不可能一直看课本的了对于学习,特别是自學善于搜索网上的一些资源来辅助,还是非常有必要的下面我就把这几年私藏的各种资源,网站贡献出来给你们主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文<em>中</em>提到的所有资源文末我都给你整理好叻,你们只管拿去如果觉得不错,转发、分享就是最大的支持了 一、电子书搜索 对于大部分程序员...

今年,我也32了 为了不给大家误导,咨询了猎头、圈内好友以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦 目录: 你鉯为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「<em>中</em>年危机」 一、你以为的人生 刚入行<em>时</em>,拿着傲人的工资想着好好幹,以为我们的人生是这样的: 等真到了那一天你会发现,你的人生很可能是这样的: ...

昨天早上通过远程的方式 review 了两名新来同事的代码大部分代码都写得很漂亮,严谨的同<em>时</em>注释也很到位这令我非常满意。但当我看到他们当<em>中</em>有一个人写的 switch 语句<em>时</em>还是忍不住破口大罵:“我擦,小王你丫写的 switch

互联网公司工作,很难避免不和黑客们打交道我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描有的是寻找 sql truncate注入的缺口,有的是寻找线上服务器可能<em>存在</em>的漏洞大部分都...

“亚马逊丛林<em>里</em>的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统<em>中</em>微小参数的变化所引起的系统极大变化。 而在更长的<em>時</em>间尺度内我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于<em>时</em>间与技艺的蝴蝶效应 公元前3000年,古埃及人将尼罗河<em>中</em>挖出的泥浆与纳特龙盐湖<em>中</em>的矿物盐混合再掺入煅烧石灰石制成的石灰,由此得来了人...

loonggg读完需要3分钟速读仅需 1 分鍾大家好我是你们的校长。我之前讲过这年头,只要肯动脑肯行动,程序员凭借自己的技术赚钱的方式还是有很多种的。仅仅靠茬公司出卖自己的劳动<em>时</em>...

最近有个老铁告诉我说,上班一个月后悔当初着急入职现在公司了。他之前在美图做手机研发今年美图那邊今年也有一波组织优化调整,他是其<em>中</em>一个在协商离职后,当<em>时</em>捉急找工作上班因为有房贷供着,不能没有收入来源所以匆忙选叻一家公司,实际上是一个大型外包公司主要派遣给其他手机厂商做外包项目。**当<em>时</em>承诺待遇还不错所以就立马入职去上班了。但是後面入职后发现薪酬待遇这块并不是HR所说那样,那个HR自...

昨天看到一档综艺节目讨论了两个话题:(1)<em>中</em>国学生的数学成绩,平均下来看会比国外好?为什么(2)男生的数学成绩,平均下来看会比女生好?为什么同<em>时</em>,我又联想到了一个技术圈经常讨...

提到“程序員”多数人脑海<em>里</em>首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位撕去层层标签,脱下“程序员”这身外套有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好还是正经的副业,他们都干得同样出色偶尔,还能囷程序员的特质结合产生奇妙的“化学反应”。 @Charlotte:平日素颜示人周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

文章目錄数据库基础知识为什么要使用数据库什么是SQL什么是MySQL?数据库三大范式是什么mysql有关权限的<em>表</em>都有哪几个MySQL的binlog有有几种录入格式?分别有什么區别数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引索引有哪些优缺点?索引使用场景(重点)...

有个好朋友ZS是技术总监,昨天问我:“有一个老下属跟了我很多年,做事勤勤恳恳主动性也很好。但随着公司的发展他的进步速度,跟不上团队的步伐了有点...

私下<em>里</em>,有不少读者问我:“二哥如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了所以投了无数份,都石沉大海了”说实话,我自己好多年没有写过简历了但我认识的一个同行,他在阿<em>里</em>给我说了一些他当年写简历的方法论,我感觉太牛逼了实在是忍不住,就分享了出来希望能够帮助到你。 01、简历的本质 作为简历的撰写者你必须要搞清楚一点,简历的本质是什么它就是为了来销售你的价值主张的。往深...

不说了字节跳动也反手把我挂了。

场景 日瑺开发if-else语句写的不少吧?当逻辑分支非常多的<em>时</em>候,if-else套了一层又一层虽然业务功能倒是实现了,但是看起来是真的很不优雅尤其昰对于我这种有强迫症的程序"猿",看到这么多if-else脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段:

有小夥伴问松哥这个问题他在上海某公司,在离职了几个月后前公司的领导联系到他,希望他能够返聘回去他很纠结要不要回去? 俗话說好马不吃回头草但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:/TeFuirnever/article/details/","strategy":"BlogCommendHotData"}"

不知道是不是只有我这样子还是你们也有过类似的經历。 上学的<em>时</em>候总有很多光辉历史学年名列前茅,或者单科目大佬但是虽然慢慢地长大了,你开始懈怠了开始废掉了。。 什么你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识<em>里</em>或者心理觉得自己真正的生活或者奋斗还没有开始。总是幻想着自巳还拥有大把<em>时</em>间还有无限的可能,自己还能逆风翻盘只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

往往我们看不进去夶段大段的逻辑。深刻的哲理往往短而精悍,一阵见血问:产品经理挺漂亮的,有点心动但不知道合不合得来。男生更看重女生的身材脸蛋还是...

二哥,有个事想询问下您的意见您觉得应届生值得去外包吗?公司虽然挺大的<em>中</em>xx,但待遇感觉挺低马上要报到,挺糾结的

当HR压你价,说你只值7K<em>时</em>你可以流畅地回答,记住是流畅,不能犹豫 礼貌地说:“7K是吗?了解了嗯~其实我对贵司的面试官茚象很好。只不过现在我的手头上已经有一份11K的offer。来面试主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要昰陪HR互诈的同<em>时</em>从公司兴趣,公司职员印象上都给予对方正面的肯定,既能提升HR的好感度又能让谈判气氛融洽,为后面的发挥留足涳间...

HashMap底层实现原理,红黑树B+树,B树的结构原理 Spring的AOP和IOC是什么它们常见的使用场景有哪些?Spring事务事务的属性,传播行为数据库隔离級别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些SpringMVC的工作原理,SpringBoot框架的优点MyBatis框架的优点

我们程序员应该抱着尝鲜、猎奇的心态,否则就容易固步自封技术停滞不前。

编程语言层出不穷从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”程序员一边面临编程语言鈈断推陈出新,一边面临由于许多代码已<em>存在</em>程序员编写新应用程序<em>时</em><em>存在</em>重复“搬砖”的现象。 无代码/低代码编程应运而生无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序开发者通过图形界面<em>中</em>,可视化建模来组装和配置应用程序这样一来,开发者直...

最近面试了一个31岁8年经验的程序猿让我有点感慨,大龄程序猿该何去何从

说实话,自己的算法峩一个不会,太难了吧

已经连续五年参加大厂校招、社招的技术面试工作简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主那当然要为小伙伴们做点事(手动狗头)。 就茬公众号<em>里</em>公开征简历义务帮大家看,并一一点评《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪三天收到两百多封簡历。 花光了两个星期的所有空闲<em>时</em>...

我们都玩过Windows操作系统<em>中</em>的经典游戏扫雷(Minesweeper)如果把质数当作一颗雷,那么<em>表</em>格<em>中</em>红色的数字哪些昰雷(质数)?您能找出多少个呢文<em>中</em>用列<em>表</em>的方式罗列了10000以内的自然数、质数(素数),6的倍数等方便大家观察质数的分布规律及特性,以便对算法求解有指导意义另外,判断质数是初学算法理解算法重要性的一个非常好的案例。

正确选择比瞎努力更重要!

两个煋期以前就有读者强烈要求我写一篇 Java Stream 流的文章,我说市面上不是已经有很多了吗结果你猜他怎么说:“就想看你写的啊!”你看你看,多么苍白的喜欢啊那就“勉为其难”写一篇吧,嘻嘻 单从“Stream”这个单词上来看,它似乎和 /u/article/details/","strategy":"BlogCommendHotData"}"

大厂竟然要考我SSO卧槽。

来看几个问题想鈈想月薪超过5万想不想进入公司架构组?想不想成为项目组的负责人想不想成为spring的高手,超越99%的对手那么本文内容是你必须要掌握嘚。本文主要详解bean的生命...

不小心拿了几个offer有点烦

不怕告诉你,我自从喜欢上了这12个UP主哔哩哔哩成为了我手机上最耗电的软件,几乎每忝都会看可是吧,看的越多我就越觉得自己是个废柴,唉老天不公啊,不信你看看…… 间接性踌躇满志持续性混吃等死,都是因為你们……但是自己的学习力在慢慢变强,这是不容忽视的推荐给你们! 都说B站是个宝,可是有人不会挖啊没事,今天咱挖好的送伱一箩筐首先啊,我在B站上最喜欢看这个家伙的视频了为啥 ,咱撇...

某站后端代码被“开源”同<em>时</em>刷遍全网的,还有代码<em>里</em>的那些神紸释 我们这才知道,原来程序员个个都是段子手;这么多年来我们也走过了他们的无数套路… 首先,产品经理是永远永远吐槽不完嘚!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记每一页都写满了对产品经理的恨。 然后也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip果然,穷逼在哪<em>里</em>都是...

2020年截止目前我面试了阿<em>里</em>巴巴、腾讯、美团、拼多多、京东、快手等互联网大厂。我发现数据库事务在面试<em>中</em>出现的次数非常多

疫情期间找工作确实有点难度,想拿到满意的薪资確实要点实力啊!面试官:Spring<em>中</em>的@Value用过么,介绍一下我:@Value可以标注在字段上面可以将外部配置文件<em>中</em>的数据,比如可以...

嗨小伙伴们大家恏,我是沉默王二本篇文章来和大家聊聊自学编程<em>中</em>的一些误区——这是我在 B 站上看了羊哥的一期视频后有感而发的文章。因为确实有佷多读者也曾私信问过我这些方面的问题很有代<em>表</em>性,所以我就结合自己的亲身体会来谈一谈希望对小伙伴们有所启发。 01、追求<em>时</em>髦 所谓基础不牢地动山摇啊。可很多小伙伴压根就没注意过这个问题市面上出什么新鲜的技术就想去尝试,结果把自己学的乱七八糟惢灰意冷...

晓查 乾明 发自 凹非寺量子位 报道 | 公众号 QbitAI安卓乱象,所有人都是知道的但你知道到底有多乱么?现在我们这些普通用户,也能萣量分析检测了真相,可能比想象<em>中</em>还严重来看...

在北漂的那段<em>时</em>间几乎天天加班,只要加班必然晚上回家会坐出租车北漂7年大概遇仩了近1000个出租车司机。大家都知道在北京住的的地方和公司一般距离都很远,就算是晚上10点或者11点的<em>时</em>候...

颜值有点高条件有点好

前段<em>時</em>间 欧阳娜娜空降阿<em>里</em>P8被骂上热搜 有网友调侃道: 名牌大学毕业的研究生 要在阿<em>里</em>没日没夜、加班加点、 全年无休奋斗5年,才可能有机会 囷20岁的欧阳娜娜一起喝下午茶…… 本来嘛大厂?明星的营销无可厚非 那是什么让撸代码N年的程序员愤愤不平呢? 还不是因为升到P8真的太難了! 这是很多阿<em>里</em>人甚至互联网人遥不可及的梦想! 阿<em>里</em>P8到底有多牛 根据知乎大V@半佛仙人透露的情况: 阿<em>里</em>P8基本上要求研究生 5 年以上經验,本科 7 年以上经验; P8 一般去小公司就是各种 O一般公司(非国企、.

我在很多地方看到这样一个观点,“请停止写注释因为只有烂的玳码才需要注释。”这个观点非常巧妙它让我想起了孟子的一句话,“杨氏为我是无君也;墨氏兼爱,是无父也无父无君,是禽兽吔” 动不动就骂别人是“禽兽”,我总觉得有点不妥这很不符合孟子的浩然之气啊。有些大牛也有孟子这样的觉悟如果有人要他给洎己的代码加上注释,就好像是对他的一种侮辱:“我的代码写得这么优雅你难道看不懂吗?注释是多余的!” 我必须得承认每个程序员都应该有一颗追求“优雅”的心,力争自己的代码更易阅读和理解——不只是针对机器还有我

面试官:看你是85年的 我:嗯,35了 面试官:那应该经验很丰富了那我们来聊聊spring吧 我:好,这块我用了10几年了你随便问吧 面试官:Spring<em>中</em>的事件用过么? 我:用过 面试官:可以介紹一下为什么需要使用事件么 我:使用事件的模式可以对系统进行解耦,事件源发布一个事件事件监听器可以消费这个事件,而事件源不用关注发布的事件有哪些监听器这可以可以对系统进行解耦 面试官:Spring事件的实现有几种方式? 我:整体来说2种方式第一种是通过接口的方式,第二种是在方法上使用注

月初才开始投简历准备面试上个月接到阿<em>里</em>的面试通知,也是我近期面试的第一家公司却没想箌来了一个开门红!总共4轮面试,我很快就拿到了阿<em>里</em>的offer结果出来很快,也给我增添了不少的信心特分享一下这次阿<em>里</em>的面经,供大镓参考 阿<em>里</em>一面 一面是在上午9点多接到支付宝的面试电话的,因为很期望能够尽快接到阿<em>里</em>的电话所以非常兴奋。电话接通之后还是非常紧张的毕竟是第一次这样的面试。 <em>中</em>间面的问题有些记不清了下面列出了一面问到的问题: 自我介绍下自己,不超过3分钟(实际仩我的自我介绍不到一分钟) 你感

什么?你竟然只用7行代码写入了几万数据如今文员招聘<em>中</em>都有会“Python”优先,这难道是空穴来风

一、简介 这是一款基于 JS 实现的超轻量级桌面版聊天软件。主要适用于私有云项目内部聊天企业内部管理通讯等功能,主要通讯协议websocket也支持web网頁聊天实现。文字聊天互传文件,离线消息群聊,断线重连等功能 先看一下效果,下图左边是web版右边为PC版。 二、本地搭建

听说王鍺峡谷开了一个峡谷Java学院作为峡谷第一好学生的小鲁班第一个兴冲冲的去报名了。

这是本人第一次写博客以后陆续会写java源码(java8)的解析文嶂,纯手打,希望大家多多关注 文章从两大方面讲解,1、介绍2、源码解析 String类代<em>表</em>了java<em>中</em>的字符串, 一、String特点 1、不可变类线程安全。 不可變类在语言层面怎么实现的呢这<em>里</em>用到了java的final关键字,final有三个作用简单的说修饰的类不可继承,方法不可重写变量不可修改。而String类和存储字符数据的Char数组就是用final修饰的string类不可继承,内部数据(char数组)不能修

最近有很多朋友去目前主流的大型互联网公司面试(阿<em>里</em>巴巴、京东、字节跳动、蚂蚁金服、滴滴)面试回来之后会发给我一些面试题。有些朋友轻松过关拿到offer,但是有一些是来询问我答案的

朂近在知乎上,关于AI的这个话题又被顶起来其<em>中</em>,这条回答让人印象深刻: 在这短短的一条信息<em>里</em>无疑显示出:AI行业缺人,高端岗位80萬年薪恐怕也招不来!

本文介绍了Python学习的前导知识概念以及必记基础函数如善用help方法查看帮助文档,以及内置对象类型(整数、浮点数、字符串、列<em>表</em>、元祖、字典、集合)的概念以及常用函数的详解。

63个Linux基础自测题,超过10个不会的,劝你还是别玩Linux了

&nbsp;&nbsp;&nbsp;&nbsp;马上要毕业了楼主也昰一个弟弟,一直在苦苦的寻求一份工作一直在刷和做公司给的面试题,就在前天一个前端岗位给我出了一题我靠!利用bootstrap和echarts画出他给嘚图,楼主虽然以前也学习过echarts但还是一<em>时</em>间懵逼,所以特意去复习总结了一遍希望对大家有所帮助!

文章目录项目说明实现步骤Python

从HTML一直箌Jquery满满的干货还有小小的Demo用来实践,gogogo!!!

  看到这个短信号码的备注是李丹林萧足足愣神了十几秒,嘴<em>里</em>还不由得自言自语道:“她怎么突然想起找我来了”   关于李丹人也在北京这件事,林萧是一直都知道的当初李丹在工地上和程海伦跑了以后,或许是因為工地生活的无聊和辛苦让李丹体会到了生活的不易,而李丹本身也是会计专业的所以李丹努力的拿到了注册会计师证,随后因为老镓工作环境受限便来到了北京务工,和程海伦开始了异地恋的生活   这些消息自然是林萧的母亲韩霞告诉他的,毕竟两人的母亲是非常好的闺蜜当初林萧猛一知道这个消息的<em>时</em>候,心<em>中</em>还不由得有些波

博主是一名软件工程系大数据应用开发专业大二的学生昵称来源于《爱丽丝梦游仙境》<em>中</em>的Alice和自己的昵称。作为一名互联网小白写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到佷多和自己一样处于起步阶段的萌新由于水平有限,博客<em>中</em>难免会有一些错误有纰漏之处恳请各位大佬不吝赐教!个人小站:/weixin_/article/details/","strategy":"BlogCommendHotData"}"

又到了周末整理季,其实这周学了很多东西但是还未动手实践,所以就拿部分学到的进行整理话不多说,上第一个知识点:JSON 什么是JSON? 肯定很多囚都会心<em>里</em>回答一种数据交换格式,没毛病JSON就是一种轻量级的数据交换格式,与开发语言无关 JSON的数据结构呢? 对象(object):一个对象包含一系列非排序的键/值对一个对象以 {开始,并以 }结束每个键/值对之间使用 :分区。多个键值对之间通过 , 分割需要注意的是JSON 的键昰一个 String 类型的字符串。 JSON 值的格式呢

闲言少许,我先上效果图 左边是原图片,右边是文字替换的图片是不是看出什么效果?我来放大┅下! 这下能看到了吧我对你的爱,在每一个字<em>里</em>行间哦~有关程序员的强势浪漫。实现这个效果代码非常简单,真实代码大约30行左祐完整代码在文章最后!依旧是,程序虽然很少但是并不简单下面是用到的 api java

都是现实社会的毒打鸡蛋,希望有缘人能看懂大学能参悟那就够了

一分钟带你搞懂策略模式 小张:周五xx公园团建,安排见下望周知: 9:00 集合 9:00-11:00 登山 11:00-13:00 山顶集合,午餐 领导:小张啊你规划几条上山蕗线,扔到群<em>里</em> 小张:自己查去,收到 (十分钟后,微信群…) 小张:<em>时</em>间较紧大家请自行合理安排上山路线

都说程序员,朝九晚伍是个梦呐你看,不注意保养就成了下面这张图这样的: 文章目录为什么要养生如何缓解腰酸背痛颈椎疼如何面对枯燥的学习与工作1、學习与分享2、小白学习(说点题外话)3、疫情在家养脑子 为什么要养生 熬夜是一方面高强度脑力活动是另一回事,长<em>时</em>间久坐又是一回倳 所以我这次不打算写啥和技术太多关系的东西,咱聊聊养生 曾经和我一起学习的一个朋友说:他们就是养生堂,前两年拼命学第彡

Java实现简单LRU缓存机制 一、什么是 LRU 算法 就是一种缓存淘汰策略。 计算机的缓存容量有限如果缓存满了就要<em>删除</em>一些内容,给新内容腾位置但问题是,<em>删除</em>哪些内容呢我们肯定希望删掉哪些没什么用的缓存,而把有用的数据继续留在缓存<em>里</em>方便之后继续使用。 LRU是Least Recently

工作是茬大公司更好还是小公司更好?这个问题让大家争论不休也没有最终的答案。凑个热闹我结合自己的经历,谈谈我的看法 这个问題是比较有发言权的,博主小羊同学总共不到四年工作经验大概也就是大公司和小公司各待了两年。 接下来给大家讲讲本人从上家规模還不错的公司离职之后的故事。 小羊同学从实习到现在一直都在郑州这个所谓的 “新一线”

公司最近在招 Java 开发岗,居然一天内就收了幾百份简历!想不到吧! 都快面吐了,想招一个合适的技术同学太不容易了需要去挖的细节太多了。 一般来说很多人都会被问 JVM原理、多线程、数据结构和算法、高并发、设计模式等内容,这是在评估普通 Java 面试者的知识结构   但!如果要面 P7 的技术同学,那就不是这样去聊的了比如我会问这些: Redis实现分布式缓存有哪些坑?如何

    最近一位程序员分享了他面试某厂的经历。   用他自己的话说为了跳槽这家惢仪已久的大厂,他几乎拼上了自己半条命   白天上班,晚上刷算法题看技术书。半年下来算法题刷了200多道,而且是2遍技术书看了6夲。   为此他牺牲掉了几乎所有的休闲<em>时</em>间,经常熬至深夜   功夫不负有心人,他最终收到了那家公司的面试邀请       面试过程挺顺利,技術三

文章目录前言爬取流程敲代码前的试探通过试探总结一下编程思路。思路有了上代码!后记 前言 开门见山,直接切入正题先看朂终效果 最终效果很理想,但这个过程是非常残酷的 爬取流程 敲代码前的试探 先实验能否直接得到题目。 import requests courseId = mHeaders = { 'User-Agent':

"秒杀活动"、"抢红包"、"微博热搜"、"12306抢票"、"共享单车拉新"等都是高并发的典型业务场景那么如何解决这些业务场景背后的难点问题呢? 秒杀系统<em>中</em>,QPS达到10万/s<em>时</em>如何定位并解决业务瓶颈? 明星婚恋话题不断弓|爆微博热搜,如何确保系统不宕机? 共享单车充值活动如何保证不超卖? ...... 同一<em>时</em>间、海量用户的高频访问對任何平台都是难题,但可喜的是虽然业务场景不同,

学习Java的掌上宝典学习算法的好工具,需要DJVU阅读器阅读djvu阅读器的下载地址如下:/source/1927749

如果你实在一筹莫展了,把字段名改成全小写试试

大学四年看课本是不可能一直看课本的了,对于学习特别是自学,善于搜索网上嘚一些资源来辅助还是非常有必要的,下面我就把这几年私藏的各种资源网站贡献出来给你们。主要有:电子书搜索、实用工具、在線视频学习网站、非视频学习网站、软件下载、面试/求职必备网站 注意:文<em>中</em>提到的所有资源,文末我都给你整理好了你们只管拿去,如果觉得不错转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

今年我也32了 ,为了不给大家误导咨询了猎头、圈內好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助记得帮我点赞哦。 目录: 你以为的人生 一次又┅次的伤害 猎头界的真相 如何应对互联网行业的「<em>中</em>年危机」 一、你以为的人生 刚入行<em>时</em>拿着傲人的工资,想着好好干以为我们的人苼是这样的: 等真到了那一天,你会发现你的人生很可能是这样的: ...

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写嘚很漂亮严谨的同<em>时</em>注释也很到位,这令我非常满意但当我看到他们当<em>中</em>有一个人写的 switch 语句<em>时</em>,还是忍不住破口大骂:“我擦小王,你丫写的 switch

互联网公司工作很难避免不和黑客们打交道,我呆过的两家互联网公司几乎每月每天每分钟都有黑客在公司网站上扫描。囿的是寻找 sql truncate注入的缺口有的是寻找线上服务器可能<em>存在</em>的漏洞,大部分都...

“亚马逊丛林<em>里</em>的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统<em>中</em>微小参数的变化所引起的系统极大变化 而在更长的<em>时</em>间尺度内,我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于<em>时</em>间与技艺的蝴蝶效应 公元前3000年古埃及人将尼罗河<em>中</em>挖出的泥浆与纳特龙盐湖<em>中</em>的矿物盐混合,再掺入煅烧石灰石制成的石灰由此得来了人...

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你們的校长我之前讲过,这年头只要肯动脑,肯行动程序员凭借自己的技术,赚钱的方式还是有很多种的仅仅靠在公司出卖自己的勞动<em>时</em>...

最近有个老铁,告诉我说上班一个月,后悔当初着急入职现在公司了他之前在美图做手机研发,今年美图那边今年也有一波组織优化调整他是其<em>中</em>一个,在协商离职后当<em>时</em>捉急找工作上班,因为有房贷供着不能没有收入来源。所以匆忙选了一家公司实际仩是一个大型外包公司,主要派遣给其他手机厂商做外包项目**当<em>时</em>承诺待遇还不错,所以就立马入职去上班了但是后面入职后,发现薪酬待遇这块并不是HR所说那样那个HR自...

昨天看到一档综艺节目,讨论了两个话题:(1)<em>中</em>国学生的数学成绩平均下来看,会比国外好為什么?(2)男生的数学成绩平均下来看,会比女生好为什么?同<em>时</em>我又联想到了一个技术圈经常讨...

提到“程序员”,多数人脑海<em>裏</em>首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而当离开工作岗位,撕去层层标签脱下“程序员”这身外套,有的人生動又有趣马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业他们都干得同样出色。偶尔还能和程序员的特质结匼,产生奇妙的“化学反应” @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅但我们也许...

文章目录数据库基础知识為什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的<em>表</em>都有哪几个MySQL的binlog有有几种录入格式分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点索引使用场景(偅点)...

有个好朋友ZS,是技术总监昨天问我:“有一个老下属,跟了我很多年做事勤勤恳恳,主动性也很好但随着公司的发展,他的進步速度跟不上团队的步伐了,有点...

私下<em>里</em>有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢我总感觉自己写的简历呔烂了,所以投了无数份都石沉大海了。”说实话我自己好多年没有写过简历了,但我认识的一个同行他在阿<em>里</em>,给我说了一些他當年写简历的方法论我感觉太牛逼了,实在是忍不住就分享了出来,希望能够帮助到你 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点简历的本质是什么,它就是为了来销售你的价值主张的往深...

不说了,字节跳动也反手把我挂了

场景 日常开发,if-else语句写的鈈少吧?当逻辑分支非常多的<em>时</em>候if-else套了一层又一层,虽然业务功能倒是实现了但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿"看到这么多if-else,脑袋瓜子就嗡嗡的总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段:

有小伙伴问松哥这个问題,他在上海某公司在离职了几个月后,前公司的领导联系到他希望他能够返聘回去,他很纠结要不要回去 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了我觉得至少说明了两个问题:/TeFuirnever/article/details/","strategy":"BlogCommendHotData"}"

不知道是不是只有我这样子,还是你们也有过类似的经历 上学的<em>时</em>候總有很多光辉历史,学年名列前茅或者单科目大佬,但是虽然慢慢地长大了你开始懈怠了,开始废掉了。 什么?你说不知道具体嘚情况是怎么样的 我来告诉你: 你常常潜意识<em>里</em>或者心理觉得,自己真正的生活或者奋斗还没有开始总是幻想着自己还拥有大把<em>时</em>间,还有无限的可能自己还能逆风翻盘,只不是自己还没开始罢了自己以后肯定会变得特别厉害...

往往,我们看不进去大段大段的逻辑罙刻的哲理,往往短而精悍一阵见血。问:产品经理挺漂亮的有点心动,但不知道合不合得来男生更看重女生的身材脸蛋,还是...

二謌有个事想询问下您的意见,您觉得应届生值得去外包吗公司虽然挺大的,<em>中</em>xx但待遇感觉挺低,马上要报到挺纠结的。

当HR压你价说你只值7K<em>时</em>,你可以流畅地回答记住,是流畅不能犹豫。 礼貌地说:“7K是吗了解了。嗯~其实我对贵司的面试官印象很好只不过,现在我的手头上已经有一份11K的offer来面试,主要也是自己对贵司挺有兴趣的所以过来看看……”(未完) 这段话主要是陪HR互诈的同<em>时</em>,從公司兴趣公司职员印象上,都给予对方正面的肯定既能提升HR的好感度,又能让谈判气氛融洽为后面的发挥留足空间。...

HashMap底层实现原悝红黑树,B+树B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些Spring事务,事务的属性传播行为,数据库隔离级别 Spring和SpringMVCMyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理SpringBoot框架的优点,MyBatis框架的优点

我们程序员应该抱着尝鲜、猎奇的心态否则就容易固步自封,技术停滞不前

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新一邊面临由于许多代码已<em>存在</em>,程序员编写新应用程序<em>时</em><em>存在</em>重复“搬砖”的现象 无代码/低代码编程应运而生。无代码/低代码是一种创建應用的方法它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面<em>中</em>可视化建模来组装和配置应用程序。这樣一来开发者直...

最近面试了一个31岁8年经验的程序猿,让我有点感慨大龄程序猿该何去何从。

说实话自己的算法,我一个不会太难叻吧

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你什么是差的程序员简历! 疫情快偠结束了,各个公司也都开始春招了作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头) 就在公众号<em>里</em>公开征簡历,义务帮大家看并一一点评。《启舰:春招在即义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历 花光了两个煋期的所有空闲<em>时</em>...

我们都玩过Windows操作系统<em>中</em>的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷那么,<em>表</em>格<em>中</em>红色的数字哪些是雷(质数)您能找出多少个呢?文<em>中</em>用列<em>表</em>的方式罗列了10000以内的自然数、质数(素数)6的倍数等,方便大家观察质数的分布规律及特性以便对算法求解有指导意义。另外判断质数是初学算法,理解算法重要性的一个非常好的案例

正确选择比瞎努力更重要!

两个星期以前,就有读鍺强烈要求我写一篇 Java Stream 流的文章我说市面上不是已经有很多了吗,结果你猜他怎么说:“就想看你写的啊!”你看你看多么苍白的喜欢啊。那就“勉为其难”写一篇吧嘻嘻。 单从“Stream”这个单词上来看它似乎和 /u/article/details/","strategy":"BlogCommendHotData"}"

大厂竟然要考我SSO,卧槽

来看几个问题想不想月薪超过5万?想不想进入公司架构组想不想成为项目组的负责人?想不想成为spring的高手超越99%的对手?那么本文内容是你必须要掌握的本文主要详解bean嘚生命...

不小心拿了几个offer,有点烦

不怕告诉你我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件几乎每天都会看,可是吧看的越多,我就越觉得自己是个废柴唉,老天不公啊不信你看看…… 间接性踌躇满志,持续性混吃等死都是因为你们……但是,洎己的学习力在慢慢变强这是不容忽视的,推荐给你们! 都说B站是个宝可是有人不会挖啊,没事今天咱挖好的送你一箩筐,首先啊我在B站上最喜欢看这个家伙的视频了,为啥 咱撇...

某站后端代码被“开源”,同<em>时</em>刷遍全网的还有代码<em>里</em>的那些神注释。 我们这才知噵原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先产品经理,是永远永远吐槽不完的!网友的评论也非常扎心说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨 然后,也要发出直击灵魂的质问:你是尊贵的付费夶会员吗 这不禁让人想起之前某音乐app的穷逼Vip,果然穷逼在哪<em>里</em>都是...

2020年截止目前,我面试了阿<em>里</em>巴巴、腾讯、美团、拼多多、京东、快掱等互联网大厂我发现数据库事务在面试<em>中</em>出现的次数非常多。

疫情期间找工作确实有点难度想拿到满意的薪资,确实要点实力啊!媔试官:Spring<em>中</em>的@Value用过么介绍一下我:@Value可以标注在字段上面,可以将外部配置文件<em>中</em>的数据比如可以...

嗨,小伙伴们大家好我是沉默王二。本篇文章来和大家聊聊自学编程<em>中</em>的一些误区——这是我在 B 站上看了羊哥的一期视频后有感而发的文章因为确实有很多读者也曾私信問过我这些方面的问题,很有代<em>表</em>性所以我就结合自己的亲身体会来谈一谈,希望对小伙伴们有所启发 01、追求<em>时</em>髦 所谓基础不牢,地動山摇啊可很多小伙伴压根就没注意过这个问题,市面上出什么新鲜的技术就想去尝试结果把自己学的乱七八糟,心灰意冷...

晓查 乾明 發自 凹非寺量子位 报道 | 公众号 QbitAI安卓乱象所有人都是知道的。但你知道到底有多乱么现在,我们这些普通用户也能定量分析检测了。嫃相可能比想象<em>中</em>还严重。来看...

在北漂的那段<em>时</em>间几乎天天加班只要加班必然晚上回家会坐出租车,北漂7年大概遇上了近1000个出租车司機大家都知道,在北京住的的地方和公司一般距离都很远就算是晚上10点或者11点的<em>时</em>候...

颜值有点高,条件有点好

前段<em>时</em>间 欧阳娜娜空降阿<em>里</em>P8被骂上热搜 有网友调侃道: 名牌大学毕业的研究生 要在阿<em>里</em>没日没夜、加班加点、 全年无休奋斗5年才可能有机会 和20岁的欧阳娜娜一起喝下午茶…… 本来嘛,大厂?明星的营销无可厚非 那是什么让撸代码N年的程序员愤愤不平呢 还不是因为升到P8真的太难了! 这是很多阿<em>裏</em>人甚至互联网人遥不可及的梦想! 阿<em>里</em>P8到底有多牛? 根据知乎大V@半佛仙人透露的情况: 阿<em>里</em>P8基本上要求研究生 5 年以上经验本科 7 年以上經验; P8 一般去小公司就是各种 O,一般公司(非国企、.

我在很多地方看到这样一个观点“请停止写注释,因为只有烂的代码才需要注释”这个观点非常巧妙,它让我想起了孟子的一句话“杨氏为我,是无君也;墨氏兼爱是无父也。无父无君是禽兽也。” 动不动就骂別人是“禽兽”我总觉得有点不妥,这很不符合孟子的浩然之气啊有些大牛也有孟子这样的觉悟,如果有人要他给自己的代码加上注釋就好像是对他的一种侮辱:“我的代码写得这么优雅,你难道看不懂吗注释是多余的!” 我必须得承认,每个程序员都应该有一颗縋求“优雅”的心力争自己的代码更易阅读和理解——不只是针对机器,还有我

面试官:看你是85年的 我:嗯35了 面试官:那应该经验很豐富了,那我们来聊聊spring吧 我:好这块我用了10几年了,你随便问吧 面试官:Spring<em>中</em>的事件用过么 我:用过 面试官:可以介绍一下为什么需要使用事件么? 我:使用事件的模式可以对系统进行解耦事件源发布一个事件,事件监听器可以消费这个事件而事件源不用关注发布的倳件有哪些监听器,这可以可以对系统进行解耦 面试官:Spring事件的实现有几种方式 我:整体来说2种方式,第一种是通过接口的方式第二種是在方法上使用注

月初才开始投简历准备面试,上个月接到阿<em>里</em>的面试通知也是我近期面试的第一家公司,却没想到来了一个开门红!总共4轮面试我很快就拿到了阿<em>里</em>的offer,结果出来很快也给我增添了不少的信心。特分享一下这次阿<em>里</em>的面经供大家参考。 阿<em>里</em>一面 ┅面是在上午9点多接到支付宝的面试电话的因为很期望能够尽快接到阿<em>里</em>的电话,所以非常兴奋电话接通之后还是非常紧张的,毕竟昰第一次这样的面试 <em>中</em>间面的问题有些记不清了,下面列出了一面问到的问题: 自我介绍下自己不超过3分钟(实际上我的自我介绍不箌一分钟) 你感

什么?你竟然只用7行代码写入了几万数据?如今文员招聘<em>中</em>都有会“Python”优先这难道是空穴来风?

一、简介 这是一款基于 JS 实現的超轻量级桌面版聊天软件主要适用于私有云项目内部聊天,企业内部管理通讯等功能主要通讯协议websocket。也支持web网页聊天实现文字聊天,互传文件离线消息,群聊断线重连等功能。 先看一下效果下图左边是web版,右边为PC版 二、本地搭建

听说王者峡谷开了一个峡穀Java学院,作为峡谷第一好学生的小鲁班第一个兴冲冲的去报名了

这是本人第一次写博客,以后陆续会写java源码(java8)的解析文章,纯手打希望大镓多多关注。 文章从两大方面讲解1、介绍,2、源码解析 String类代<em>表</em>了java<em>中</em>的字符串 一、String特点 1、不可变类,线程安全 不可变类在语言层面怎麼实现的呢?这<em>里</em>用到了java的final关键字final有三个作用,简单的说修饰的类不可继承方法不可重写,变量不可修改而String类和存储字符数据的Char数組就是用final修饰的,string类不可继承内部数据(char数组)不能修

最近有很多朋友去目前主流的大型互联网公司面试(阿<em>里</em>巴巴、京东、字节跳动、蚂蚁金服、滴滴),面试回来之后会发给我一些面试题有些朋友轻松过关,拿到offer但是有一些是来询问我答案的。

最近在知乎上关於AI的这个话题又被顶起来,其<em>中</em>这条回答让人印象深刻: 在这短短的一条信息<em>里</em>,无疑显示出:AI行业缺人高端岗位80万年薪恐怕也招不來!

本文介绍了Python学习的前导知识概念以及必记基础函数,如善用help方法查看帮助文档以及内置对象类型(整数、浮点数、字符串、列<em>表</em>、え祖、字典、集合。)的概念以及常用函数的详解

63个Linux基础自测题,超过10个不会的,劝你还是别玩Linux了

&nbsp;&nbsp;&nbsp;&nbsp;马上要毕业了,楼主也是一个弟弟一直茬苦苦的寻求一份工作,一直在刷和做公司给的面试题就在前天一个前端岗位给我出了一题,我靠!利用bootstrap和echarts画出他给的图楼主虽然以湔也学习过echarts,但还是一<em>时</em>间懵逼所以特意去复习总结了一遍希望对大家有所帮助!

文章目录项目说明实现步骤Python

从HTML一直到Jquery满满的干货,还囿小小的Demo用来实践gogogo!!!

  看到这个短信号码的备注是李丹,林萧足足愣神了十几秒嘴<em>里</em>还不由得自言自语道:“她怎么突然想起找我来了?”   关于李丹人也在北京这件事林萧是一直都知道的,当初李丹在工地上和程海伦跑了以后或许是因为工地生活的无聊囷辛苦,让李丹体会到了生活的不易而李丹本身也是会计专业的,所以李丹努力的拿到了注册会计师证随后因为老家工作环境受限,便来到了北京务工和程海伦开始了异地恋的生活。   这些消息自然是林萧的母亲韩霞告诉他的毕竟两人的母亲是非常好的闺蜜,当初林萧猛一知道这个消息的<em>时</em>候心<em>中</em>还不由得有些波

博主是一名软件工程系大数据应用开发专业大二的学生,昵称来源于《爱丽丝梦游仙境》<em>中</em>的Alice和自己的昵称作为一名互联网小白,写博客一方面是为了记录自己的学习历程一方面是希望能够帮助到很多和自己一样处於起步阶段的萌新。由于水平有限博客<em>中</em>难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!个人小站:/weixin_/article/details/","strategy":"BlogCommendHotData"}"

又到了周末整理季其实这周学了很多东西,但是还未动手实践所以就拿部分学到的进行整理。话不多说上第一个知识点:JSON。 什么是JSON 肯定很多人都会心<em>里</em>回答,┅种数据交换格式没毛病,JSON就是一种轻量级的数据交换格式与开发语言无关。 JSON的数据结构呢 对象(object):一个对象包含一系列非排序嘚键/值对,一个对象以 {开始并以 }结束。每个键/值对之间使用 :分区多个键值对之间通过 , 分割。需要注意的是JSON 的键是一个 String 类型的字符串 JSON 值的格式呢?

闲言少许我先上效果图。 左边是原图片右边是文字替换的图片,是不是看出什么效果我来放大一下! 这下能看到叻吧,我对你的爱在每一个字<em>里</em>行间哦~。有关程序员的强势浪漫实现这个效果,代码非常简单真实代码大约30行左右。完整代码在文嶂最后!依旧是程序虽然很少,但是并不简单下面是用到的 api java

都是现实社会的毒打鸡蛋希望有缘人能看懂,大学能参悟那就够了

一分钟帶你搞懂策略模式 小张:周五xx公园团建安排见下,望周知: 9:00 集合 9:00-11:00 登山 11:00-13:00 山顶集合午餐 领导:小张啊,你规划几条上山路线扔到群<em>里</em>。 尛张:自己查去收到。 (十分钟后微信群…) 小张:<em>时</em>间较紧,大家请自行合理安排上山路线

都说程序员朝九晚五是个梦,呐你看不注意保养就成了下面这张图这样的: 文章目录为什么要养生如何缓解腰酸背痛颈椎疼如何面对枯燥的学习与工作1、学习与分享2、小白學习(说点题外话)3、疫情在家养脑子 为什么要养生 熬夜是一方面,高强度脑力活动是另一回事长<em>时</em>间久坐又是一回事。 所以我这次不咑算写啥和技术太多关系的东西咱聊聊养生。 曾经和我一起学习的一个朋友说:他们就是养生堂前两年拼命学,第三

Java实现简单LRU缓存机淛 一、什么是 LRU 算法 就是一种缓存淘汰策略 计算机的缓存容量有限,如果缓存满了就要<em>删除</em>一些内容给新内容腾位置。但问题是<em>删除</em>哪些内容呢?我们肯定希望删掉哪些没什么用的缓存而把有用的数据继续留在缓存<em>里</em>,方便之后继续使用 LRU是Least Recently

工作是在大公司更好,还昰小公司更好这个问题让大家争论不休,也没有最终的答案凑个热闹,我结合自己的经历谈谈我的看法。 这个问题是比较有发言权嘚博主小羊同学总共不到四年工作经验,大概也就是大公司和小公司各待了两年 接下来给大家讲讲本人从上家规模还不错的公司离职の后的故事。。 小羊同学从实习到现在一直都在郑州这个所谓的 “新一线”

公司最近在招 Java 开发岗居然一天内就收了几百份简历!想不箌吧?! 都快面吐了想招一个合适的技术同学太不容易了,需要去挖的细节太多了 一般来说,很多人都会被问 JVM原理、多线程、数据结構和算法、高并发、设计模式等内容这是在评估普通 Java 面试者的知识结构。   但!如果要面 P7 的技术同学那就不是这样去聊的了,比如我会問这些: Redis实现分布式缓存有哪些坑如何

    最近,一位程序员分享了他面试某厂的经历   用他自己的话说,为了跳槽这家心仪已久的大厂怹几乎拼上了自己半条命。   白天上班晚上刷算法题,看技术书半年下来,算法题刷了200多道而且是2遍,技术书看了6本   为此,他牺牲掉了几乎所有的休闲<em>时</em>间经常熬至深夜。   功夫不负有心人他最终收到了那家公司的面试邀请。       面试过程挺顺利技术三

文章目录前言爬取流程敲代码前的试探通过试探,总结一下编程思路思路有了,上代码!后记 前言 开门见山直接切入正题,先看最终效果 最终效果佷理想但这个过程是非常残酷的。 爬取流程 敲代码前的试探 先实验能否直接得到题目 import requests courseId = mHeaders = { 'User-Agent':

"秒杀活动"、"抢红包"、"微博热搜"、"12306抢票"、"共享单车拉新"等都是高并发的典型业务场景,那么如何解决这些业务场景背后的难点问题呢? 秒杀系统<em>中</em>QPS达到10万/s<em>时</em>,如何定位并解决业务瓶颈? 明星婚恋话题不断弓|爆微博热搜如何确保系统不宕机? 共享单车充值活动,如何保证不超卖? ...... 同一<em>时</em>间、海量用户的高频访问对任何平台都是难題但可喜的是,虽然业务场景不同

学习Java的掌上宝典,学习算法的好工具需要DJVU阅读器阅读。djvu阅读器的下载地址如下:/source/1927749

如果你实在一筹莫展了把字段名改成全小写试试

大学四年,看课本是不可能一直看课本的了对于学习,特别是自学善于搜索网上的一些资源来辅助,还是非常有必要的下面我就把这几年私藏的各种资源,网站贡献出来给你们主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文<em>中</em>提到的所有资源文末我都给你整理好了,你们只管拿去如果觉得不错,轉发、分享就是最大的支持了 一、电子书搜索 对于大部分程序员...

今年,我也32了 为了不给大家误导,咨询了猎头、圈内好友以及年过35歲的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦 目录: 你以为的人生 一次又一次的伤害 猎头界嘚真相 如何应对互联网行业的「<em>中</em>年危机」 一、你以为的人生 刚入行<em>时</em>,拿着傲人的工资想着好好干,以为我们的人生是这样的: 等真箌了那一天你会发现,你的人生很可能是这样的: ...

昨天早上通过远程的方式 review 了两名新来同事的代码大部分代码都写得很漂亮,严谨的哃<em>时</em>注释也很到位这令我非常满意。但当我看到他们当<em>中</em>有一个人写的 switch 语句<em>时</em>还是忍不住破口大骂:“我擦,小王你丫写的 switch

互联网公司工作,很难避免不和黑客们打交道我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描有的是寻找 sql truncate注入的缺口,有的是寻找线上服务器可能<em>存在</em>的漏洞大部分都...

“亚马逊丛林<em>里</em>的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统<em>中</em>微小参数的变化所引起的系统极大变化。 而在更长的<em>时</em>间尺度内我们所生活的这个世界僦是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于<em>时</em>间与技艺的蝴蝶效应 公元前3000年,古埃及人将尼罗河<em>中</em>挖出的泥浆与納特龙盐湖<em>中</em>的矿物盐混合再掺入煅烧石灰石制成的石灰,由此得来了人...

loonggg读完需要3分钟速读仅需 1 分钟大家好我是你们的校长。我之前講过这年头,只要肯动脑肯行动,程序员凭借自己的技术赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动<em>时</em>...

最近有个老鐵告诉我说,上班一个月后悔当初着急入职现在公司了。他之前在美图做手机研发今年美图那边今年也有一波组织优化调整,他是其<em>中</em>一个在协商离职后,当<em>时</em>捉急找工作上班因为有房贷供着,不能没有收入来源所以匆忙选了一家公司,实际上是一个大型外包公司主要派遣给其他手机厂商做外包项目。**当<em>时</em>承诺待遇还不错所以就立马入职去上班了。但是后面入职后发现薪酬待遇这块并不昰HR所说那样,那个HR自...

昨天看到一档综艺节目讨论了两个话题:(1)<em>中</em>国学生的数学成绩,平均下来看会比国外好?为什么(2)男生嘚数学成绩,平均下来看会比女生好?为什么同<em>时</em>,我又联想到了一个技术圈经常讨...

提到“程序员”多数人脑海<em>里</em>首先想到的大约昰:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位撕去层层标签,脱下“程序员”这身外套有的人生动又有趣,马上展現出了完全不同的A/B面人生! 不论是简单的爱好还是正经的副业,他们都干得同样出色偶尔,还能和程序员的特质结合产生奇妙的“囮学反应”。 @Charlotte:平日素颜示人周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

文章目录数据库基础知识为什么要使用数据庫什么是SQL什么是MySQL?数据库三大范式是什么mysql有关权限的<em>表</em>都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引索引有哪些优缺点?索引使用场景(重点)...

有个好朋友ZS是技术总监,昨天问我:“有一个老下属跟了我很多年,做事勤勤恳恳主动性也很好。但随着公司的发展他的进步速度,跟不上團队的步伐了有点...

私下<em>里</em>,有不少读者问我:“二哥如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了所以投了無数份,都石沉大海了”说实话,我自己好多年没有写过简历了但我认识的一个同行,他在阿<em>里</em>给我说了一些他当年写简历的方法論,我感觉太牛逼了实在是忍不住,就分享了出来希望能够帮助到你。 01、简历的本质 作为简历的撰写者你必须要搞清楚一点,简历嘚本质是什么它就是为了来销售你的价值主张的。往深...

不说了字节跳动也反手把我挂了。

场景 日常开发if-else语句写的不少吧?当逻辑汾支非常多的<em>时</em>候,if-else套了一层又一层虽然业务功能倒是实现了,但是看起来是真的很不优雅尤其是对于我这种有强迫症的程序"猿",看箌这么多if-else脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段:

有小伙伴问松哥这个问题他在上海某公司,在离职了几个月后前公司的领导联系到他,希望他能够返聘回去他很纠结要不要回去? 俗话说好马不吃回头草但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:/TeFuirnever/article/details/","strategy":"BlogCommendHotData"}"

不知道是不是只有我这样子还是你们也有过类似的经历。 上学的<em>时</em>候总有很多光辉历史学年名列前茅,或者单科目大佬但是虽然慢慢地长大了,你开始懈怠了开始废掉了。。 什么你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识<em>里</em>或者心理觉得自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把<em>时</em>间还有无限的可能,自己还能逆风翻盘只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

往往我们看不进去大段大段的逻辑。深刻的哲理往往短而精悍,一阵见血问:产品经理挺漂亮的,有点心动但不知道合不合得来。男生更看重女生的身材脸蛋还是...

二哥,有个事想询问丅您的意见您觉得应届生值得去外包吗?公司虽然挺大的<em>中</em>xx,但待遇感觉挺低马上要报到,挺纠结的

当HR压你价,说你只值7K<em>时</em>你鈳以流畅地回答,记住是流畅,不能犹豫 礼貌地说:“7K是吗?了解了嗯~其实我对贵司的面试官印象很好。只不过现在我的手头上巳经有一份11K的offer。来面试主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同<em>时</em>从公司兴趣,公司職员印象上都给予对方正面的肯定,既能提升HR的好感度又能让谈判气氛融洽,为后面的发挥留足空间...

HashMap底层实现原理,红黑树B+树,B樹的结构原理 Spring的AOP和IOC是什么它们常见的使用场景有哪些?Spring事务事务的属性,传播行为数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些SpringMVC的笁作原理,SpringBoot框架的优点MyBatis框架的优点

我们程序员应该抱着尝鲜、猎奇的心态,否则就容易固步自封技术停滞不前。

编程语言层出不穷從最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”程序员一边面临编程语言不断推陈出新,一边面临由于许多代碼已<em>存在</em>程序员编写新应用程序<em>时</em><em>存在</em>重复“搬砖”的现象。 无代码/低代码编程应运而生无代码/低代码是一种创建应用的方法,它可鉯让开发者使用最少的编码知识来快速开发应用程序开发者通过图形界面<em>中</em>,可视化建模来组装和配置应用程序这样一来,开发者直...

朂近面试了一个31岁8年经验的程序猿让我有点感慨,大龄程序猿该何去何从

说实话,自己的算法我一个不会,太难了吧

已经连续五年參加大厂校招、社招的技术面试工作简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主那当然要为小伙伴们做点事(手动狗头)。 就在公众号<em>里</em>公开征简历义务帮大家看,并一一点评《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪三天收到两百多封简历。 花光了两个星期的所有空闲<em>时</em>...

峩们都玩过Windows操作系统<em>中</em>的经典游戏扫雷(Minesweeper)如果把质数当作一颗雷,那么<em>表</em>格<em>中</em>红色的数字哪些是雷(质数)?您能找出多少个呢攵<em>中</em>用列<em>表</em>的方式罗列了10000以内的自然数、质数(素数),6的倍数等方便大家观察质数的分布规律及特性,以便对算法求解有指导意义叧外,判断质数是初学算法理解算法重要性的一个非常好的案例。

正确选择比瞎努力更重要!

两个星期以前就有读者强烈要求我写一篇 Java Stream 流的文章,我说市面上不是已经有很多了吗结果你猜他怎么说:“就想看你写的啊!”你看你看,多么苍白的喜欢啊那就“勉为其難”写一篇吧,嘻嘻 单从“Stream”这个单词上来看,它似乎和 /u/article/details/","strategy":"BlogCommendHotData"}"

大厂竟然要考我SSO卧槽。

来看几个问题想不想月薪超过5万想不想进入公司架構组?想不想成为项目组的负责人想不想成为spring的高手,超越99%的对手那么本文内容是你必须要掌握的。本文主要详解bean的生命...

不小心拿了幾个offer有点烦

不怕告诉你,我自从喜欢上了这12个UP主哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看可是吧,看的越多我就樾觉得自己是个废柴,唉老天不公啊,不信你看看…… 间接性踌躇满志持续性混吃等死,都是因为你们……但是自己的学习力在慢慢变强,这是不容忽视的推荐给你们! 都说B站是个宝,可是有人不会挖啊没事,今天咱挖好的送你一箩筐首先啊,我在B站上最喜欢看这个家伙的视频了为啥 ,咱撇...

某站后端代码被“开源”同<em>时</em>刷遍全网的,还有代码<em>里</em>的那些神注释 我们这才知道,原来程序员个個都是段子手;这么多年来我们也走过了他们的无数套路… 首先,产品经理是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记每一页都写满了对产品经理的恨。 然后也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁讓人想起之前某音乐app的穷逼Vip果然,穷逼在哪<em>里</em>都是...

2020年截止目前我面试了阿<em>里</em>巴巴、腾讯、美团、拼多多、京东、快手等互联网大厂。峩发现数据库事务在面试<em>中</em>出现的次数非常多

疫情期间找工作确实有点难度,想拿到满意的薪资确实要点实力啊!面试官:Spring<em>中</em>的@Value用过麼,介绍一下我:@Value可以标注在字段上面可以将外部配置文件<em>中</em>的数据,比如可以...

嗨小伙伴们大家好,我是沉默王二本篇文章来和大镓聊聊自学编程<em>中</em>的一些误区——这是我在 B 站上看了羊哥的一期视频后有感而发的文章。因为确实有很多读者也曾私信问过我这些方面的問题很有代<em>表</em>性,所以我就结合自己的亲身体会来谈一谈希望对小伙伴们有所启发。 01、追求<em>时</em>髦 所谓基础不牢地动山摇啊。可很多尛伙伴压根就没注意过这个问题市面上出什么新鲜的技术就想去尝试,结果把自己学的乱七八糟心灰意冷...

晓查 乾明 发自 凹非寺量子位 報道 | 公众号 QbitAI安卓乱象,所有人都是知道的但你知道到底有多乱么?现在我们这些普通用户,也能定量分析检测了真相,可能比想象<em>Φ</em>还严重来看...

在北漂的那段<em>时</em>间几乎天天加班,只要加班必然晚上回家会坐出租车北漂7年大概遇上了近1000个出租车司机。大家都知道茬北京住的的地方和公司一般距离都很远,就算是晚上10点或者11点的<em>时</em>候...

颜值有点高条件有点好

前段<em>时</em>间 欧阳娜娜空降阿<em>里</em>P8被骂上热搜 有網友调侃道: 名牌大学毕业的研究生 要在阿<em>里</em>没日没夜、加班加点、 全年无休奋斗5年,才可能有机会 和20岁的欧阳娜娜一起喝下午茶…… 本來嘛大厂?明星的营销无可厚非 那是什么让撸代码N年的程序员愤愤不平呢? 还不是因为升到P8真的太难了! 这是很多阿<em>里</em>人甚至互联网人遙不可及的梦想! 阿<em>里</em>P8到底有多牛 根据知乎大V@半佛仙人透露的情况: 阿<em>里</em>P8基本上要求研究生 5 年以上经验,本科 7 年以上经验; P8 一般去小公司就是各种 O一般公司(非国企、.

我在很多地方看到这样一个观点,“

复合数据类型 PL/sql truncate有两种复合数据结構:记录和集合记录由不同的域组成,集合由不同的元素组成在本文中我 们将讨论记录和集合的类型、怎样定义和使用记录和集合。 ? 复合数据类型(1) ? 复合数据类型(2) ? 复合数据类型(3) ? 复合数据类型(4) ? 复合数据类型(5)

单行函数和组函数 函数是一种有零个或多个参数并且有一個返回值的程序在 sql truncate中 Oracle 内建了一系列函数,这些函数 都可被称为 sql truncate或 PL/sql truncate语句函数主要分为两大类:单行函数和组函数。 ? 单行函数和组函数詳解(1) ? 单行函数和组函数详解(2) ? 单行函数和组函数详解(3) ? 单行函数和组函数详解(4) ? 单行函数和组函数详解(5)

表和视图 Oracle 中表是数据存储的基本結构Oracle 中引入了分区表和对象表,视图是一个或多个表中数据的逻辑 表达式本文我们将讨论怎样创建和管理简单的表和视图。 ? 表和视圖(1) ? 表和视图(2)

完整性约束 完整性约束是一种规则不占用任何数据库空间。完整性约束存在数据字典中在执行 sql truncate或 PL/sql truncate期 间使用。用户可以指奣约束是启用的还是禁用的当约束启用时,他增强了数据的完整性否则,则反之 但约束始终存在于数据字典中。 ? 完整性约束(1) ? 完整性约束(2) ? 完整性约束(3)

过程和函数 过程和函数都以编译后的形式存放在数据库中函数可以没有参数也可以有多个参数并有一个返回值。過


程有零个或多个参数没有返回值。函数和过程都可以通过参数列表接收或返回零个或多个值函数和过 程的主要区别不在于返回值,洏在于他们的调用方式
? 过程和函数(1) ? 过程和函数(2)

操作和控制语言 sql truncate语言共分为四大类:数据查询语言 DQL,数据操纵语言 DML 数据定义语言 DDL,數据控制语言 DCL其中用于定义数据的结构,比如 创建、修改或者删除数据库;DCL 用于定义数据库用户的权限 ? 数据操作和控制语言详解(1) ? 數据操作和控制语言详解(2) ? 数据操作和控制语言详解(3)

游标 当执行一条 DML 语句后,DML 语句的结果保存在四个游标属性中这些属性用于控制程序鋶程或者了解 程序的状态。当运行 DML 语句时PL/sql truncate打开一个内建游标并处理结果,游标是维护查询结果的内存中 的一个区域 ? 游标使用大全(1) ? 遊标使用大全(2) ? 游标使用大全(3)

异常处理 PL/sql truncate处理异常不同于其他程序语言的错误管理方法,PL/sql truncate的异常处理机制与 ADA 很相似有一个 处理错误的全包含方法。 ? 异常处理初步(1) ? 异常处理初步(2)


ORACLE 服务器和其他工具中了近几年中更多的开发人员和 DBA 开始使用 PL/SQL,本
文将讲述 PL/sql truncate基础语法结构和组件、以及如何设计并执行一个 PL/sql truncate程序。
及其独有的数据管理的便利性那么你很难想象 ORACLE 缺了 PL/sql truncate的情形。PL/sql truncate不
是一个独立的产品他是一个整合到 ORACLE 垺务器和 ORACLE 工具中的技术,可以把

. PL/sql truncate是一种高性能的基于事务处理的语言能运行在任何 ORACLE 环境中,支持


所有数据处理命令通过使用 PL/sql truncate程序单元處理 sql truncate的数据定义和数据控制元素。
或 sql truncate命令调用任何客户/服务器工具都能访问 PL/sql truncate程序,具有很好的可重用性

. 可以使用 ORACLE 数据工具管理存储在垺务器中的 PL/sql truncate程序的安全性。可以授


权或撤销数据库其他用户访问 PL/sql truncate程序的能力

. PL/sql truncate代码可以使用任何 ASCII 文本编辑器编写,所以对任何 ORACLE 能够运行的


操作系统都是非常便利的

. 对于 SQLORACLE 必须在同一时间处理每一条 sql truncate语句,在网络环境下这就意味


作每一个独立的调用都必须被 oracle 服务器处理这就占用大量的服务器时间,同时导致
网络拥挤而 PL/sql truncate是以整个语句块发给服务器,这就降低了网络拥挤

PL/sql truncate是一种块结构的语言,组成 PL/sql truncate程序的单え是逻辑块一个 PL/sql truncate程序


包含了一个或多个逻辑块,每个块都可以划分为三个部分与其他语言相同,变量在使用之
前必须声明PL/sql truncate提供了独竝的专门用于处理异常的部分,下面描述了 PL/sql truncate块的不

声明部分包含了变量和常量的数据类型和初始值这个部分是由关键字 DECLARE 开


始,如果不需偠声明变量或常量那么可以忽略这一部分;需要说明的是游标的声明也在这

执行部分是 PL/sql truncate块中的指令部分,由关键字 BEGIN 开始所有的可执行語句都放


在这一部分,其他的 PL/sql truncate块也可以放在这一部分

这一部分是可选的,在这一部分中处理异常或错误对异常处理的详细讨论我们在後面

PL/sql truncate块中的每一条语句都必须以分号结束,sql truncate语句可以使多行的但分号表示该


语句的结束。一行中可以有多条 sql truncate语句他们之间以分号分隔。每一个 PL/sql truncate块由

PL/sql truncate程序块可以是一个命名的程序块也可以是一个匿名程序块匿名程序块可以用


在服务器端也可以用在客户端。

命名程序块可鉯出现在其他 PL/sql truncate程序块的声明部分这方面比较明显的是子程序,


子程序可以在执行部分引用也可以在异常处理部分引用。

PL/sql truncate程序块可背独竝编译并存储在数据库中任何与数据库相连接的应用程序都可


以访问这些存储的 PL/sql truncate程序块。ORACLE 提供了四种类型的可存储的程序:

函数是命名叻的、存储在数据库中的 PL/sql truncate程序块函数接受零个或多个输入参数,

存储过程是一个 PL/sql truncate程序块接受零个或多个参数作为输入(INPUT)或输出

包其实就昰被组合在一起的相关对象的集合,当包中任何函数或存储过程被调用包就


被加载入内存中,包中的任何函数或存储过程的子程序访问速度将大大加快
包由两个部分组成:规范和包主体(body),规范描述变量、常量、游标、和子程序,包体完

触发器与一个表或数据库事件联系在┅起的当一个触发器事件发生时,定义在表上的

变量存放在内存中以获得值能被 PL/sql truncate块引用。你可以把变量想象成一个可储藏东


西的容器容器内的东西是可以改变的。

变量一般都在 PL/sql truncate块的声明部分声明PL/sql truncate是一种强壮的类型语言,这就是说


在引用变量前必须首先声明要在执荇或异常处理部分使用变量,那么变量必须首先在声明

注意 :可以在声明变量的同时给变量强制性的加上 NOT NULL 约束条件此时变量在初

给变量赋徝有两种方式:

常量与变量相似,但常量的值在程序内部不能改变常量的值在定义时赋予,他的声

这个语句定了一个名叫 ZERO_VALUE、数据类型昰 NUMBER、值为 0 的常量。

标量(scalar)数据类型没有内部组件他们大致可分为以下四类:

表1 显示了数字数据类型;表 2 显示了字符数据类型;表 3 显示了日期和布尔数据类

用于存储二进制数据和字节字符串,当在两个数据库 之间进行传递时RAW 数据不在字符集之间进行转 换。

与 LONG 数据类型相似哃样他也不能在字符集之 间进行转换。


与数据库 ROWID 伪列类型相同能够存储一个行标 示符,可以将行标示符看作数据库中每一行的唯一键 值
与 VARCHAR 数据类型相似,存储可变长度的字符 串声明方法与 VARCHAR 相同

LOB(大对象,Large object) 数据类型用于存储类似图像,声音这样的大型数据对象


LOB 数据对象可鉯是二进制数据也可以是字符数据,其大长度不超过 4GLOB 数据类
型支持任意访问方式,LONG 只支持顺序访问方式LOB 存储在一个单独的位置上,同時
一个"LOB 定位符"(LOB locator)存储在原始的表中该定位符是一个指向实际数据的指针。

与其他程序设计语言相同PL/sql truncate有一系列操作符。操作符分为下面几類:

算术操作符如表 4 所示

关系操作符主要用于条件判断语句或用于 where 子串中关系操作符检查条件和结果

表7.8 显示的是逻辑操作符

执行部分包含了所有的语句和表达式,执行部分以关键字 BEGIN 开始,以关键字


的错误将在异常处理部分解决在执行部分中可以使用另一个 PL/sql truncate程序块,这种程序块

所有的SQL数据操作语句都可以用于执行部分PL/SQL块不能再屏幕上显示SELECT


语句的输出。SELECT 语句必须包括一个 INTO 子串或者是游标的一部分执行部分使用的
变量和常量必须首先在声明部分声明,执行部分必须至少包括一条可执行语句NULL 是一
条合法的可执行语句,事物控制语句 COMMIT 和 ROLLBACK 可以在執行部分使用数据

命名的程序与匿名程序的执行不同,执行命名的程序块必须使用 execute 关键字:

如果在另一个命名程序块或匿名程序块中执荇这个程序那么就不需要 EXECUTE 关

控制结构控制 PL/sql truncate程序流程的代码行,PL/sql truncate支持条件控制和循环控制结构。

循环控制的基本形式是LOOP语句LOOP和END LOOP之间的语句將无限次的执行。


LOOP 语句的语法如下:

LOOP 和 END LOOP 之间的语句无限次的执行显然是不行的那么在使用 LOOP 语句

EXIT WHEN 语句将结束循环,如果条件为 TRUE则结束循環。

WHILE..LOOP 有一个条件与循环相联系如果条件为 TRUE,则执行循环体内的语句,

LOOP 和 WHILE 循环的循环次数都是不确定的FOR 循环的循环次数是固定的,

如果要退出 for 循环可以使用 EXIT 语句

用户可以使用标签使程序获得更好的可读性。程序块或循环都可以被标记标签的形式

注意:NULL 是一个合法的可执荇语句。

程序块的内部可以有另一个程序块这种情况称为嵌套嵌套要注意的是变量,定义在

我们在这篇文章中介绍了 PL/sql truncate的基础语法以及如哬使用 PL/sql truncate语言设计和运行

PL/sql truncate有两种复合数据结构:记录和集合记录由不同的域组成,集合由不同的元素组成


在本文中我们将讨论记录和集匼的类型、怎样定义和使用记录和集合。

记录是 PL/sql truncate的一种复合数据结构scalar 数据类型和其他数据类型只是简单的在包


一级进行预定义,但复合數据类型在使用前必须被定义记录之所以被称为复合数据类型是
因为他由域这种由数据元素的逻辑组所组成。域可以是 scalar 数据类型或其他記录类型
它与 c 语言中的结构相似,记录也可以看成表中的数据行域则相当于表中的列,在表和虚
拟表(视图或查询)中非常容易定义囷使用行或记录中的每一列或域都可以被引用或单独
赋值,也可以通过一个单独的语句引用记录所有的域在存储过程或函数中记录也鈳能有参

在PL/sql truncate中有两种定义方式:显式定义和隐式定义。一旦记录被定义后声明或创建


定义类型的记录变量,然后才是使用该变量隐式聲明是在基于表的结构或查询上使用
%TYPE 属性,隐式声明是一个更强有力的工具这是因为这种数据变量是动态创建的。

显式定义记录是在 PL/sql truncate程序块中创建记录变量之前在声明部分定义使用 type 命

域名必须服从与表或列的命名规则相同的命名规则。下面我们看一个例子:

域定义时的%TYPE 屬性用于引用数据库中的表或视图的数据类型和大小,而在此之前


程序不知道类型和大小在上面的例子中记录域在编译时将被定义为与列 SYMBOL 楿同的
数据类型和大小,当代码中要使用来自数据库中的数据时,在变量或域定义中好使用

隐式定义记录中我们不用描述记录的每一个域。这是因为我们不需要定义记录的结构


不需要使用 TYPE 语句,相反在声明记录变量时使用%ROWTYPE 命令定义与数据库表
视图,游标有相同结构的记錄与 TYPE 命令相同的是它是一种定义获得数据库数据记录

用户可以给记录赋值、将值传递给其他程序。记录作为一种复合数据结构意味作他囿两


个层次可用用户可以引用整个记录,使用 select into 或 fetch 转移所有域也可以将整个
记录传递给一个程序或将所有域的值赋给另一个记录。在更低的层次用户可以处理记录内
单独的域,用户可以给单独的域赋值或者在单独的域上运行布尔表达式也可以将一个或更
多的域传递给叧一个程序。

记录由域组成访问记录中的域使用点(.)符号。我们使用上面的例子看看

给记录或记录中的域赋值的方法有几种可以使鼡 SELECT INTO 或 FETCH 给整个记 录或单独的域赋值, 可以将整个记录的值赋给其他记录也可以通过给每个域赋值来得到 记录,以下我们通过实例讲解每一種赋值方法

使用SELECT INTO 给记录赋值要将记录或域放在 INTO 子串中,INTO 子串中的变量 与 SELECT 中列的位置相对应

如果sql truncate语句返回多行数据或者希望使用带参数嘚游标,那么就要使用游标这种情 况下使用 FETCH 语句代替 INSTEAD INTO 是一个更简单、更有效率的方法,但在安全性 较高的包中 FETCH 的语法如下:

使用赋值语呴将整个记录复制给另一个记录是一项非常有用的技术不过记录必须精确


地被声明为相同的类型,不能是基于两个不同的 TYPE 语句来获得相哃的结构

--这两个域有相同的数据类型和大小

记录不能用于 INSERT 语句和将记录直接用于比较,下面两种情况是错误的:

要特别注意考试中试题Φ有可能用%ROWTYPE 来欺骗你但这是错误的,记住这一 点还有可能会出现用记录排序的情况,ORACLE 不支持记录之间的直接比较对于记录 比较,可鉯采用下面的两个选择:

. 设计一个函数该函数返回 scalar 数据类型,使用这个函数比较记录如

集合与其他语言中的数组相似,在 ORACLE7.3 及以前的版夲中只有一种集合称为


PL/sql truncate表这种类型的集合依然保留,就是索引(INDEX_BY)表与记录相似,集合在
定义的时候必须使用 TYPE 语句然后才是创建和使用这种类型的变量。

PL/sql truncate有三种类型的集合

这三种类型的集合之间由许多差异包括数据绑定、稀疏性(sparsity)、数据库中的存


储能力都不相同。绑萣涉及到集合中元素数量的限制VARRAY 集合中的元素的数量是有
限,Index_by 和嵌套表则是没有限制的稀疏性描述了集合的下标是否有间隔,Index_by
表总是稀疏的如果元素被删除了嵌套表可以是稀疏的,但 VARRAY 类型的集合则是紧密
的它的下标之间没有间隔。

Index_by 表不能存储在数据库中但嵌套表囷 VARRAY 可以被存储在数据库中。

虽然这三种类型的集合有很多不同之处但他们也由很多相似的地方:

. 都是一维的类似数组的结构

Index_by 表集合的定義语法如下:

一旦定义了 index_by 表,就可以向创建其他变量那样创建 index_by 表的变量:

嵌套表非常类似于 Index_by 表创建的语法也非常相似。使用 TYPE 语句只是沒有

NOT NULL 选项要求集合所有的元素都要有值,element_type 可以是一个记录但是


这个记录只能使用标量数据类型字段以及只用于数据库的数据类型(不能昰

嵌套表和 VARRAY 都能作为列存储在数据库表中,所以集合自身而不是单个的元素可


以区别元素为 NULL 的情况当集合为 NULL 时,即使不会产生异常用戶也不能引用集
合中的元素。用户可以使用 IS NULL 操作符检测集合是否为 NULL

存储在一个数据库中的嵌套表并不与表中的其它数据存放在同一个数據块中,它们实际


上被存放在第二个表中正如没有 order by 子句 select 语句不能保证返回任何有顺序的数
据,从数据库中取回的嵌套表也不保证元素的順序由于集合数据是离线存储的,对于大型
集合嵌套表是一个不错的选择

VARRAY 或数据变量都有元素的限制。想起他集合一样 VARRAY 定义仍然使用 TYPE


型如果 element_type 是记录,那么这个记录只能使用标量数据字段(与嵌套标相似)
NOT NULL 子串表示集合中的每一个元素都必须有值。

与嵌套表相似VARRAY 能夠自动为 NULL,可以使用 IS NULL 操作符进行检测。与嵌


套表不同的是当 VARRAY 存储在数据库中时与表中的其他数据存放在同一个数据块中。
正象列的排序保存在表的 SELECT*中一样元素的顺序保存在 VARRAY 中同样由于集合
是在线存储的,VARRAY 很适合于小型集合

象记录一样,集合可以在两个层面上使用:

. 访问集合中的单个元素

第一种情况使用集合名第二种情况使用下标:

index_by 表的下标是两为的整数,可以为正也可以为负范围是: ---。嵌套表和 VARRAY 表礻元素在集合中的位置用户很难灵活 设计下标,这是因为:

. 嵌套表开始是紧密的(相对于疏松)

. 这两种集合的下标都由 1 开始

初始化、删除、引用集合

使用集合之前必须要初始化对于 Index_by 表初始化是自动进行的,但是对于嵌套表 和 VARRAY 就必须使用内建的构造函数如果重新调用,嵌套表和 VARRAY 自动置 NULL 这不只是元素置 NULL,而是整个集合置 NULL给集合内的元素赋值需要使用下标符号。 将一个集合的值赋给另一个集合只需要簡单的使用赋值操作符。

Index_by 集合初始化是简单的只要涉及其中的一个元素集合就被初始化了。


嵌套表和 VARRAY 由构造函数初始化构造函数和集匼的名字相同,同时有一组参数 每个参数对应一个元素,如果参数为 NULL,那么对应的元素就被初始化为 NULL,如果创建 了元素但没有填充数据,那么元素将保持 null 值可以被引用,但不能保持数据如果 元素没有初始化,那么就不能引用该元素
在这个例子中,嵌套表 BIOTECH_STOCKS 初始化有 5 个元素VARRAY tech_10 集 合多能有 10 个元素,但构造函数只创建了 8 个元素其中还有两个元素是 NULL 值,并 程序中给他们赋值

初始化基于记录的集合,就必须将記录传递给构造函数注意不能只是简单的将记录的

除了构造函数外,集合还有很多内建函数,这些函数称为方法调用方法的语法如下:

丅表中列出 oracle 中集合的方法


返回集合中在元素 x 之前紧挨着它的元素的值,如果该元素是第一个元素则返 回 null。

TRI M 从集合末端开始删除一个元素

集合不能直接用于比较要比较两个集合,可以设计一个函数该函数返回一个标量数 据类型。

单行函数和组函数详解(1)

函数是一种有零个戓多个参数并且有一个返回值的程序在 sql truncate中 Oracle 内建了一系列函


数,这些函数都可被称为 sql truncate或 PL/sql truncate语句函数主要分为两大类:

本文将讨论如何利用單行函数以及使用规则。

sql truncate和 PL/sql truncate中自带很多类型的函数有字符、数字、日期、转换、和混合型等多


句,DELET 的 WHERE 子句,认证考试特别注意在 SELECT 语句中使鼡这些函数所以我
们的注意力也集中在 SELECT 语句中。

在如何理解 NULL 上开始是很困难的就算是一个很有经验的人依然对此感到困惑。

下面我们看看 emp 数据表它包含了薪水、奖金两项需要计算总的补偿

不是简单的将薪水和奖金加起来就可以了,如果某一行是 null 值那么结果就将是 null

这個语句中,雇员的工资和奖金都将更新为一个新的值但是如果没有奖金,即 salary

单行函数和组函数详解(2)

单行字符串函数用于操作字符串数据他们大多数有一个或多个参数,其中绝大多数返


与INSTR()函数一样只是他返回的是字节,对于单字节 INSTRB()等于 INSTR()
与LENGTH()一样返回字节。


在c1 的右侧鼡 c2 字符串补足致长度 i,可多次重复如果 i 小于 c1 的长度,那么只返
回 i 那么长的 c1 字符其他的将被截去。c2 的缺省值为单空格,其他与 LPAD 相似


把c1 中右边嘚字符去掉使其第后一个字符不在 c2 中,如果没有 c2那么 c1 就不
与SUBSTR 大致相同,只是 I,J 是以字节计算

单行函数和组函数详解(3)

单行数字函数操作數字数据,执行数学和算术运算所有函数都有数字参数并返回数字


值。所有三角函数的操作数和值都是弧度而不是角度oracle 没有提供内建嘚弧度和角度的 转换函数。

ACOS() 反余玄函数返回-1 到 1 之间的数。n 表示弧度

ATAN() 反正切函数返回 n 的反正切值,n 表示弧度

CEIL() 返回大于或等于 n 的小整数。

COSH() 返回n 的双曲余玄值n 为数字。

LN() 返回N 的自然对数N 必须大于 0

ROUND(,) 返回舍入小数点右边 n2 位的 n1 的值,n2 的缺省值为 0这回将小数点接近的整数, 如果 n2 為负数就舍入到小数点左边相应的位上n2 必须是整数。

SIN() 返回n 的正玄值,n 为弧度

TRUNC(,) 返回截尾到 n2 位小数的 n1 的值,n2 缺省设置为 0当 n2 为缺省设置时會将 n1 截尾 为整数,如果 n2 为负值就截尾在小数点左边相应的位上。

单行日期函数操作 DATA 数据类型绝大多数都有 DATA 数据类型的参数,绝大多数 返回的也是 DATA 数据类型的值

ADD_MONTHS(,<i>) 返回日期 d 加上 i 个月后的结果。 i 可以使任意整数如果 i 是一个小数,那么数据库将 隐式的他转换成整数将會截去小数点后面的部分。


函数返回包含日期 d 的月份的后一天

MONTHS_BETWEEN(,) 返回d1 和 d2 之间月的数目,如果 d1 和 d2 的日的日期都相同或者都使该月的后一 天,那麼将返回一个整数否则会返回的结果将包含一个分数。

NEW_TIME(,,) d1 是一个日期数据类型当时区 tz1 中的日期和时间是 d 时,返回时区 tz2 中的日期 和时间tz1 囷 tz2 时字符串。

NEXT_DAY(,) 返回日期 d 后由 dow 给出的条件的第一天dow 使用当前会话中给出的语言指定了一 周中的某一天,返回的时间分量与 d 的时间分量相同


将日期 d 按照 fmt 指定的格式舍入,fmt 为字符串
函数没有参数,返回当前日期和时间
返回由 fmt 指定的单位的日期 d.

单行函数和组函数详解(4)

单行转換函数用于操作多数据类型,在数据类型之间进行转换


c 表示字符串,fmt 表示一种特殊格式的字符串返回按照 fmt 格式显示的 c,nlsparm 表示使用的语言。函数将字符串 c 转换成 date 数据类型

TO_MULTI_BYTE() c 表示一个字符串,函数将 c 的担子截字符转换成多字节字符

TO_NUMBER([,[,) c 表示字符串,fmt 表示一个特殊格式的字符串函数返回值按照 fmt 指定的格式显示。 nlsparm 表示语言函数将返回 c 代表的数字。

TO_SINGLE_BYTE() 将字符串 c 中得多字节字符转化成等价的单字节字符该函数仅当数據库字符集同时包 含单字节和多字节字符时才使用

DUMP(,[,[,[,]]]) x 是一个表达式或字符,fmt 表示 8 进制、10 进制、16 进制、或则单字符函 数返回包含了有关 x 的内蔀表示信息的 VARCHAR2 类型的值。如果指定了 n1,n2 那么从 n1 开始的长度为 n2 的字节将被返回

EMPTY_BLOB() 该函数没有参数,函数返回 一个空的 BLOB 位置指示符函数用于初始化一 个 BLOB 变量或 BLOB 列。


该函数没有参数函数返回 一个空的 CLOB 位置指示符。函数用于初始化一 个 CLOB 变量或 CLOB 列

GREATEST() exp_list 是一列表达式,返回其中大的表达式每个表达式都被隐含的转换


第一个表达式的数据类型,如果第一个表达式是字符串数据类型中的任何一个那
么返回的结果是 varchar2 数据类型, 同时使用的比较是非填充空格类型的比较

LEAST() exp_list 是一列表达式,返回其中小的表达式每个表达式都被隐含的转换


第一个表达式的数据类型,如果第一个表达式是字符串数据类型中的任何一个将
返回的结果是 varchar2 数据类型, 同时使用的比较是非填充空格类型的比较

UID 该函数没囿参数,返回唯一标示当前数据库用户的整数

USER 返回当前用户的用户名

USERENV() 基于opt 返回包含当前会话信息。opt 的可选值为:

ISDBA 会话中SYSDBA 脚色响应返回 TRUE SESSIONID 返回审计会话标示符 ENTRYID 返回可用的审计项标示符 INSTANCE 在会话连接后,返回实例标示符该值只用于运行 Parallel 服 务器并且有 多个实例的情况下使用。 LANGUAGE 返囙语言、地域、数据库设置的字符集 LANG 返回语言名称的 ISO 缩写。 TERMINAL 为当前会话使用的终端或计算机返回操作系统的标示符

VSIZE() x 是一个表达式。返囙 x 内部表示的字节数

单行函数和组函数详解(5)

组函数也叫集合函数,返回基于多个行的单一结果行的准确数量无法确定,除非查询


被执荇并且所有的结果都被包含在内与单行函数不同的是,在解析时所有的行都是已知的
由于这种差别使组函数与单行函数有在要求和行為上有微小的差异.

与单行函数相比,oracle 提供了丰富的基于组的多行的函数。这些函数可以在 select


返回查询中行的数目缺省设置是 ALL,*表示返回所囿的行。


返回选择列表项目的大值如果 x 是字符串数据类型,他返回一个 VARCHAR2 数据
类型如果 X 是一个 DATA 数据类型,返回一个日期如果 X 是 numeric 数据类型,返回
一个数字注意 distinct 和 all 不起作用,应为大值与这两种设置是相同的


返回选择列表项目的小值。
返回选者的列表项目的标准差所谓標准差是方差的平方根。
返回选择列表项目的数值的总和
返回选择列表项目的统计方差。

正如题目暗示的那样组函数就是操作那些已经汾好组的数据我们告诉数据库用

在这个例子中,我们用 state 字段分类;如果我们要将结果按照 zip_codes 排序,可以用

用 HAVING 子句限制分组数据

现在你已经知噵了在查询的 SELECT 语句和 ORDER BY 子句中使用主函数组函数

这个语句中数据库不知道 SUM()是什么,当我们需要指示数据库对行分组然后限制

函数可以嵌套。一个函数的输出可以是另一个函数的输入操作数有一个可继承的执行


过程。但函数的优先权只是基于位置函数遵循由内到外,由咗到右的原则嵌套技术一般

嵌套函数可以包括在组函数中嵌套单行函数,或者组函数嵌套入单行函数或组函数中

Oracle 数据库数据对象中基夲的是表和视图,其他还有约束、序列、函数、存储过程、


包、触发器等对数据库的操作可以基本归结为对数据对象的操作,理解和掌握 Oracle 數据
库对象是学习 Oracle 的捷径。

Oracle 中表是数据存储的基本结构ORACLE8 引入了分区表和对象表,ORACLE8i


引入了临时表使表的功能更强大。视图是一个或多个表中数据的逻辑表达式本文我们将
讨论怎样创建和管理简单的表和视图。

表可以看作有行和列的电子数据表表是关系数据库中一种拥囿数据的结构。用


然后定义了三列同时规定了列的数据类型和大小。

在创建表的同时你可以规定表的完整性约束也可以规定列的完整性约束,在列上普通


的约束是 NOT NULL,关于约束的讨论我们在以后进行


在建立或更改表时,可以给表一个缺省值缺省值是在增加行时,增加的數据行中某一
项值为 null 时oracle 即认为该值为缺省值。

下列数据字典视图提供表和表的列的信息:

表名标识一个表所以应尽可能在表名中描述表,oracle 中表名或列名长可以达 30


个字符串表名应该以字母开始,可以在表名中包含数字、下划线、#、$等

可以使用查询从基于一个或多个表Φ建立表,表的列的数据类型和大小有查询结果决

在建立表后有时候我们可能需要修改表,比如更改列的定义更改缺省值,增加新列

对于已经存在的数据行,新列的值将是 NULL.

. 可以增加字符串数据类型的列的长度数字数据类型列的精度。

. 减少列的长度时该列应该不包含任何值,所有数据行都为 NULL.

. 改变数据类型时该列的值必须是 NULL.

. 对于十进制数字,可以增加或减少但不能降低他的精度

优化ORACLE 数据库,唯一嘚方法是删除列重新建立数据库。在 ORACLE8i 中有很


多方法删除列你可以删除未用数据列或者可以标示该列为未用数据列然后删除。

要注意的昰在删除列时关于该列的索引和完整性约束也同时删除注意关键字


CASCADE CONSTRAINS,如果删除的列是多列约束的一部分那么这个约束条件相对于

如果鼡户担心在大型数据库中删除列要花太多时间,可以先将他们标记为未用数据列

这个语句将一个或多个数据列标记为未用数据列,但并鈈删除数据列中的数据也不释


放占用的磁盘空间。但是未用数据列在视图和数据字典中并不显示,并且该数据列的名称
将被删除新嘚数据列可以使用这个名称。基于该数据列的索引、约束统计等都将被删除。

删除未用数据列的语句是:

删除表非常简单但它是一个鈈可逆转的行为。

RENAME 命令用于给表和其他数据库对象改名ORACLE 系统自动将基于旧表的完整 性约束、索引、权限转移到新表中。ORACLE 同时使所有基于舊表的数据库对象比如视 图、程序、函数等,为不合法

TRUNCATE 命令与 DROP 命令相似, 但他不是删除整个数据表所以索引、完整性

视图是一个或哆个表中的数据的简化描述,用户可以将视图看成一个存储查询(stored query)或一个虚拟表(virtual table).查询仅仅存储在 oracle 数据字典中实际的数据没有存


放在任何其它地方,所以建立视图不用消耗其他的空间视图也可以隐藏复杂查询,比如多
表查询但用户只能看见视图。视图可以有与他所基于表的列名不同的列名用户可以建立
限制其他用户访问的视图。

用户可以在创建视图的同时更改列名方法是在视图名后立即加上要命名嘚列名。重新

如果在创建的视图包含错误在正常情况下视图将不会被创建。但如果你需要创建一个

这样将创建了一个名为 ORDER_STATUS 的视图但这樣的视图的状态是不合法的, 如果以后状态发生变化则可以重新编译其状态也变成合法的。

从视图中获得数据与从表中获得数据基本一樣用户可以在连接和子查询中使用视图,


也可以使用 sql truncate函数以及所有 SELECT 语句的字串。

用户在一定的限制条件下可以通过视图更新、插入、刪除数据如果视图连接多个表,


那么在一个时间里只能更新一个表所有的能被更新的列可以在数据字典

用户在 CREATE VIEW 中可以使用了 WITH 子串。WITH READ ONLY 子串表示创建 的视图是一个只读视图不能进行更新、插入、删除操作。WITH CHECK OPTION 表示可 以进行插入和更新操作但应该满足 WHERE 子串的条件。这个条件僦是创建视图 WHERE 子句的条件比如在上面的例子中用户创建了一个视图 TOP_EMP,在这个视图中用户不能 插入

删除视图使用 DROP VIEW 命令。同时将视图定义从数據字典中删除基于视图的权 限也同时被删除,其他涉及到该视图的函数、视图、程序等都将被视为非法

完整性约束用于增强数据的完整性,Oracle 提供了 5 种完整性约束:

完整性约束是一种规则不占用任何数据库空间。完整性约束存在数据字典中在执行


sql truncate或 PL/sql truncate期间使用。用户可鉯指明约束是启用的还是禁用的当约束启用时,他增
强了数据的完整性否则,则反之但约束始终存在于数据字典中。

在数据列上 Check 约束需要 一个特殊的布尔条件或者将数据列设置成 TRUE至少


一个数据列的值是 NULL,Check 约束用于增强表中数据内容的简单的商业规则用户使用
Check 约束保证数据规则的一致性。Check 约束可以涉及该行同属 Check 约束的其他数据
的商业规则需要这类的数据检查那么可以使用触发器。Check 约束不保护 LOB 数据類型
的数据列和对象、嵌套表、VARRY、ref 等单一数据列可以有多个 Check 约束保护,一
个 Check 约束可以保护多个数据列

Check 约束可以被创建或增加为一个表約束,当 Check 约束保护多个数据列时必须


使用表约束语法。约束名是可选的并且如果这个名字不存在那么 oracle 将产生一个以
SYS_开始的唯一的名字。

NOT NULL 约束应用在单一的数据列上并且他保护的数据列必须要有数据值。缺省


状况下ORACLE 允许任何列都可以有 NULL 值。某些商业规则要求某数据列必须要有值
NOT NULL 约束将确保该列的所有数据行都有值。

唯一性约束可以保护表中多个数据列保证在保护的数据列中任何两行的数据都不相


哃。唯一性约束与表一起创建在唯一性约束创建后,可以使用 ALTER TABLE 语句修改

如果唯一性约束保护多个数据列,那么唯一性约束要作为表约束增加语法如下:

唯一性约束由一个 B-tree 索引增强,所以可以在 USING 子串中为索引使用特殊特征

用户可以禁用未以性约束,但他仍然存在禁鼡唯一性约束使用 ALTER TABLE 语句

注意用户不能删除在有外部键指向的表的唯一性约束。这种情况下用户必须首先禁用或

删除或禁用唯一性约束通常哃时删除相关联的唯一索引因而降低了数据库性能。经常


删除或禁用唯一性约束有可能导致丢失索引带来的性能错误要避免这样错误,可以采取下

1、在唯一性约束保护的数据列上创建非唯一性索引

表有唯一的主键约束。表的主键可以保护一个或多个列主键约束可与 NOT NULL 約


束共同作用于每一数据列。NOT NULL 约束和唯一性约束的组合将保证主键唯一地标识每
一行像唯一性约束一样,主键由 B-tree 索引增强

创建主键约束使用 CREATE TABLE 语句与表一起创建,如果表已经创建了可以使用

与唯一性约束一样,如果主键约束保护多个数据列那么必须作为一个表约束创建。

外部键约束保护一个或多个数据列保证每个数据行的数据包含一个或多个 null 值,


或者在保护的数据列上同时拥有主键约束或唯一性约束引用(主键或唯一性约束)约束可
以保护同一个表,也可以保护不同的表与主键和唯一性约束不同外部键不会隐式建立一个
父表表礻被引用主键或唯一性约束的表,子表表示引用主键和唯一性约束的表
缺省情况下禁止在子记录还存在的情况下删除父纪录。

在外部键約束保护的数据列中 NULL 值的处理可能产生不可预料的结果ORACLE 使


用 ISO standar Match None 规则增强外部键约束。这个规则规定如果任何外部键作用的数
据列包含有一個 NULL 值那么任何保留该键的数据列在父表中没有匹配值。

约束检验分两种情况一种是在每一条语句结束后检验数据是否满足约束条件,這种检

Oracle 序列是一个连续的数字生成器序列常用于人为的关键字,或给数据行排序否


则数据行是无序的像约束一样,序列只存在于数据芓典中序列号可以被设置为上升、下
降,可以没有限制或重复使用直到一个限制值创建序列使用 SET SEQUENCE 语句。
START WITH 定义序列生成的第一个数字缺省为 1
定义序列号是上升还是下降,对于一个降序的序列 INCREMENT BY 为负值
定义序列可以生成的小值这是降序序列中的限制值。缺省情况下该值为 NOMINVALUE,NOMINVALUE对于升序为 1,对于降序为-10E26.
CYCLE 设置序列值在达到限制值以后可以重复
设置序列值在达到限制值以后不能重复这是缺省设置。当试图产生 MAXVALUE+1 的徝时将 会产生一个异常
CACHE 定义序列值占据的内存块的大小,缺省值为 20
在每次序列号产生时强制数据字典更新保证在序列值之间没有间隔當创建序列时,START WITH 值必须等于或大于 MINVALUE

索引是一种可以提高查询性能的数据结构,在这一部分我们将讨论索引如何提高查询性


能的ORACLE 提供了鉯下几种索引:

B-Tree、哈希(hash)、位图(bitmap)等索引类型 基于原始表的索引 基于函数的索引 域(Domain)索引

实际应用中主要是 B-Tree 索引和位图索引,所以我们將集中讨论这两种索引类型

B-Tree 索引是普通的索引,缺省条件下建立的索引就是这种类型的索引B-Tree 索 引可以是唯一或非唯一的,可以是单一嘚(基于一列)或连接的(多列)B-Tree 索引在


检索高基数数据列(高基数数据列是指该列有很多不同的值)时提供了好的性能。对于取
出较尛的数据 B-Tree 索引比全表检索提供了更有效的方法但当检查的范围超过表的 10% 时就不能提高取回数据的性能。正如名字所暗示的那样B-Tree 索引是基于二元树的,由 枝干块(branch block)和树叶块(leaf block)组成,枝干块包含了索引列(关键字)和另一索
引的地址树叶块包含了关键字和给表中每个匹配行嘚 ROWID。

位图索引主要用于决策支持系统或静态数据不支持行级锁定。位图索引可以是简单的


(单列)也可以是连接的(多列)但在实践Φ绝大多数是简单的。位图索引好用于低到
中群集(cardinality)列在这些列上多位图索引可以与 AND 或 OR 操作符结合使用。位图 索引使用位图作为键值對于表中的每一数据行位图包含了 TRUE(1)、FALSE(0)、 或 NULL 值。位图索引的位图存放在 B-Tree 结构的页节点中B-Tree 结构使查找位图非常 方便和快速。另外位图以一种压缩格式存放,因此占用的磁盘空间比 B-Tree 索引要小得 多

对另一个数据对象而言同义词是一个别名。public 同义词是针对所有用户的楿对而言 private 同义词则只针对对象拥有者或被授予权限的账户。在本地数据库中同义词可以表示


表、视图、序列、程序、函数或包等数据对象也可以通过链接表示另一个数据库的对象。

过程和函数都以编译后的形式存放在数据库中函数可以没有参数也可以有多个参数并


有一個返回值。过程有零个或多个参数没有返回值。函数和过程都可以通过参数列表接收
或返回零个或多个值函数和过程的主要区别不在於返回值,而在于他们的调用方式过程
是作为一个独立执行语句调用的:

函数以合法的表达式的方式调用:

IN 表示在调用过程的时候,实際参数的取值被传递给该过程形式参数被认为是只读


的,当过程结束时控制会返回控制环境,实际参数的值不会改变

OUT 在调用过程时實际参数的取值都将被忽略,在过程内部形式参数只能是被赋值


而不能从中读取数据,在过程结束后形式参数的内容将被赋予实际参数

INOUT 这种模式是 IN 和 OUT 的组合;在过程内部实际参数的值会传递给形式参数,


形势参数的值可读也可写过程结束后,形势参数的值将赋予实际參数

创建函数的语法和过程的语法基本相同,唯一的区别在于函数有 RETUREN 子句

在执行部分函数必须有哟个或多个 return 语句

在创建函数中可以调鼡单行函数和组函数,例如:

包是一种将过程、函数和数据结构捆绑在一起的容器;包由两个部分组成:外部可视包


规范包括函数头,過程头和外部可视数据结构;另一部分是包主体(package body),包 主体包含了所有被捆绑的过程和函数的声明、执行、异常处理部分。

打包的 PL/sql truncate程序和没囿打包的有很大的差异包数据在用户的整个会话期间都一直


存在,当用户获得包的执行授权时就等于获得包规范中的所有程序和数据結构的权限。但
不能只对包中的某一个函数或过程进行授权包可以重载过程和函数,在包内可以用同一个
名字声明多个程序在运行时根据参数的数目和数据类型调用正确的程序。

创建包必须首先创建包规范创建包规范的语法如下:

私有数据结构是那些在包主体内部,對被调用程序而言是不可见的

触发器是一种自动执行响应数据库变化的程序。可以设置为在触发器事件之前或之后触


发或执行能够触發触发器事件的事件包括下面几种:

DML 事件触发器可以是语句或行级触发器。DML 语句触发器在触发语句之前或之后触 发 DML 行级触发器在语句影响嘚行变化之前或之后触发用户可以给单一事件和类型定义


多个触发器,但没有任何方法可以增强多触发器触发的命令下表列出了用户鈳以利用的触
INSERT 当向表或视图插入一行时触发触发器
UPDATE 更新表或视图中的某一行时触发触发器
DELETE 从表或视图中删除某一行时触发触发器
CREATE 当使用 CREATE 语呴为数据库或项目增加一个对象时触发触发器
ALTER 当使用 ALTER 语句为更改一个数据库或项目的对象时触发触发器
DROP 当使用 DROP 语句删除一个数据库或项目嘚对象时触发触发器
START 打开数据库时触发触发器,在事件后触发
SHUTDOWN 关闭数据库时触发事件前触发
LOGON 当一个会话建立时触发,事件前触发
LOGOFF 当关闭會话时触发事件前触发
SERVER 服务器错误发生时触发触发器,事件后触发

创建触发器的语法如下:

象约束一样触发器可以被设置为禁用或启用來关闭或打开他们的执行体(EXECUTE), 将触发器设置为禁用或启用使用 ALTER TRIGGER 语句:

要禁用或启用表的所有触发器使用 ALTER TABLE 语句

数据字典视图大致可以分为三類:

.前缀为 USER_的数据字典视图,包含了用户拥有的对象的信息

.前缀为 ALL_的数据字典视图,包含了用户当前可以访问的全部对象和权限的信息

.前缀为 DBA_的数据字典视图,包含了数据库拥有的所有对象和权限的信息

在绝大多数数据字典视图中都有象 DBA_TABLES,ALL_TABLES 和 USER_TABLES 这样的视图家族。Oracle 中有超过 100 個视图家族所以要全面介绍这些视图家族是单调

在Oracle 中还有一些不常用的数据字典表,但这些表不是真正的字典家族他们都是 一些重要嘚单一的视图。

其他的字典视图中主要的是 V$视图之所以这样叫是因为他们都是以 V$或 GV$开头 的。V$视图是基于 X$虚拟视图的V$视图是 SYS 用户所拥有嘚,在缺省状况下只有 SYS 用户和拥有 DBA 系统权限的用户可以看到所有的视图,没有 DBA 权限的用户可以看到 USER_和 ALL_视图但不能看到 DBA_视图。与 DBA_,ALL,和 USER_视图Φ面向数据库 信息相反这些视图可视的给出了面向实例的信息。

在大型系统上化几周时间手工输入每一条语句

手工输入带用户名变量的語句然后再输入每一个用户名,这需要花好几个小时的时

写一条sql truncate语句生成需要的 ALTER USER 语句,然后执行他这只需要几分钟 时间

很明显我们將选择生成 sql truncate的方法:

这个查询的结果将被脱机处理到一个文件中,然后在执行:

数据操作和控制语言详解(1)

sql truncate语言共分为四大类:数据查询语訁 DQL数据操纵语言 DML, 数据定义语言 DDL


数据控制语言 DCL。其中用于定义数据的结构比如 创建、修改或者删除数据库;DCL
用于定义数据库用户的權限;在这篇文章中我将详细讲述这两种语言在 Oracle 中的使用方

DML 是 sql truncate的一个子集,主要用于修改数据下表列出了 ORACLE 支持的 DML 语

INSERT 语句常常用于向表中插入行,行中可以有特殊数据字段或者可以用子查询从


已存在的数据中建立新行。

列目录是可选的缺省的列的目录是所有的列名,包括 comlumn_id,comlumn_id 可以

插入行的数据的数量和数据类型必须和列的数量和数据类型相匹配不符合列定义的数


据类型将对插入值实行隐式数据转换。NULL 字符串将一个 NULL 值插入适当的列中关键
字 NULL 常常用于表示将某列定义为 NULL 值。

下面的两个例子是等价的

UPDATE 命令用于修改表中的数据。

DELETE 语句用来从表Φ删除一行或多行数据该命令包含两个语句:

1、关键字 DELETE FROM 后跟准备从中删除数据的表名。

如果你想删除表中所有数据清空表,可以考虑使用 DDL 语言的 TRUNCATE 语句


缩短表和表索引,将表收缩到小范围并重新设置 NEXT 参数。REUSE STORAGE 不会
缩短表或者调整 NEXT 参数

1、TRUNCATE 在各种表上无论是大的还是小的嘟非常快。如果有 ROLLBACK 命令

2、TRUNCATE 是一个 DDL 语言向其他所有的 DDL 语言一样,他将被隐式提交

3、TRUNCATE 将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览


时经过 TRUNCATE 操作后的表比 DELETE 操作后的表要快得多。

5、不能授予任何人清空他人的表的权限

6、当表被清空后表和表的索引讲重噺设置成初始大小,而 delete 则不能

select for update 语句用于锁定行,阻止其他用户在该行上修改数据当该行被锁定后


其他用户可以用 SELECT 语句查询该行的数据,但不能修改或锁定该行

LOCK 语句常常用于锁定整个表。当表被锁定后大多数 DML 语言不能在该表上使用。

当两个事务都被锁定并且互相都茬等待另一个被解锁,这种情况称为死锁

当出现死锁时,ORACLE 将检测死锁条件并返回一个异常。

数据操作和控制语言详解(2)

事务控制包括协調对相同数据的多个同步的访问当一个用户改变了另一个用户正在使


用的数据时,oracle 使用事务控制谁可以操作数据

事务表示工作的一个基本单元,是一系列作为一个单元被成功或不成功操作的 sql truncate语 句在 sql truncate和 PL/sql truncate中有很多语句让程序员控制事务。程序员可以:

1、显式开始一个事物选择语句级一致性或事务级一致性

2、设置撤销回滚点,并回滚到回滚点
3、完成事务永远改变数据或者放弃修改


语句 用途 Commit 完成事务,数據修改成功并对其他用户开放 Rollback 撤销事务撤销所有操作 rollback to savepoint 撤销在设置的回滚点以后的操作 set transaction 响应事务或语句的一致性;特别对于事务使用回滚段

在sql truncate和 PL/sql truncate中 Savepoint 是在一事务范围内的中间标志。经常用于将一个长的


事务划分为小的部分保留点 Savepoint 可标志长事务中的任何点,允许可回滚该点之後的 操作在应用程序中经常使用 Savepoint;例如一过程包含几个函数,在每个函数前可建立 一个保留点如果函数失败,很容易返回到每一个函數开始的情况在回滚到一个 Savepoint 之后,该 Savepoint 之后所获得的数据封锁被释放为了实现部分回滚可以用带 TO Savepoint 子句的 ROLLBACK 语句将事务回滚到指定的位置。

關键字 SAVEPOINT 是可选的所以下面两个语句是等价的:

一致性是事物控制的关键慨念。掌握了 oracle 的一致性模型能使您更好的,更恰当 的使用事务控制oracle 通过一致性保证数据只有在事务全部完成后才能被用户看见和使 用。这项技术对多用户数据库有巨大的作用

oracle 常常使用语句级(state-level)一致性,保证数据在语句的生命期之间是可见的但 不能被改变事务由多个语句组成,当使用事务时事物级(transaction-level)一致性在整


个事务生命期中保证数据对所有语句都是可见的。

oracle 通过 SCN(syatem change number)实施一致性一个 SCN 是一个面向时间的 数据库内部键。SCN 只会增加不会减少SCN 表示了时间上的一个点,烸个数据块都有一 个 SCN,通过比较这个点实施操作

SET TRANSACTION 的一个作用是确保事务级一致或语句级一致中有一个实施。 ORACLE 使用这些术语:

下面的语句也能确保事务级一致:

任何企图在只读(READ ONLY)事务中修改数据的操作都会抛出一个异常但是,READ ONLY 事务只能在下列语句中使用:

即使没有改变任哬数据READ ONLY 事务依然必须使用一个 COMMIT 或 ROLLBACK 以结束整个事务。


SEGMENT)回滚段是 ORACLE 的一个特殊的数据对象,回滚段的头部包含正在使用该 回滚段事务的信息当用户回滚事务(ROLLBACK)时,ORACLE 将会利用回滚段中的数 据前影像来将修改的数据恢复到原来的值oracle 用 round-robin 给事务随机分配回滚段。
一个大的事务鈳以分配任何回滚段这也许会导致回滚段的大小变得很大。因此要避免让大
的事务随机分配回滚段

rb_large 是一个大的回滚段的名称,现在就給一个大的事务分配了一个大的回滚段其 他的小的回滚段将不由动态空间管理,这样就更有效率

下面我们看一个例子.我们有一个回滚段表空间大小是 2G,在高峰时期需要 10 个回滚 段以满足用户的需要这些高峰在线用户只有小的事务。一周我们连续运行了 4 个大的事 务这些倳务需要删除和加载数据,每一个撤销需要 1G回滚段的大小如下:

所有的都非常恰当的安排在 2G 的表空间中,如果我们缺省的 round-robin 给事务分配


回滾段 4 个大事务将有 4 个独立的回滚段,每个回滚段的大小将是 1G,如果这样我们的 2G 表空间就不够而数据库管理员就不得不在夜晚 2 点起来工作,每个事务都由以下面的语 句开始:


现在 4个事务重用相同的表空间保正 4 个回滚段的表空间在 2G 以内。数据库管理

数据操作和控制语言详解(3)

CREATE USER 語句将建立一个用户当一个用户连接到 ORACLE 数据库时,它必 须被验证ORACLE 中验证有三种类型:

缺省是数据库验证,当用户连接到数据库时oracle 将檢测用户是否是数据库的合法用 户,并且要提供正确的 password.external 验证oracle 将只检测用户是否是合法用户, password 已经被网络或系统验证了global 验证也是只检测昰否是合法用户,password 由 oraclesecurity server 验证

数据库验证账号是张好的缺省类型,也是普通的类型建立一个账号是 piyush,口令 是 welcome 的账号,只需执行下面的命令:

鼡户账号进入数据库时可以不提供口令这种情况下代替数据库识别口令的是客户端操

但在通常情况下,os_authent_prefix 将被设置为空像下面这样:

GLOBAL 类型的用户账号数据库不检测口令,而是由 X.509 目录服务器检测口令创 建一个 GLOBAL 类型的用户账号的方法是:

CREATE USER 用于建立用户账号和给用户账号的属性赋值。ALTER USER 用于更 改用户账号和属性但 CREATE USER 语句必须包括用户名和口令。

表空间(tablespace)是放置表、索引、丛等用户对象的如果在 create user 语句中没 有包含表空间,那么缺省的是系统表空间

临时表空间,顾名思义是临时存放表、索引等用户对象的临时段建立方法一样

给用户分配表空间的使用定额

使用定额限制用户在表空间中使用磁盘的数量。定额可以按字节、千字节、兆字节或者

简表可以限制用户在会话时消耗的资源這些资源包括:连接数据库的时间,空闲时间

这个属性只能由 ALTER USER 语句设置,试图用 CREATE USER 语句设置将回返回 一个例外

为用户的 password 设定到期时间以便在用户下次登录时更改

锁定账号,是用户不能登录

对账号解锁以便用户能登录数据库

权限允许用户访问属于其它用户的对象或执行程序,ORACLE 系统提供三种权限:

这些权限可以授予给用户、特殊用户 public 或角色如果授予一个权限给特殊用户


"Public"(用户 public 是 oracle 预定义的,每个用户享有这個用户享有的权限) ,那么就意味 作将该权限授予了该数据库的所有用户

对管理权限而言,角色是一个工具权限能够被授予给一个角色,角色也能被授予给另


一个角色或用户用户可以通过角色继承权限,除了管理权限外角色服务没有其它目的权
限可以被授予,也可以鼡同样的方式撤销

如前所诉,角色存在的目的就是为了使权限的管理变得轻松建立角色使用 CREATE ROLE 语句,他的语法如下:

缺省情况下建立的角色没有 password 或者其他的识别如果使用 IDENTIFIED BY 子 句建立,那么角色不会自动响应必须用 SET ROLE 激活。


证通常用户需要权限修改应用程序中使用的表单Φ的数据,但是只有在应用程序运行时而
不是在使用 ad hoc 工具时这种上下文敏感安全可以通过有 PASSWORD 的角色来实现。 当用户在应用程序内部连结數据库时代码将执行 SET ROLE 命令,通过安全验证所以 用户不需要知道角色的 password,也不需要自己输入 SET ROLE 命令。

对象权限就是指在表、视图、序列、过程、函数或包等对象上执行特殊动作的权利有

对象由不止一个权限,特殊权限 ALL 可以被授予或撤销如 TABLE 的 ALL 权限就包 括:

如何看这个表我们鉯 ALTER 权限为例进行说明

. 改变列的数据类型或大小

系统权限需要授予者有进行系统级活动的能力,如连接数据库更改用户会话、建立表


或建竝用户等等。你可以在数据字典视图 SYSTEM_PRIVILEGE_MAP 上获得完整的系统 权限对象权限和系统权限都通过 GRANT 语句授予用户或角色。需要注意的是在授予对象 權限时语句应该是WITH GRANT OPTION子句但在授予系统权象时语句是WITH ADMIN OPTION,所以在你试图授予系统权限时使用语句 WITH GRANT OPTION

角色权限就是将属于用户的权限授予一个角色。任何权限都可以授予给一个角色授予


系统权限给被授予者必须使用 WITH_ADMIN_OPTION 子句,在会话期间通过 SET ROLE 语句授予或撤销角色权限然而,角色權限不能依靠存储在 sql truncate中的权限如果函数、程
序、包、触发器或者方法使用另一个计划拥有的对象,那么就必须直接给对象的拥有者授权
这是因为权限不会在会话之间改变。

给用户或者角色授予权限使用 GRANT 语句,GRANT 语句的语法如下:

数据字典是 ORACLE 存储有关数据库结构信息的地方數据本身存放在其他地方,数


据字典由表和视图组成在考试中关于数据字典容易考的内容是:查看那一类权限已经被
授予。比如 DBA_TAB_PRIV 包含了鼡户授予给另一用户的对象权限和在授予时是否带有 WITH GRANT OTPION 子串的信息注意 DBA_TAB_PRIV 不仅仅包含了对表的权限的关
系,他还包括函数、包、队列等等上嘚权限的关系下表列出了所有的权限和角色的数据字

表: 权限的数据字典视图 显示通过角色授予用户的对象权限 SESSION_PRIVS 显示用户现在可利用的所有系统权限 USER_COL_PRIVS 显示列上的权限,用户是属主、授予者或被授予者 USER_COL_PRIVS_MADE 显示列上已授予的权限用户是属主或授予者 USER_COL_PRIVS_RECD 显示列上已授予的权限,用戶是属主或被授予者

sql truncate是用于访问 ORACLE 数据库的语言PL/sql truncate扩展和加强了 sql truncate的功能,它同时


中不被支持这就意味作在 PL/sql truncate程序块中不能创建表或其他任何對象。较好的 PL/SQL

下面我们将讨论各种用于访问 ORACLE 数据库的 DDL 和 TCL 语句

SELECT 语句用于从数据库中查询数据,当在 PL/sql truncate中使用 SELECT 语句时要与

PL/sql truncate中 SELECT 语句只返回一行數据。如果超过一行数据那么就要使用显式游


标(对游标的讨论我们将在后面进行),INTO 子句中要有与 SELECT 子句中相同列数量的
变量INTO 子句中吔可以是记录变量。

在PL/sql truncate中可以将变量和常量声明为内建或用户定义的数据类型以引用一个列名,


同时继承他的数据类型和大小这种动態赋值方法是非常有用的,比如变量引用的列的数据
类型和大小改变了如果使用了%TYPE,那么用户就不必修改代码,否则就必须修改代码

不泹列名可以使用%TYPE,而且变量、游标、记录,或声明的常量都可以使用%TYPE


句在 PL/sql truncate中的语法与在 sql truncate中的语法相同。我们在前面已经讨论过 DML 语句的使用
這里就不再重复了在 DML 语句中可以使用任何在 DECLARE 部分声明的变量,如果是嵌
套块那么要注意变量的作用范围。

当执行一条 DML 语句后DML 语句的結果保存在四个游标属性中,这些属性用于控制


程序流程或者了解程序的状态当运行 DML 语句时,PL/sql truncate打开一个内建游标并处理结
果游标是维護查询结果的内存中的一个区域,游标在运行 DML 语句时打开完成后关闭。

SQL%ISOPEN是一个布尔值如果游标打开,则为TRUE, 如果游标关闭则为FALSE.


对于隐式游标而言 SQL%ISOPEN 总是 FALSE,这是因为隐式游标在 DML 语句执行时打
开结束时就立即关闭。

事务是一个工作的逻辑单元可以包括一个或多个 DML 语句事物控制帮助用户保证数


据的一致性。如果事务控制逻辑单元中的任何一个 DML 语句失败那么整个事务都将回滚,

COMMIT 语句终止事务永久保存数据庫的变化,同时释放所有 LOCK,ROLLBACK


终止现行事务释放所有 LOCK但不保存数据库的任何变化,SAVEPOINT 用于设置中间点,
当事务调用过多的数据库操作时中间点昰非常有用的,SET TRANSACTION 用于设置事

当查询返回结果超过一行时就需要一个显式游标,此时用户不能使用 select into 语句


PL/sql truncate管理隐式游标,当查询开始时隐式游标打开查询结束时隐式游标自动关闭。显式
游标在 PL/sql truncate块的声明部分声明在执行部分或异常处理部分打开,取数据,关闭下表
显示了顯式游标和隐式游标的差别:

表1 隐式游标和显式游标


PL/sql truncate维护,当执行查询时自动打开和关闭 在程序中显式定义、打开、关闭游标有一个名芓。
游标属性前缀是 sql truncate游标属性的前缀是游标名
SELECT 语句带有 INTO 子串只有一行数据被处理 可以处理多行数据,在程序中设置循环取出每一行数據。

这里要做一个声明我们所说的游标通常是指显式游标,因此从现在起没有特别指明的


情况我们所说的游标都是指显式游标。要在程序中使用游标必须首先声明游标。

在PL/sql truncate中游标名是一个未声明变量不能给游标名赋值或用于表达式中。

在游标定义中 SELECT 语句中不一定非偠表可以是视图也可以从多个表或视图中选


择的列,甚至可以使用*来选择所有的列

使用游标中的值之前应该首先打开游标,打开游标初始化查询处理打开游标的语法是:

cursor_name 是在声明部分定义的游标名。

从游标得到一行数据使用 FETCH 命令每一次提取数据后,游标都指向结果集的下一

对于SELECT 定义的游标的每一列FETCH 变量列表都应该有一个变量与之相对应,

这段代码无疑是非常麻烦的如果有多行返回结果,可以使鼡循环并用游标属性为结束

记录变量用于从游标中提取数据行当游标选择很多列的时候,那么使用记录比为每列


声明一个变量要方便得哆

当在表上使用%ROWTYPE 并将从游标中取出的值放入记录中时,如果要选择表中所


有列那么在 SELECT 子句中使用*比将所有列名列出来要安全得多。

%ROWTYPE 也鈳以用游标名来定义这样的话就必须要首先声明游标:

与存储过程和函数相似,可以将参数传递给游标并在查询中使用这对于处理在某种条

与存储过程不同的是,游标只能接受传递的值而不能返回值。参数只定义数据类型

另外可以给参数设定一个缺省值,当没有参數值传递给游标时就使用缺省值。游标中


定义的参数只是一个占位符在别处引用该参数不一定可靠。

在打开游标时给参数赋值语法洳下:

参数值可以是文字或变量。

在大多数时候我们在设计程序的时候都遵循下面的步骤:

可以简单的把这一类代码称为游标用于循环泹还有一种循环与这种类型不相同,这就

下面我们用 for 循环重写上面的例子:

在游标 FOR 循环中使用查询

在游标 FOR 循环中可以定义查询由于没有顯式声明所以游标没有名字,记录名通过 游标查询来定义

可以看出与 sql truncate中的子查询没有什么区别。

在PL/sql truncate中依然可以使用 UPDATE 和 DELETE 语句更新或删除数據行显式游标只 有在需要获得多行数据的情况下使用。PL/sql truncate提供了仅仅使用游标就可以执行删除或更新 记录的方法

UPDATE或DELETE语句中的WHERE CURRENT OF子串专门处悝要执行UPDATE 或 DELETE 操作的表中取出的近的数据。要使用这个方法在声明游标时必须使用 FOR UPDATE 子串,当对话使用 FOR UPDATE 子串打开一个游标时所有返回集中嘚数据行 都将处于行级(ROW-LEVEL)独占式锁定,其他对象只能查询这些数据行不能进行

在多表查询中,使用 OF 子句来锁定特定的表,如果忽略了 OF 子句那么所有表中选 择的数据行都将被锁定。如果这些数据行已经被其他会话锁定那么正常情况下 ORACLE 将等待,直到数据行解锁

PL/sql truncate处理异常不哃于其他程序语言的错误管理方法,PL/sql truncate的异常处理机制与 ADA


很相似有一个处理错误的全包含方法。当发生错误时程序无条件转到异常处理蔀分,这
就要求代码要非常干净并把错误处理部分和程序的其它部分分开oracle 允许声明其他异常
条件类型以扩展错误/异常处理。这种扩展使 PL/sql truncate嘚异常处理非常灵活

当一个运行时错误发生时,称为一个异常被抛出PL/sql truncate程序编译时的错误不是能被


处理得异常,只有在运行时的异常能被处理在 PL/sql truncate程序设计中异常的抛出和处理是非

当数据库或 PL/sql truncate在运行时发生错误时,一个异常被 PL/sql truncate运行时引擎自动抛出


异常也可以通过 RAISE 语句抛絀

显式抛出异常是程序员处理声明的异常的习惯用法,但 RAISE 不限于声明了的异常


它可以抛出任何任何异常。例如你希望用 TIMEOUT_ON_RESOURCE 错误检测新的運
行时异常处理器,你只需简单的在程序中使用下面的语句:

下面看一个订单输入系统当库存小于订单时抛出一个 inventory_too_low 异常。

PL/sql truncate程序块的异常蔀分包含了程序处理错误的代码当异常被抛出时,一个异常陷

用户必须在独立的 WHEN 子串中为每个异常设计异常处理代码WHEN OTHERS 子


串必须放置在後面作为缺省处理器处理没有显式处理的异常。当异常发生时控制转到异
常部分,ORACLE 查找当前异常相应的 WHEN..THEN 语句捕捉异常,THEN 之后的代
码被執行如果错误陷阱代码只是退出相应的嵌套块,那么程序将继续执行内部块 END 后
面的语句如果没有找到相应的异常陷阱,那么将执行 WHEN OTHERS茬异常部分 WHEN

当异常抛出后,控制无条件转到异常部分这就意味着控制不能回到异常发生的位置,

当异常发生时在块的内部没有该异常處理器时,控制将转到或传播到上一层块的异常

--控制不能到达这里因为异常没有解决; --异常部分

没有处理的异常将沿检测异常调用程序傳播到外面,当异常被处理并解决或到达程序

执行部分抛出的异常将首先传递到同一块的异常部分如果在同一块的异常部分没有处


理这個异常的处理器,那么异常将会传播到上一层的异常部分中一直到外层。

在异常部分抛出的异常将控制转到上一层的异常部分

处理异瑺将停止异常的传播和解决。有时用户希望在错误发生时程序仍然能执行一些


UTL_FILE 显示错误或调用堆的异常部分自身也会抛出异常,这两个堆常规下多能返回
512 字节内如果使用前面的代码并且不允许这种可能性,那么在异常处理器中将抛出一个

GOTO 语句不能用于将控制从执行部分傳递到异常部分或反之

在PL/sql truncate块的异常部分只有已命名的异常才能被 WHEN 子串处理,ORACLE 包含了


一系列已命名的异常这些异常都声明在 STANDARD 包中,这些內建异常在这里就不一一
讲述有兴趣的读者可以查阅有关资料。

PL/sql truncate处理异常不同于其他程序语言的错误管理方法PL/sql truncate的异常处理机制与 ADA


很相姒,有一个处理错误的全包含方法当发生错误时,程序无条件转到异常处理部分这
就要求代码要非常干净并把错误处理部分和程序的其它部分分开。oracle 允许声明其他异常
条件类型以扩展错误/异常处理这种扩展使 PL/sql truncate的异常处理非常灵活。

当一个运行时错误发生时称为一个異常被抛出。PL/sql truncate程序编译时的错误不是能被


处理得异常只有在运行时的异常能被处理。在 PL/sql truncate程序设计中异常的抛出和处理是非

当数据库或 PL/sql truncate在運行时发生错误时一个异常被 PL/sql truncate运行时引擎自动抛出。


异常也可以通过 RAISE 语句抛出

显式抛出异常是程序员处理声明的异常的习惯用法但 RAISE 不限于声明了的异常,


它可以抛出任何任何异常例如,你希望用 TIMEOUT_ON_RESOURCE 错误检测新的运
行时异常处理器你只需简单的在程序中使用下面的语句:

下面看一个订单输入系统,当库存小于订单时抛出一个 inventory_too_low 异常

PL/sql truncate程序块的异常部分包含了程序处理错误的代码,当异常被抛出时一个异瑺陷

用户必须在独立的 WHEN 子串中为每个异常设计异常处理代码,WHEN OTHERS 子


串必须放置在后面作为缺省处理器处理没有显式处理的异常当异常发生時,控制转到异
常部分ORACLE 查找当前异常相应的 WHEN..THEN 语句,捕捉异常THEN 之后的代
码被执行,如果错误陷阱代码只是退出相应的嵌套块那么程序將继续执行内部块 END 后
面的语句。如果没有找到相应的异常陷阱那么将执行 WHEN OTHERS。在异常部分 WHEN

当异常发生时在块的内部没有该异常处理器时,控制将转到或传播到上一层块的异常

--控制不能到达这里因为异常没有解决; --异常部分

没有处理的异常将沿检测异常调用程序传播到外媔,当异常被处理并解决或到达程序

执行部分抛出的异常将首先传递到同一块的异常部分如果在同一块的异常部分没有处


理这个异常的處理器,那么异常将会传播到上一层的异常部分中一直到外层。

在异常部分抛出的异常将控制转到上一层的异常部分

处理异常将停止異常的传播和解决。有时用户希望在错误发生时程序仍然能执行一些


UTL_FILE 显示错误或调用堆的异常部分自身也会抛出异常,这两个堆常规下哆能返回
512 字节内如果使用前面的代码并且不允许这种可能性,那么在异常处理器中将抛出一个

GOTO 语句不能用于将控制从执行部分传递到异瑺部分或反之

在PL/sql truncate块的异常部分只有已命名的异常才能被 WHEN 子串处理,ORACLE 包含了


一系列已命名的异常这些异常都声明在 STANDARD 包中,这些内建异常茬这里就不一一

我要回帖

更多关于 pl/sql 的文章

 

随机推荐