--DQL语句
--查询语句用来检查数据使用
--SELECT子句用来指定要查询的字段,若写“*”则表示查询所有字段。FROM子句用来指定数据来源的表。
--SELECT * FROM emp_weiyiji
SELECT empno,ename,job,sal FROM emp_weiyiji
--SELECT子句中也允许使用函数或表达式,这样可以将结果查询出来。
--查看每个员工的年薪?
SELECT ename,sal*12 FROM emp_weiyiji
--在DQL中使用WHERE子句也可以只查询出满足条件的记录。
--查看职位是“CLERK”的员工
SELECT ename,job,sal FROM emp_weiyiji
WHERE job='CLERK'
--查看工资高于2500的员工
SELECT ename,job,sal FROM emp_weiyiji
WHERE sal>'2500'

--字符串函数
--CONCAT(c1,c2)
--连接字符串
SELECT CONCAT(ename,sal) FROM emp_weiyiji

--往拼接的字符串中添加','
SELECT CONCAT(CONCAT(ename,','),sal) FROM emp_weiyiji

--用||拼接字符串
SELECT ename||','||sal FROM emp_weiyiji

--LENGTH(c):求字符串长度
SELECT ename,LENGTH(ename) FROM emp_weiyiji

--UPPER,LOWER,INITCAP 将字符串转换为全大写,全小写,首字母大写
--伪表:DUAL,当查询的内容与任何表没有关系时,可以在FROM子句中查询该表,会查询出一条记录。
SELECT UPPER('helloworld'),
LOWER('HELLOWORLD'),
INITCAP('hello world')--中间用空隔隔开的话就会显示出两个单词,并且每个都是首字母大写
FROM dual
--TRTM,LTRIM,RTRIM 去除字符串两边、左边、右边的指定字符
SELECT TRIM('e' FROM 'eeeeeliteeeeeeeee')--注意:FROM前面只能是一个字符,即只能去掉单字符
FROM dual
SELECT LTRIM('eeeeeseliteeee','se') FROM dual--去除左边
SELECT RTRIM('eeslitseeseeses','se') FROM dual--去除右边

--LPAD,RPAD补位函数,允许将指定字符串显示指定位数,不足时补充若干指定字符达到该长度。
SELECT ename,RPAD(sal,5,'$') FROM emp_weiyiji--右补齐($改成空隔就是右对齐)
SELECT ename,LPAD(sal,5,'$') FROM emp_weiyiji--左补齐($改成空隔就是左对齐)

--SUBSTR(str,m,n)
--将给定字符串从m处开始连续截取n个字符n不知道则是截取到末尾,n超过可以截取的字符数量也是截取到
--末尾。
--m可以是负数,负数则是从倒数位置处开始数据库中的小标从1开始!!
SELECT SUBSTR('thinking in java',10,5) FROM dual

--INSTR(c1,c2,m,n)查看c2在c1中的位置,m用来指定从哪儿开始检索,不写默认从第一个字符开始
--n表示第几次出现,不写默认为1
SELECT INSTR('thinking in java','in',4,2) FROM dual

--ROUND(m,n):四舍五入
--n为保留到小数点后的位数,若n为负数则是10为以上的数字
SELECT ROUND(55.678,1) FROM dual--55.7
SELECT ROUND(55.678,0) FROM dual--56
SELECT ROUND(55.678,-2) FROM dual--100

--TRUND(m,n)函数:截取数字(不进行四舍五入)
SELECT TRUNC(55.678,1) FROM dual--55.6
SELECT TRUNC(55.678,0) FROM dual--55
SELECT TRUNC(55.678,-2) FROM dual--0

--MOD(m,n)求余数
SELECT ename,MOD(sal,1000) FROM emp_weiyiji
--CELL,FLOOR向上取整和向下取整
SELECT CEIL(45.678) FROM dual--46
SELECT FLOOR(45.678) FROM dual--45

--日期相关函数
--和日期相关的关键字
--SYSDATE:返回一个Date类型数据,表示当前系统时间
--SYSTIMESTAMP:返回一个时间戳类型,表示当前系统时间
SELECT SYSDATE FROM dual
SELECT SYSTIMESTAMP FROM dual

--将一个字符串按照指定的日期格式解析为DATE
SELECT TO_DATE('1992-08-03 14:22:15','YYYY-MM-DD HH24:MI:SS')
FROM dual

