-----------------------函数补充------------------------

查看当前oracle自动提交状态
show autocommit ;
修改自动提交状态(这是一个会话级的环境变量)
set autocommit on ;
set autocommit off ;

手动提交
commit; 
回滚 (autocommit off)
rollback;

----------------------------------------
char 定长字符串  最大2000字节  GBK编码 1000个汉字    可以不指定长度  默认为1
char(10)    等价于   char(10 byte)
也可以这样定义  char(10 char)
varchar2变长字符串   最大4000字节  GBK编码 2000个汉字   必须指定长度 
varchar2(100) 等价于  varchar2(100 byte)
也可以这样定义  varchar2(100 char)

----------------------------------------------------
日期常用函数
last_day(date)返回日期date所在月的最后一天
select last_day(sysdate) from dual ;
add_months(date,i)返回日期date加上i个月后的日期值
i取正值整数    小数:截取整数后再运算     负数:减去i个月的日期值

months_between(date , date_) 返回两个日期间隔多少个月   结果可能是负数和小数(可以用ceil函数直接进位)

next_day(date , 周几) 返回date日期数据的下一个周几的日期 ,例如 4  即下一个周四的日期
Sunday (周日)Monday(周一)Tuesday(周二)Wednesday(周三)Thursday(周四)Friday (周五)Saturday(周六)
January一月; February二月; March三月; April 四月; May 五月;June 六月;July七月;August 八月;September 九月;October 十月;November 十一月;December搜索十二月

least(1,3,55,100,2,24)

greatest(1,88,2,33,55)
也被称作比较函数,参数类型必须一致
第二个参数类型会被转向第一参数类型  不能转换就报错

extract(year/month/day from date) 从参数datetime中提取参数date指定的数据类型,例如提取年、月、日
例如:select extract(year from sysdate) from dual ;

null和任何值进行运算,返回的都是null
select * from tablename where column1 = null ;  //对于null 不能这样进行比较
select * from tablename where column1 is null ;
select * from tablename where column1 is not null ;
空值函数
nvl(col_null , col_not_null) 将null值转变成非null值处理  请保持两个参数的类型一致
例如:select sal , comm , sal + nvl(comm , 0 ) as 'salary' from emp ;

nvl2(col_null , col_is_null , col_is_not_null) 将null值转变成实际值  作用有点像三目表达式  
如果是null  转成col_is_null ,如果不是null,转成col_is_not_null
select sal , comm , sal+nvl2( comm , 0 , 1000 ) as 'salary' from emp ;

--------------------------------------------------------------------------------

基本查询语句
any 和 all
不能单独使用 需要与比较符号配合使用
>any 大于最小的
select * from emp where sal >any (1000,2000,3000) ;
<any 小于最大的
>all 大于最大的
<all 小于最小的

distinct 过滤重复关键字

