7.25实习培训日志-Oracle SQL(一)

Oracle SQL(一)

重点

尽量避免select *,影响性能,不直观。

慎用Distinct,会排序,影响性能,用exists

排序尽量利用索引,索引有序

索引列不要加函数,会使索引失效

外连接:主表记录全显示,从表记录有则显示,无则留空

就用标准语法Count(*)

  1. Count(*)/Count(1)全量
  2. Count(字段)去Null值
  3. Count(null)恒为0

Exists和In:理论上,In先执行子查询,然后执行外层主查询;而Exists属于关联子查询,因此,首先执行外层查询,然后再执行子查询,直到找到第一个符合条件的匹配项,就不会再执行了,理论上会快一些

数据字典

物化视图

分页:RowNum

索引:覆盖索引,范围索引,前缀索引,最左前缀原则

22407651.jpg

位图索引:性别只有男和女两项,用位图索引很快

函数索引:普通索引列上使用函数,会导致不走索引。除非建立函数索引;

两表关联,关联字段类型不一致,会有隐式的类型转换

select * from employees where employee_id='xxx'

UNION 去重,UNION ALL,不去重

INTERSECT 取交集, MINUS 取差集

Union去除重复行,并且含排序,因此,效率低下,需要尽量避免的

ROLLUP

闪回:删数据删表可以找回,删数据库则不行

docker oracle

拉取镜像

git pull registry.saas.hand-china.com/tools/oracle-xe-11g:16.04

运行镜像

docker run -d -p 1521:1521 name

创建用户

navicat上连接数据库(默认服务名:xe,默认用户:system,默认密码:oracle)

创建用户名

create user usename identified by password [default tablespace tablename];

创建表空间

create tablespace tablename datafile 'd:\data.dbf' size 20m;

将空间分配给用户

alter user username default tablespace tablename;

给用户授权(加引号)

grant resource,connect,dba to "username";

DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。

RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构

CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。

增加WITH ADMIN OPTION选项,则得到的权限可以传递。

Oracle SQL入门视频

Select

对于数值和日期型字段,可以进行 “加减乘除"

一个数值与NULL进行四则运算,其结果是 NULL

列别名时加双引号锁定大小写,不加则转换成大写

字符串连接操作符: “||”

SELECT last_name ||' is a '||job_id AS "Employee Details"
FROM employees;

条件和排序

select distinct department_id from employees;--去重
--范围查询前面的值必须不大于后面的值,否则查询不到结果。同时注意between and是包含9000和4400的(>= <=)
where e.salary between 9000 and 4400;--无结果
where e.salary between 4400  and 9000;
where e.salary between 4400  and 4400;--有结果
where e.salary >=4400 and e.salary <=9000;
--只包含90,60而不是90到60的范围
where e.department_id in (90,60);

where e.last_name like '_o%';--第二位是o,`_`是占用一位,`o`是多位
is not null;

% 代表 0 个或者多个 字符.
_ 代表一个单个字符

表中本身有通配符的怎么查询

使用ESCAPE 标识转义字符

--escape会定义转义字符
select * from t_char
where a like '%\%%' escape '\';

select * from t_char
where a like '%K%%' escape 'K';

排序,按照字段别名排序,按照多字段排序

ORDER BY department_id DESC, salary DESC;

单行函数

单行函数分为五种类型:字符函数、数值函数、日期函数、转换函数、通用函数

字符函数

大小写控制函数

oracle数据库大小写敏感

select * from dual where dummy='x' --无结果
select * from dual where lower(dummy)='x' --有结果
select lower('Hello World') 转小写, upper('Hello World') 转大写 from dual;  
--initcap: 首字母大写  
select initcap('hello world') 首字符大写 from dual;--别名
select initcap('hello world') as 首字符大写 from dual;--别名
字符串操作函数
--字符控制函数  
-- concat: 字符连接函数, 等同于  ||  
select concat('i am',' dengyouquan') from dual;
--从第三位开始截取全部
select substr('HelloWorld',3) from dual;  
--从第3位开始截取4位 lloW
select substr('HelloWorld',3,4) from dual;  
--length和lengthb: 字符数和字节数  
select length('中国') 字符数, lengthb('中国') 字节数  from dual;  
--instr:在母串中,查找子串的位置  
select instr('HelloWorld','llo') from dual;  
--lpad,rpad: 左右填充,将abcd用*填充到10位  
select lpad('abcd',10,'*') 左填充, rpad('abcd',10,'*') 右填充 from dual;  
--trim: 去掉字符串前后指定的字符 大小写敏感 HelloWorld
select trim('D' from 'DHelloWorld') from dual;  
--去除前后空格
select trim(' Hello World') from dual;
--replace:字符串替换函数  
select replace('HelloWorld','l','*') from dual;  