--在日期格式字符串中,除英文,数字,符号外的其他字符都要使用双引号括起来
SELECT TO_DATE('1992年08月03日 14时22分15秒',
'YYYY"年"MM"月"DD"日" HH24"时"MI"分"SS"秒"')
FROM dual

--TO_CHAR函数
--可以将一个DATE按照给定的日期格式转换为字符串格式
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM dual

--日期类型是可以进行计算的:
--1.对一个日期加减一个数字等同于加减天数
--2.两个日期相减,差为相差的天数,同样, 日期减也可以比较大小,越晚的越大。
--查看每个员工入职到今天共多少天了?
SELECT ename,SYSDATE-hiredate FROM emp_weiyiji
SELECT SYSDATE+1 FROM dual

--返回给定日期所在月的月底日期
--查看当月底是哪天?
SELECT LAST_DAY(SYSDATE+1) FROM dual

--ADD_MONTHS(date,1) 计算指定日期加上指定的月后的日期
--若i是负数,则是计算减法。
--查看每个员工入职20周年纪念日?
SELECT ename,ADD_MONTHS(hiredate,12*20) FROM emp

--计算两个日期之间相差的月
SELECT ename,MONTHS_BETWEEN(SYSDATE,hiredate) FROM emp_weiyiji

--NEXT_DAY(date,i) 返回给定日期之后一周内(7天内)的指定周几的日期
SELECT NEXT_DAY(SYSDATE,7) FROM dual

--LEAST、GREATEST函数 求最小值与最大值
SELECT LEAST(SYSDATE,TO_DATE('2008-08-08','YYYY-MM-DD')) FROM dual --最小值

--EXTRACT函数,提取指定日期指定时间分量的值。
--SELECT EXTRACT(YEAR FROM SYSDATE) FROM dual
--查看1980年入职的员工?
SELECT ename,hiredate FROM emp_weiyiji
WHERE EXTRACT(YEAR FROM hiredate)=1980

--创建student表格,并且插入数据
CREATE TABLE student_weiyiji
(
ID NUMBER(4),
NAME CHAR(20),
GENDER CHAR(1)
)
INSERT INTO student_weiyiji VALUES(1000,'李莫愁','F');
INSERT INTO student_weiyiji VALUES(1001,'林平之',NULL);
INSERT INTO student_weiyiji(id,name) VALUES(1002,'张无忌');
SELECT * FROM student_weiyiji
--使用NULL作为判断条件 将性别不是NULL的记录删除
DELETE FROM student_weiyiji
WHERE gender IS NOT NULL

--NULL的运算
--NULL与字符串连接等于什么都没做 NULL与数字运算结果还是NULL
SELECT ename,sal,comm,sal+comm FROM emp_weiyiji

--空值函数
--NVL(f1,f2) 当f1为NULL时,函数返回f2的值,否则返回f1自身
--所以NVL函数的作用是将NULL值替换为非NULL
SELECT ename,sal,comm,sal+NVL(comm,0) FROM emp_weiyiji

--查看绩效情况,有绩效的显示”有绩效“ 为NULL的则显示”没有绩效“
--NVL2(f1,f2,f3)函数 当f1不为NULL时函数返回f2 当f1为NULL时,函数返回f3
SELECT ename,sal,comm,NVL2(comm,'有绩效','没有绩效') FROM emp_weiyiji
SELECT ename,sal,comm,NVL2(comm,sal+comm,sal) FROM emp_weiyiji