聚合函数
即 数据统计
max(col) 
min(col)
avg(col)
sum(col)
count(col/*)
当使用count(column) 时,该字段含null值,计数器会将该null值的这一列忽略,所以会造成统计数据有误差
其中的空值可以使用nvl 和 nvl2函数处理
select count(nvl(sal,0)) from emp ;

select * 
from tablename
where id = 1 
order by sal ;

查询语句执行顺序
from子句  
执行顺序从后往前,从右到左,故数据量较少的表尽量放在后面
select t1.col , t2.col from t1 , t2 where t1.id = t2.id and t1.sal > 1000;
where 子句
执行顺序为自上而下,从右到左,故将能过滤掉最大数量记录的条件写在where子句的最右
group 子句
执行顺序从左往右分组,故最好将group by 前使用where将不需要的记录在group by 之前过滤掉
having 子句
消耗资源 尽量避免使用,having会在检索出所有记录之后才对结果集进行过滤,需要排序等操作。

group by 子句  分组 
当希望得到每个部门的平均薪水,而不是整个机构的平均薪水
把整个数据表按部门分成一个个小组,每个小组中包含一行或多行数据,在每个小组中在使用分组函数进行计算,每组返回一个结果
划分的小组由多少,最终的结果集行数就有多少

having 子句
having子句用来对分组后的结果进一步限制,比如按部门分组后,得到每个部门的最高薪水,可以继续限制输出结果。
必须跟在group by 后面,不能单独存在

select子句
少用*号,尽量取字段名称,oracle在解析的过程中,通过查询数据字典将*号依次转换成所有的列名,消耗时间
order by 子句 
执行顺序从左到右,消耗资源
order by 子句  对数据按一定规则进行排序操作   必须是查询语句的最后一个子句
ASC(ascending )升序(默认)    DESC(descending )降序
null值视作最大
多列排序:
首先按照第一列进行排序,如果第一列数据相同,再以第二列排序,以此类推
例如:select ename , deptno , sal from emp order by deptno asc , sal desc ;

简单查询

1.       选择部门30中的所有员工
select * from emp where deptno = 30;
2.       列出所有办事员的姓名、编号和部门编号
select ename,empno,deptno from emp WHERE job = 'CLERK';
3.       找出佣金高于薪金的员工
select * from emp  where comm > sal;
4.       找出佣金高于薪金60%的员工
select * from emp  where comm > (0.6)*sal;
5.       找出部门10中所有经理和部门20中所有办事员的详细资料
select * from emp where (deptno=10and job='MANAGER') or (deptno=20and job='CLERK');
6.       找出部门10中所有经理,部门20中所有办事员,既不是经理又不是办事员但薪金大于或等于2000的所有员工的详细资料 
select * from emp where (deptno=10and job='MANAGER') or (deptno=20and job='CLERK')or job not in ('MANAGER','CLERK') and sal >=2000;
7.       找出收取佣金的员工的不同工作
selectdistinct job from emp where comm isnotnull;
8.       找出不收取佣金或收取的佣金低于100的员工
select * from emp where comm is null or comm < 100;
9.       找出各月倒数第三天受雇的所有员工。
select * from emp where last_day(hiredate)-hiredate=2;
10.   找出早于12年前受雇的员工
select * from emp where months_between(sysdate,hiredate)/12 >=12;
11.   以首字母大写的方式显示所有员工的姓名
select INITCAP(ENAME) from emp;
12.   显示正好为5个字符的员工姓名
select ENAME from emp where length(ename)=5;
13.   显示不带有R的员工姓名  www.2cto.com  
select ENAME from emp where ename notlike'%R%';
14.   显示所有员工的前三个字符
select substr(ename,1,3) from emp ;
15.   显示所有员工的姓名,用a替换所有A
selectreplace(ename,'A','a') from emp ;
16.   显示满10年服务年限的员工的姓名和受雇日期
select ename ,hiredate from emp where months_between(sysdate,hiredate)/12>=10;
17.   显示员工的详细资料,按姓名排序
select * from emp orderby ename ;
18.   显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面
select ename ,hiredate from emp orderby hiredate asc;
19.   显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同按薪金排序
select ename,job,sal from emp orderby job desc ,sal;
20.显示所有员工姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面。
select ename,to_char(hiredate,'YYYY/MM') from emp orderby to_char(hiredate,'MM'),to_char(hiredate,'yyyy') asc ;
21.   显示在一个月为30天的情况所有员工的日薪金,忽略余数
select  round(sal/30) from emp;  
22.   找出在任何年份的2月受聘的所有员工
select * from emp where to_char(hiredate ,'MM')=2 ;
23.   对于每个员工,显示其加入公司的天数
select ename,round(sysdate-hiredate) emp_date from emp;
24.   以年月日的方式显示所有员工的服务年限(表述意图不明)
select ename,to_char(hiredate,'YYYY')||'年'||to_char(hiredate,'MM')||'月'||to_char(hiredate,'DD')||'日'from emp;

甲骨文数据库学习内容相关推荐

  1. SHOUG线上活动 Maclean Liu分享《学习甲骨文数据库的自由之翼-与Oracle的世界相连接》...

    SHOUG线上活动 Maclean Liu分享<学习甲骨文数据库的自由之翼-与Oracle的世界相连接>   正式版文档已上传: 学习甲骨文数据库的自由之翼,与Oracle的世界相连接 2 ...

  2. 数据库技术学习内容与学习方法

    2023.03.01 星期三 1. 数据库技术学习内容与学习方法 1.1 学习内容 1 Oracle数据库 目前最好的关系型数据库. 基本的CRUD命令. SQL语句.select®,update(U ...

  3. 【PPT 资源下载】甲骨文数据库大会精彩主题分享

    在最近结束的甲骨文数据库大会上 eygle 做了重要技术分享:百倍提升-真实世界的 SQL 优化,将一些优化案例带给大家.现将演讲的 PPT 发布供参考学习. 在这个主题中,分享了5个来自于真实世界的 ...

  4. 【组队学习】【25期】Datawhale组队学习内容介绍

    第25期 Datawhale 组队学习活动马上就要开始啦! 本次组队学习的内容为: web开发入门教程 数据挖掘实战(异常检测) 集成学习(下) 大家可以根据我们的开源内容进行自学,也可以加入我们的组 ...

  5. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  6. 数据库学习day_01:SQL的发展和数据库操作相关sql语句

    1.数据库 学习数据库主要学习的就是如何对数据进行增删改查操作. 增加(插入数据) 删除数据 修改数据 查询数据 为什么使用数据库软件? 之前在webserver时通过IO技术已经操作过数据,其实这部 ...

  7. 原文:我的数据库学习“曲线”

    作者简介: 牛新庄博士,研究方向为数据仓库和数据挖掘.是IBM官方资深培训讲师(培训DB2,AIX,MQ,WebSphere和CICS).2002年获IBM 杰出软件专家奖,2006年获"首 ...

  8. 【数据库学习】——windows、MySQL构建新闻管理系统(控制台版)

    学习记录:[Python项目实战]Python+MySQL开发新闻管理系统全集_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Qb4y1b75q?p=2 ...

  9. 【数据库学习笔记】——操作sqlite(增删改查)以及cursor的方法介绍

    目录 1.sqlite数据库介绍 1)常见的数据库操作 2)数据操作常见步骤 2.向数据表中增加数据(insert into) 1)向数据表中添加一条记录 2)向数据表中一次性添加多条记录 ​ 3.修 ...

最新文章

  1. mysql5.7 zip安装配置_MySQL5.7的.zip文件的配置安装
  2. Basis,去中心化央行?
  3. MTK 平台上查询当前使用的摄像头模组及所支持预览分辨率
  4. 12_Android中HttpClient的应用,doGet,doPost,doHttpClientGet,doHttpClient请求,另外借助第三方框架实现网络连接的应用,
  5. 是否应该立即将网站升级到Drupal 8?
  6. C语言,C#语言求100-999内的水仙花数源程序
  7. [渝粤教育] 三峡大学 电力电子技术(Ⅱ) 参考 资料
  8. 【EOJ Monthly 2019.02 - A】回收卫星(交互题型,二分)
  9. 贴花纸怎么贴_陶瓷贴花纸DIY怎么做?
  10. opencv9-膨胀和腐蚀
  11. android安装python opencv_Python、C++、Android OpenCV 开发环境的配置
  12. IOS开发之——屏幕适配-AutoLayout代码实现(03)
  13. CVPR 历年 Best paper(1988-2020)汇总,持续更新~
  14. 谷歌邮箱lmap服务器填什么_Gmail IMAP的应用技巧
  15. 【C++】数字的组合排列情况
  16. linux 播放m4a 文件,M4A是什么文件?如何提取M4A音频?
  17. 道路智慧路灯:山西省长治市道路智慧灯杆(多功能交通一体式综合杆)项目案例分享
  18. 硬盘安装工具cgi3.2_笔记本旧硬盘改造移动硬盘,满足媳妇办公存储需求
  19. 导师喜欢什么样的“真”研究生?(转科学网)
  20. 迪威视讯打造全国网格化管理样板 龙华“织网工程”

热门文章

  1. LoRa + 蓝牙室内场馆定位技术全面解析
  2. 非递归遍历二叉树 Java
  3. Python-ip代理
  4. 恶意软件及其类型(病毒、蠕虫、木马、间谍软件、勒索软件、恐吓软件、Bots和Rootkits等)的介绍
  5. 机器学习的五大潜力趋势!
  6. linux cp 排除文件,cp、tar命令排除文件和子目录 - 米扑博客
  7. 本周最新文献速递20220515
  8. c语言 用结构指针输入,c语言结构体以及结构体指针的使用
  9. 张飞硬件第四部(二)
  10. 瞬变电磁三维正反演研发历程