ORACLE SQL 总结_oracle 总计 sql-程序员宅基地

技术标签: ORACLE  

作者:杨裙
本次任务完成时间:2019年4月7日
开发工具与关键技术:Oracle sql*plus 、 PLSQL Developer
ORACLE SQL基础
1、空值是无效的,不是空格或者0,当需要计算的时候,其含有空值,则需用‘NVL’来转换,否则计算出来的结果也为空。
2、对于列名,可以加AS,也可以直接省略,可以使用双引号,也可以在字段后面直接写,如果不加双引号系统会自动把小写的字母转换成大写的字母。
3、拼接符‘||’会把两个字符连接在一起,或列与列,用来合成一个列。
4、当查询出重复行可以用‘DISTINCT’来去除重复行,只能把其放在第一位置。
以上例子如图:
在这里插入图片描述二、过滤和排序
1、WHERE 子句紧跟在FROM子句的后面,可以用WHERE子句进行过滤和筛选,WHERE的
执行顺序在FROM的后面,首先执行完FROM子句之后,WHERE子句紧跟着执行。
2、比较运算操作符(BETWEEN…AND,IN,LIKE,IS NULL)。IN等于查询出结果的任意一个,它跟OR的结果差不多;其中‘%’是代表零个字符或多个字符,‘_’代表一个字符。‘ESCAPE’:转义符;
3、ORDER BY子句排序:其中升序为‘ASC’,降序为‘DESC’。ORDER BY子句的执行顺序永远在最后,当存在多个列进行排序时,其排序顺序根据其前一个列进行排序。当要把列进行排序时,可以把查询的字段用数字1,2…等代表或者直接根据要排序的字段进行排序,
当要排序的字段在SELECT子句中没有查询出来,也可以进行排序,升序排序可以省略不写。
以上例子如图:
在这里插入图片描述
ORACLE SQL函数
1、大小写控制函数(LOWER,UPPER,INITCAP);
2、字符控制函数(CONCAT,SUBSTR,INSTR,LENGTH,LPAD,RPAD,TRIM,REPLACE)。对于字符控制函数
CONCAT:可以用来进行字符与字符的拼接,相当于用拼接符‘||’;
SUBSTR:截取字符,其中第一个数字代表从哪个开始,第二个代表截取多少个字符;
INSTR:计算指定字符的索引位置;
LENGTH:计算字符串的长度;
LPAD:左填充,RPAD:右填充;
TRIM:可以去空格,但也可以去字符;
REPLACE:可以使用指定的字符来替代字符串中的字符;
在这里插入图片描述 ORACLE SQL日期函数
一、对于日期,只能进行减法运算,不能进行加法运算,也可以用‘TO_CHAR’ 或者‘TO_DATE’对日期进行转换,同时可以利用日期函数对日期进行操作(MONTHS_BETWEEN、ADD_MONTHS、NEXT_DAY、LAST_DAY、ROUND、TRUNC)。如果只想单独获取年或月或日可以利用‘TO_CHAR’进行截取,还可以利用‘EXTRACT’来截取。‘TO_CHAR’和‘TO_DATE’两者不能混用,否则会
报错,当要求把字符串日期转变成日期格式的时候,就要用‘TO_DATE’,‘TO_CHAR’函数是对日期的转换,如图:
1、对日期字符的操作:
在这里插入图片描述2、TO_DATE,TO_CHAR
在这里插入图片描述
3、注意:字符串转换成日期格式时,对于‘小时’的写法,系统默认是24小时如果在写时间格式的时候,没有写24那么会报错:
在这里插入图片描述
ORACLE SQL分组函数
1、组函数的类型(COUNT,SUM,MAX,MIN,AVG)。
2、GROUP BY 子句用来进行分组,可以把数据分成若干个小组。注意:在查询列表中所有未包含在组函数的字段在GROUP BY子句中必须写,否则会报错,但包含在GROUP BY子句中的列不一定要包含在查询列表中。
3、过滤分组:HAVING子句紧跟在GROUP BY 子句后,有HAVING子句前面一定要有GROUP BY,但有GROUP BY 不一定有HAING。可以在HAVING子句中使用组函数,但不能在WHERE子句中使用组函数。
4、组函数忽略空值,但‘NVL’函数使分组函数无法忽略空值。
以上例子如图:
在这里插入图片描述ORACLE SQL查询
一、多表查询
1、多表连接:笛卡尔集,当两张表连接在一起,没有写连接条件,那么就会出现两张表的所有字段相乘,CROSS JOIN :叉集和笛卡尔集的效果相同,如图:
在这里插入图片描述
2、等值连接:两张表的值是相等的,有两种写法,如图:
在这里插入图片描述3、左连接和右连接(外连接)其实就是反过来,第一种写法直接在左或右直接加‘(+)’符号就行,当符号在左边时为右连接,反之符号在右边时为左连接。第二种‘SQL1999’的写法,左连接直接写‘LEFT (outer)JOIN’,右连接直接写‘RIGTH (outer) JOIN’,外连接可以查询不满足连接条件的数据,如图:
在这里插入图片描述4、自然连接和USING子句创建连接。自然连接:会把两个表相同的列连接起来,创建等值连接,如employees 和departments 两张表,相同的列有两个,所以相同两个列会自动连接起来。join 和 using子句经常同时使用,using子句可以在满足多个条件时进行选择,指定其列,如图:
在这里插入图片描述 5、满外连接:其满外连接会返回两个表满足的连接条件外还会返回两个表不满足的条件,满外连接用关键词:FULL (OUTER) JOIN …ON…