OracleSql语句学习(二)的更多相关文章

  1. OracleSql语句学习(五)

    --数据库对象数据库对象包含:表,视图,索引,序列视图VIEN视图在SQL语句中体现的角色与表一样,但是视图并非真实存在的表,它只是对应一条查询语句的结果集 使用视图通常是为了重用子查询,简化SQL语 ...

  2. OracleSql语句学习(三)

    --在SELECT子句中出现的函数或表达式会在结果集中作为字段名,这样的可读性差,因此可以为--这样的字段添加别名(别名中不能出现空隔,除非是用双引号括起来的)--别名中如果希望包含空隔或者区分大小写 ...

  3. OracleSql语句学习(四)

    SELECT e.ename,m.ename,d.locFROM emp_weiyiji e JOIN emp_weiyiji m ON e.mgr=m.empnoJOIN dept_weiyiji ...

  4. OracleSql语句学习(一)

    --SQL语句本身是不区分大小写的,每个关键字用空格隔开,为了增加可读性,退出所有关键字--全部大写,非关键字都小写SELECT SYSDATE FROM dual--创建表CREATE TABLE ...

  5. 【java开发】分支语句、循环语句学习

    一.Java分支语句类型 if-else 语句 switch 关于if-esle语句可以拆分为三种 if语句 if(条件){语句块;} if-else语句if(条件语句){语句块;} if-else ...

  6. SpringCloud学习(二):微服务入门实战项目搭建

    一.开始使用Spring Cloud实战微服务 1.SpringCloud是什么? 云计算的解决方案?不是 SpringCloud是一个在SpringBoot的基础上构建的一个快速构建分布式系统的工具 ...

  7. (转)MyBatis框架的学习(二)——MyBatis架构与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图: 下面作简要概述: S ...

  8. Python第一周基本语句学习整理

    目录 Python第一周基本语句学习整理 一.字符串切割 二.体重单位转换 三.计算器的实现 四.猜年龄游戏 Python第一周基本语句学习整理 一.字符串切割 代码实现: s = 'luowenxi ...

  9. Oracle----SQL语句积累 (Oracle 导入 dmp文件)

    Oracle----SQL语句积累 (Oracle 导入 dmp文件) Oracle SQL PL  导入dum文件 1.数据库DBA权限: 注意:这个是在cmd命令行中直接输入,不需要进入Oracl ...

随机推荐

  1. 【转】java缩放图片、java裁剪图片代码工具类

    一首先看下效果 二工具类 三测试类 在系统的上传图片功能中,我们无法控制用户上传图片的大小,用户可能会上传大到几十M小到1k的的图片,一方面图片太大占据了太多的空间,另一方面,我们没办法在页面上显示统 ...

  2. 触发器 评论折叠显示(jquery)

    触发器   评论折叠显示(jquery)   子页面 : @if(Model?.count>0) {      var i=1;      var n=model.count-2      va ...

  3. 细说MVC中仓储模式的应用

    文章提纲 概述要点 理论基础 详细步骤 总结 概述要点 设计模式的产生,就是在对开发过程进行不断的抽象. 我们先看一下之前访问数据的典型过程. 在Controller中定义一个Context, 例如: ...

  4. python学习笔记(十 一)、GUI图形用户界面

    python图形用户界面就是包含按钮.输入框.选择框等组件的窗口.主要依赖与工具包进行代码编写.python GUI工具包并发互斥的,你可以选择多个工具包进行安装,有极大选择空间.每个工具包都有不同用 ...

  5. 经典面试题:浏览器是怎样解析CSS的?

    摘要: 理解浏览器原理. 解析 一旦 CSS 被浏览器下载,CSS 解析器就会被打开来处理它遇到的任何 CSS.这可以是单个文档内的 CSS.<style>标记内的 CSS,也可以是 DO ...

  6. linux下执行QT可执行文件报错

    老样子,不多BiBi,直接进入主题! 有时候在linux下编译好QT程序,用QTCreator运行没问题,打包移植到另一台机器上,用命令./XX执行就会报错:error while loading s ...

  7. 容器化系列 - 通过Grafana监测InfluxDB数据 on Docker

    本文演示在Docker中运行Grafana和InfluxDB,并通过Grafana展示InfluxDB曲线图. 1 准备工作 1.1 安装Docker 请参考这里 1.2 下载镜像 $ docker ...

  8. 《我们不一样》Alpha冲刺_1-5

    第一天    日期:2018/6/15 1.1 今日完成任务情况以及遇到的问题. 马    兰.马   娟:用户.管理员数据库表的设计 李国栋.张惠惠:前端登录界面代码书写 伊力亚.张   康:配置s ...

  9. 【原】Java学习笔记018 - 面向对象

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 继承关系的子类可以 ...

  10. 雨后清风教你如何在Windows 7中对硬盘进行分区

    磁盘分区是将硬盘驱动器分成多个逻辑单元.人们通常不会选择对硬盘进行分区,但它有很多好处.主要是,通过对磁盘进行分区,您可以将操作系统与数据分开,从而减少数据损坏的可能性. 磁盘分区方法 打开“计算机管 ...