46566784.jpg

数值函数

select round(1.234,2) 四舍五入, trunc(1.234,2)  截断 ,mod(1234,324) 求余 from dual;  
--ROUND函数  
select round(4311.234,0) 整数位, round(34211.234,-1) 十位,round(23411.234,-2) 百位 from dual;

日期函数

to_date("要转换的字符串","转换的格式") 两个参数的格式必须匹配:字符串->日期

to_char(日期,"转换格式" ) 即把给定的日期按照“转换格式”转换:日期->字符串

日期函数解释
months_between两个日期相差的月数
add_months在指定日期上加上若干个月
last_day指定日期的下一个日期
next_day本月最后一天
round日期四舍五入
trunc日期截断
--显示当前日期  
select sysdate from dual;
--显示昨天,今天和明天,加减数字仍未日期  
select sysdate-1 昨天, sysdate 今天, sysdate+1 明天 from dual;  
--员工工龄
select sysdate-hire_date 天 from employees
--months_between:两个日期相差的月数  
select (sysdate-hire_date)/30 方式一, months_between(sysdate,hire_date) 方式二 from employees;  
--add_months:在指定日期上加上若干个月  
select add_months(sysdate,1)  下个月 from dual  
--last_day: 某个日期当月的最后一天  
select last_day(sysdate) from dual;  
--next_day:下周五  
select next_day(sysdate,'星期五') from dual;  
--对日期进行四舍五入  
select round(sysdate,'MONTH')  月,round(sysdate,'YEAR') from dual;
--对日期进行截断  
select trunc(sysdate,'MONTH')  月,trunc(sysdate,'YEAR') from dual;  
--日期格式  
select * from employees where hire_date=to_date('1982-01-23','yyyy-mm-dd');  
-- 查询当前日期:显示:  2011-09-17 15:12:15今天是星期六  
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是"day') from dual;
格式解释显示
yytwo digits 两位年显示值:07
yyythree digits 三位年显示值:007
yyyyfour digits 四位年显示值:2007
mm两位月显示值:11
monabbreviated 字符集表示显示值:11月,若是英文版,显示nov
monthspelled out 字符集表示显示值:11月,若是英文版,显示november
ddnumber 当月第几天显示值:02
dddnumber 当年第几天显示值:02
dyabbreviated 当周第几天简写显示值:星期五,若是英文版,显示fri
dayspelled out 当周第几天全写显示值:星期五,若是英文版,显示friday
hhtwo digits 12小时进制显示值:01
hh24two digits 24小时进制显示值:13
mitwo digits 60进制显示值:45
sstwo digits 60进制显示值:25
Qdigit 季度显示值:4
WWdigit 当年第几周显示值:44
Wdigit 当月第几周显示值:1

41557889.jpg

通用函数

函数用途
NVL (expr1, expr2)如果expr1为空,这返回expr2
NVL2 (expr1, expr2, expr3)如果expr1为空,这返回expr3(第2个结果)否则返回expr2
NULLIF (expr1, expr2)如果expr1和expr2相等,则返回空
COALESCE (expr1, expr2, ..., exprn)依次考察各参数表达式,遇到非 null 值即停止并返回该值。
--nvl(exp1,exp2):当exp1为空时,返回exp2  
--nvl2(exp1,exp2,exp3):当exp1为空时,返回exp3;否则返回exp2  
select ename,sal*12+nvl2(comm,comm,0) 年收入 from employees;  
--NULLIF (expr1, expr2),如果expr1=expr2,返回null;否则,返回expr1  
select nullif('abc','abc') from dual;  
select nullif('abc','abcaa') from dual;  
--COALESCE :找到参数列表中,第一个不为空的值  
select ename,comm,sal,COALESCE(comm,sal) from employees;  

转换函数

函数含义
to_char(列日期,格式)
日期 to_date(列字符串,格式)
数字 to_number(列字符串)

使用货币格式化显示。

--9代表占位符,如果位数少于前面的数字,都会显示#
--L代表本地货币符号