二、子查询
1、子查询查询出来的结果给主查询使用,当子查询的结果返回多个时,会出现错误,如图:
在这里插入图片描述
3、 如果子查询返回的是多个值,那么就要用(IN,ANY,ALL)。用IN代表列表中的任意一个值;ANY代表和子查询返回的某一个值比较;ALL代表和子查询返回的所有值比较。

ORACLE SQL DDL语言
1、创建和管理表:创建数据库表(CREATE TABLE),更改表的结构(ALTER TABLE)、添加、删除、修改列长度,删除表(TRUNCATE、DROP),创建索引(CREATE INDEX)。创建表的时候表名必须以字母开头,只能在1-30个字符之间,可以用的字符为‘_’、‘$’、‘#’和0-9,a-z,创建表名时不能重复,下面是对于DDL数据定义语言的所有展示如图:
在这里插入图片描述2、索引:索引被删除或损坏,不会对表产生影响,其影响的只是查询的速度;通过指针加速 Oracle 服务器的查询速度;在删除一个表时,所有基于该表的索引会自动被删除;
在这里插入图片描述
ORACLE SQL DML语言
1、DML(数据操纵语言):可以添加数据到数据库,修改数据库中的数据,删除数据库中的数据,查询数据。当插入数据时,每次只能插入一条数据。对于数据操纵语言,如下图:
在这里插入图片描述2、约束:约束是一种在创建表的时候进行添加的约束,如下五种约束:NOT NULL(不为空约束),UNIQUE(唯一性约束),PRIMARY KEY(主键约束),FOREIGN KEY(外键约束),CHECK(检查性约束)。NOT NULL:其只能作用在列级上,同时也比较特殊,可以在列级写多个非空约束,NOT NULL也是唯一一个可以进行修改的约束;其它约束只能写一个约束,同时也不能进行修改,只能添加或删除约束,见如下图:
在这里插入图片描述3、序列的创建,如图:
在这里插入图片描述
ORACLE SQL DCL语言
1、创建用户可以在安装数据库的时候创建,也可以在PLSQL Developer这里创建,用户本人还可以进行修改其密码。不同的对象具有不同的权限,对象的拥有者拥有所有的权限,对象的拥有者可以向外分配权限,使其拥有与对象拥有者一样多的权限,而且具有很多数据库权限(修改、删除、执行、索引、更新等),当赋予其它用户权限的时候,还可以收回权限,收回权限的关键字:REVOKE,关于用户的权限如下图:
在这里插入图片描述ORACLE 日期的扩充
1、日期的转换除了‘TO_CHAR’和‘TO_DATE’的转换和截取外,还有EXTRACT和CAST两个课外对日期同样可以进行转换和截取,第一个EXTRACT它可以对日期进行截取,然后得到想要的年、月、日,第二个CAST它是对日期的转换和数字类型的转换,而且也较简单。EXTRACT:它的用法就是直接(年/月/日 + from EXTRACT),如图例题EXTRACT的用法:
在这里插入图片描述CAST的用法它是直接通过日期字符串进行转换,转换格式CAST(‘日期字符串’ + AS + DATE)如图:
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44543430/article/details/89082695

智能推荐

基于STM32以及HAL库的MAX30102模块使用+OLED显示(资源下载免费,在博主我的资源下载处)_max30102+oled-程序员宅基地

文章浏览阅读3.4k次,点赞19次,收藏65次。必须要有I2C驱动,为其模块的寄存器写入相应的配置,才能够驱动红灯亮起(里面包括红光以及红外光)。那我们买回模块之后,如何确定模块的好坏,其实可以直接在购买物品的平台上。_max30102+oled

带缓存的Flutter网络请求——RxDio_flutter dio接口缓存-程序员宅基地

文章浏览阅读2.9k次。RxDio是在练习Dio、RxDart、Sql的时候,仿照Android网络请求OkGo做的,只实现了简单的功能,后续有需要再完善。在APP开发中,经常会遇到这样一种情况:在有网络正常的时候,展示网络数据,在网络断开或者网络很差的时候,展示上次正常访问的数据理想的解决方法是,设置几种缓存模式:1、只请求网络2、只访问缓存3、先访问缓存,再请求网络4、没有缓存再请求网络目前仅支持GE..._flutter dio接口缓存