alter session set NLS_CURRENCY = ' ¥';

select to_char(4122341,'L9,999,999.00') from dual;

select to_number('$1,324','$9,999') from dual;--能转换成数字1324 后面长度要长于前面长度,否则有问题

84831161.jpg

当比较字符型和数值型的值时,oracle会把字符型的值隐式转换为数值型。

当比较字符型和日期型的数据时,oracle会把字符型隐式转换为日期型。

连接时(||),一般是把数值型隐式转换为字符型,日期型隐式转换为字符型

数据类型优先级为:Number>字符类型>日期类型

隐式转换发生在字段列上时将使索引失效。

双引号的作用是:示意Oracle将严格区分大小写,否则Oracl都默认大写。

单引号:这个加了单引号的字段是一个字类似字符串,并不区分大小写。

转载于:https://www.cnblogs.com/sufferingStriver/p/9403451.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 实习公司简介 北京东方迪格软件有限公司是一家专业的高校实验室解决方案商,公司致力于我国高等院校实验室管理系统和实训方案的构建与实施,专注于高等院校实验室管理信息系统( MIS )方面的设计、开发、销售和技术服务等业务。 2. 今天是我来到北京东方迪格软件有限公司实习的第一天。我提前了半个小时来到了办公室,我发现同事们也已经陆续的到达了。我首先找到了行政部的田小姐办理了入职的必要手续,她很热情地给我介绍了公司的整体概况,同时交给了我一些公司产品的简介和操作手册。这是我进入公司实习的第一步,了解公司的企业文化,以及公司的主要业务和产品。 上班第一天,没什么工作,老板和其他的工作人员都很忙,我也就知趣的找个地方呆着,开始翻阅着手头已经拿到的资料。刚来公司,自己就要机灵些,要谦虚好学,多去了解,要去观察去倾听,看忙着的人是怎样做事的,他们是如何与人打交道的。 3. 我被分配到了技术部,技术部主要负公司软件产品的安装以及售后维护,需要对公司产品的原理和概念有深入彻底的了解同时还需要有和客户交流沟通的技巧和能力。技术部的软件安装维护工作虽然是企业部门运营的一个小侧面,但关系到企业在广大客户心目中的形象,关系到企业参与全国范围的计算机软件销售竞争的魄力及品牌亲和力。 虽然我之前对计算机软件这方面的知识有所了解,但公司的这些软件以前都没有接触过,所以还是需要学习大量的知识。公司的软件产品主要是金融、保险、银行类的实验室教学软件,要想了解这些软件产品除了要有基本的计算机知识外还需要有金融、保险、银行方面的专业知识。接下来的时间要学习的东西还有很多。 4. 今天技术部有经验的同事给我仔细讲解了公司软件产品安装和维护中的每一款注意事项,还现场演示了公司的一款叫“商业银行综合柜面业务实训教学软件”的软件产品的安装流程以及操作系统、软件系统的配置。 下午我公司行政部田小姐为我分配了一台笔记本电脑,作为我的工作之用。我开始练习公司软件产品的安装和操作演示。 5. 公司的软件产品所使用数据库各不相同,有MS SQL Server、MYSQLORACLE、Db2、Sybast、informix等等,我在学校里面接触的数据库软件仅仅只有MS SQL Server这一种。现在终于体会到人们在说“书到用时方恨少”这句话时的无奈心情了。从上午开始,我尝试着上网去查找相关数据库的一些资料,下载了一些教程来自习,希望能对这些数据库软件能有一个初步的了解。 6. 今天一个客户给我们打来电话说他们使用的软件不能连接上服务器了,这款软件昨天还是可以正常使用的。我们的第一反应是不是客户端软件的缺陷导致软件故障。询问了有关软件出现故障时的错误提示信息后初步判断是由于客户误操作修改了服务器的IP地址,于是引导客户修改服务器的IP,之后故障消失。 认真细致,不放过任何一个细节。这是我今天的感悟。 7. 北京东方迪格软件公司于2006年4月底顺利通过ISO9001(2000版)国际质量体系认证,公司的管理已经比较规范了。每周一上班之后部门经理会召集本部门的人员召开一次总结早会,由每个成员轮流总结发言自己过去一周说做的工作以及完成情况和还存在的问题。每天下班时间到来时需要登录公司的在线办公平台填写自己一天所做的工作以及完成情况和需要解决的问题,每周五下班之前也要填写这一周的工作总结和下周的工作计划,部门经理和总经理会查看每一个人的记录并作出点评。这些措施有利于每一名员工做好自己的工作计划和总结,部门经理和总经理也能借助这个平台掌握员工的工作状态及存在的主要问题,利于他们作出合理的决策。 8. 与人和睦相处,良好的进行沟通,是一名实习生必须要学会的。在与人相处方面,我一直坚信,诚实加真心,自尊与尊重他人,肯定不会被拒于千里之外的。首先和同事相处,我只是一个实习生,很多事情要多看多学,我所有的同事都是我的老师,前辈,工作过程中,怎么发挥团队的作用,协调内部关系,我学会的是尊重和礼貌。做为一名技术支持部门得员工,直接面对的是客户,你的工作的质量甚至一句话都可以影响客户对公司以及公司的软件产品的信心。如何在配合销售部门给客户演示产品时用恰当的语言把公司的软件产品的优良特性展现给客户,让客户听能真正了解自己的需求,同时信赖我们的软件产品,进而选择和你合作,是作为一名技术部门的员工所必须要学习的课程。当然,光有这些还是不够的,我们还得有过硬的专业知识,在客户遇到技术问题时我们能第一时间高效准确的处理故障,这样才能真正建立客户对我们产品的认可度。 9. 今天中午下班时间到了,由于中午的休息时间不多所以大家都是叫快餐在公司吃饭。我来到这里也有一段时间了,对这里也有一点熟悉了,于是我也就自告奋勇的说要帮大家定一次快餐。很快,我顺利的为大家定好了快餐。吃饭时闲聊,大家除了对我说了些客气的话外,有两个看似资历很老的同事还说我很好学,还知道我上午都看了些什么,姜还是老的辣,就这样悄无声息的去观察你。所以,有的时候你不要怀疑自己做的无法得到认可,其实有人已经看在眼里了。下午也就是自己看公司的软件资料了,一天很快就过去了。 10. 今天周五,我们下班之后同事们决定把办公室收拾收拾,我一看,这我也不能干站着看啊,就帮着一起忙活起来了,说实话因为北方的干燥加沙尘天气,办公室里面总是很快就会堆积灰尘,确实应该好好清理一下了,我们几个人差不多忙活了一个多小时,把地面,窗户什么的都擦哦干干净净的,可累坏我了。不过看着干净的办公室,那心情好的确实没法说。这毕竟是每天上班的地方,呆的时间长,环境好,心情也好,工作效率也就高。 11. 今天周一,我们经理说下午要开会,需要制作一个PPT,他上午没有空,问我们几个谁能给他做一下PPT。我对做PPT还是蛮熟悉的,就自告奋勇的承担 了这一任务。我向他要来了下午开会的大体内容并询问了一下他的大体意见,样式之类的,之后就开始忙活了。其实,单做一个基本的PowerPoint文件不用多少时间,但要做出一个图文并茂、生动的ppt就不容易了。我借助网络的力量,收集在线模板,查找图片素材差不多用了一个上午的时间终于完成了这个PPT。下午开会使用这个PPT一切顺利。 12. 今天下午刚上班不久,公司一同事要打一份客户资料,可能是他还有其他重要的事情要忙,就把这个资料交到我手里说能不能帮他打这份资料。我是新来的员工,比较不忙,哪能说不行啊,就接过来了。接过来我一看,好家伙,密密麻麻少说也有三四千字啊,没办法,赶紧开始打吧。好在我在学校也经常打字练习,盲打每分钟也能打六七十个汉字,经过一个多小时的工作,终于完成任务了! 这件事情让我觉得平时点滴的积累真的是很重要,如果我以前从不练习打字的话,今天这任务估计就不能这么顺利完成了。 13 今天下午3点左右公司接到一个客户的点话说,他使用我们的软件准备第二天的上机实践课的时候电脑忽然黑屏了,而且接下来就开不了机了。我们一听,觉得如果不是他的电脑出现故障的话就是我们的软件跟其他软件起冲突破坏了操作系统。我们觉得事态严重,如果不及时处理就会严重影响我们公司软件产品的声誉。于是我跟着技术部的另一个同事马上赶到了客户那里。我们查看了那个电脑,试着按下电源开关,电源灯只是闪了一下就没有反应了。我首先的感觉就是,这应该是电脑的硬件故障,不是我们的软件故障,但基于对客户负责的态度,我们帮客户检查了一下机箱,发现CPU风扇已经不转了,应该是风扇先坏掉导致CPU过热而烧毁。我们建议客户更换CPU并加装更大功率的CPU风扇,注意防尘。之后故障排除,客户电脑恢复正常,又可以继续使用我们的软件了。 14. 今天公司给我和另一位新来的技术部的同事进行了第一次培训培训的内容主要有:1.产品的演示与操作。2.产品演示与销售之间的流程和关联(注重配合)3.技术流程(演示、培训)4.技术职责,前景。5.学校项目申报和审批流程。6.方案的撰写和实施。我们还讨论了个人的职业发展规划。 15. 今天我准备学习下方案的撰写,一个成功的方案设计除了内容充实、要有很强的可行性之外,规范的格式也是必不可少的。而要排版出美观规范的板式就需要有扎实的OFFICE功底了。针对方案的设计要求,我重点关注了目录的生成、项目符号、编号以及表格设计等。 这些OFFICE方面的知识其实以前在学校也或多或少的接触过,只是因为长时间不使用而变地生疏了。经过查看OFFICE方面的书籍以及上网查找,不但复习了旧的知识还学到了不少新知识。看来“温故而知新”这句话真的是很有道理的啊。 16. 今天上班的时候忽然发现,办公室里面的每一台电脑的网速都很平均,不像在学校宿舍里面自己组建的网络有的快有的慢。询问了同事之后终于知道了缘由。原来这里的网线布置的比较合理,这里一律是交换机上插几个下一级的交换机,再把所有的机器都接在下一级的计算机上。这样,大家的速度都比较平均,而且单位里没有人利用电驴之类的BT软件不停的下载。而我们学校宿舍里的网络因为交换机不足的原因基本都是有人接在上一级交换机上,有的接在下一级的交换机上,还经常有人一直开着BT软件下载电影之类的。这样宿舍的网络就速度不品均而且慢了。 合理的布局能带来工作效率的提高。 17. 今天在和一个同事交流的时候得到了一个好东西,我发现这位同事有一本工作日记,我跟他借来看了一下,里面记载的都是他在工作中遇到的各种各样的问题,有遇到问题的时间、地点、故障的触发条件、故障现象的详细描述、合理的解决方法以及心得体会等等。这些都是宝贵的工作经验财富,我抱着看了一天,真是长见识啊。我马上也决定开始做一本这样的详细的工作日志,这对自己以后的工作学习一定大有裨益。 18. 今天,单位财务部的一个同事悄悄的把我叫到她那里,原来,他在上网的时候不小心点击了一个流氓网站,之后IE的主页被修改成那个流氓网站并且被锁定了,很讨厌。而她不像我们是学计算机的,自己不会处理,又不好意思让其他同事来帮忙,毕竟在工作时间上网也不是什么光彩的事情,只好求我这个“外人”帮忙了。 我过去之后看了下,这种问题一般就是几个地方:第一,直接修改IE的Internet选项里面的主页。第二,修改注册表,把流氓网址写入注册表,让IE的Internet选项里面的主页变灰,同时锁定注册表。第三,在快速启动栏的IE快捷方式属性的目标里面加入流氓网址。第四,这中一般比较少见,就是直接在受害者电脑里面植入木马,实时监视IE的主页,一旦发现有改动就立即重新恢复为流氓网址。 清楚了以上这这些问题就好解决了,我使用工具将IE的主页强制恢复为空白页并修复注册表的异常键值,然后进入安全模式使用最新的杀毒软件彻底查杀一遍,之后问题解除。 19. 今天是我在单位实习的最后一天了,今天的工作主要就是办理好交接手续,同时做好实习材料的整理并找单位相关部门盖好公章。 在这个大家庭里面呆了这么长一段时间,就要离开了,真有点舍不得。同事们都为我送来了临别的祝福。很感激在实习的这段时间大家给我的关照,谢谢东方迪格的同事们。 20. 实习生活终于结束了,通过这段时间的实习,不但让我学到了很多新的专业知识,还学到了很多在学校里面学习不到了知识,让我学会了怎么样更好的处理跟同事们的人际关系以及如何更好的跟客户交流沟通,这些对于马上就要离开校园走上工作岗位的我来说至关重要啊。 马上就要启程回到熟悉的校园了,想到很快就能跟分别很久的同学们见面真的很高兴。母校,我回来啦!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值