基于广播星历的北斗定位解算原理(基于C语言和MATLAB实现)_卫星位置解算-程序员宅基地

文章浏览阅读2.3k次,点赞32次,收藏53次。本文先用C语言解算卫星位置,再用MATLAB绘出卫星三维坐标图。本篇博客所使用的资料和文件都是网络上公开发表且可以找到的资料文件。_卫星位置解算

Vue面试题-程序员宅基地

文章浏览阅读158次。ViewModel提供双向数据绑定把View和Model连接起来,他们之间的同步是自动的,不需要人为的干涉,所以我们只需要关注业务逻辑,不需要操作DOM,同时也不需要关注数据的状态问题,因为他是MVVM统一管理。当我们在组件中访问 Vuex 中的状态时,Vue.js 的响应式系统会建立依赖关系,并将组件与状态属性之间的关联记录下来。代码分割和异步加载:将页面按需拆分成多个模块,通过使用路由懒加载或动态导入组件的方式,使得页面初始化时只加载必要的代码,延迟加载其他非必要的模块,从而加快首屏渲染速度。

【新手科研指南5】深度学习代码怎么读-小白阶段性思路(以手写数字识别应用为例)_深度学习程序怎么读-程序员宅基地

文章浏览阅读6.2k次,点赞6次,收藏26次。我是一个深度学习代码小白,请你用中文写上注释,能让我能轻松理解下面这段代码。注意包含所有函数、调用和参数的注释。以同样的python代码块样式返回你写的代码给我。代码看累了,就看《动手学深度学习》文档:基于PyTorch框架,从底层函数实现基础功能,再到框架的高级功能。努力上路的小白一枚,麻烦路过的大佬指导一二,同时希望能和大家交流学习~争取更新学习这个文档的专栏,记录学习过程。量身定做了一套话术hhh,亲身测试还不错。这个感觉更浅一点儿,之后复习看吧。20天吃掉那只Pytorch。_深度学习程序怎么读

Java学习路线图,看这一篇就够了!-程序员宅基地

文章浏览阅读2.7w次,点赞126次,收藏1.2k次。耗废1024根秀发,Java学习路线图来了,整合了自己所学的所有技术整理出来的2022最新版Java学习路线图,适合于初、中级别的Java程序员。_java学习路线

随便推点

kindle安卓更新固件(已经装过安卓系统)_kindle enter updating mode-程序员宅基地

文章浏览阅读4.7w次,点赞2次,收藏14次。(http://182.254.232.41/download/update/update.170822/doc/3.%E5%9B%BA%E4%BB%B6%E6%9B%B4%E6%96%B0.html)1根据机型下载安卓固件,在电脑上解压缩固件,《kindle.xxxxxx.zip》入门版499《kpw2.xxxxxx.zip》Paperwhite二代《kpw3.xxxx_kindle enter updating mode

idea与vue+ElementUI搭建前后端分离的CRUD_elementplus vue idea-程序员宅基地

文章浏览阅读3.1k次,点赞2次,收藏15次。idea与vue+ElementUI搭建前后端分离的CRUD_elementplus vue idea

html+css+js图片加载失败设置默认图片_js图片加载失败事件-程序员宅基地

文章浏览阅读468次。【代码】html+css+js图片加载失败设置默认图片。_js图片加载失败事件

AES-GCM加密算法的简单介绍_aes gcm-程序员宅基地

文章浏览阅读1.5w次,点赞6次,收藏54次。一.什么是AES加密?常见的加密主要分为两类:对称加密和非对称加密,AES加密就是对称加密的一种,即加密和解密使用相同的一把密钥。它的全称是Advanced Encryption Standard(高级加密标准),主要是用来取代DES加密算法,目前已经被全世界广泛采用,各大处理器厂商也在各自的CPU中,集成了专门的AES指令集,从而在硬件层面提升了AES加解密的速度。具体加密过程:十分钟读懂AES加密算法二.AES加密基本构成1.对称加密相关概念明文P(plainText):未经加密的数据密钥K_aes gcm

静态表的查找操作实验(数据结构C语言版)_用顺序查找方法味例设计一个有关静态查找表的简历,查找等基本操作的演示程序,-程序员宅基地

静态表的查找操作实现了顺序查找、二分查找和索引查找。实验结果显示元素的位置或未找到元素。

C#生成CSV文件_c# 生成csv-程序员宅基地

文章浏览阅读1.2w次,点赞5次,收藏27次。编程中,通常需要将数据进行保存,保存为CSV文件,代码如下://写CSV文件 /// <summary> /// Write CSV File /// </summary> /// <param name="fileName"></param> /// <pa..._c# 生成csv

推荐文章

热门文章

相关标签