oracle 学习笔记(二)

1.清屏

windows:host cls;

linux:host clear;

2.对日期的处理

1)系统默认的类型:

select sysdate from  dual;-->注:sysdate 是系统的当前时间 系统默认格式为:日-月-年

2)to_char()的用法

语法:TO_CHAR(date,format_model‘)

格式:

日期格式的元素


格式


说明


举例


YYYY


Full year in numbers


2011


YEAR


Year spelled out(年的英文全称)


twenty eleven


MM


Two-digit value of month 月份(两位数字)


04


MONTH


Full name of the month(月的全称)


4月


DY


Three-letter abbreviation of the day of the week(星期几)


星期一


DAY


Full name of the day of the week


星期一


DD


Numeric day of the month


02

select to_char(sysdate,‘yyyy-mm-dd‘) from dual;

3)修改系统的默认日期类型:

查看系统默认的参数:select * from v$nls_parameters;

修改当前会话中的日期类型的默认格式(只在当前会话有效)

alter session set nls_date_format=‘yyyy-mm-dd‘; // 只对当前session有效

4)使用日期类型函数

SQL> select * from emp where hiredate>to_date(‘1981-12-31‘, ‘yyyy-MM-dd‘);

SQL> select * from emp where to_char(hiredate, ‘yyyy-MM-dd‘)  > ‘1981-12-31‘;

语法:TO_CHAR(date, ‘format_model‘)

语法:TO_DATE(str, ‘format_model‘)

3.排序

语法:order by 列名 asc/desc 注:这里的列名只能是数字,字符串,日期类型

asc 默认就是升序

desc 降序

例:按照员工的姓名排序

例:按照员工的薪水从低到高排序

当order by所在的列中有null,会:

升序时,null的在下面。

降序时,null的在上面。

我们希望,不管升序还是降序,null值的始终在下面

方式一:select empno,ename,sal,comm from emp order by comm nulls last;-->使用nulls last 可以使得null放在最后面

方式二:
select empno, ename, job, hiredate, sal, nvl(comm, 0) from emp  order by 6 desc

4.组函数

select

max(sal) 最高工资,

min(sal) 最低工资,

avg(sal) 平均工资,

sum(sal) 所有员工的工资和,

count(sal) 领工资的员工数量

from emp;

例:查询emp表中的平均工资

select sum(comm)/count(*) from emp; 这里的count(*) 会查询出包括comm为null的记录数

select avg(comm) from emp;这里的avg会自动虑null 因此comm为null的行不算 这里记录数就为3

因此上述的使用avg应改为:select avg(nvl(comm,0)) from emp; 注:函数可以嵌套使用

注意:

按一个列分组

按多个列分组

参与分组的多个列有一个不相同就是不同的组。

having与where的区别:

Having,是分完组后再进行过滤,只显示符合条件的结果。

在Group by与Having中都不可以使用别名。

与Where的区别

Having是是分完组后再进行过滤。

Where是先过滤,再进行分组操作。

如果可以,尽量写Where条件,不写Having。

5.子查询

当一步不能求解时,可以使用子查询

分为:单行子查询/多行子查询

例:查询工资比Scott高的员工信息

select ename from emp where sal>(select sal from emp where ename=‘SCOTT‘);

注意问题:

1. 子查询相对主查询往右缩进

2. 将子查询放入括号中

3. 换行

4. 可以在主查询的select, from, where, having 都可以放子查询

5. 不可以在主查询的group by 放子查询

6. 主查询和子查询可以不是用一张表,只要子查询返回的结果主查询可以使用,即可

7. 在from后面放子查询(*****)

select 后面放子查询: 该子查询必须是单行子查询

from 后面放子查询: 查询员工的编号和姓名

主查询和子查询可以不是用一张表,只要子查询返回的结果主查询可以使用,即可

例:查询部门名称为ACCOUNTING的员工信息

多行子查询

in: 在集合中

例:查询部门名称为ACCOUNTING和SALES的员工信息

select * from emp where deptno in( select deptno from dept where dname =‘ACCOUNTING‘ or dname=‘SALES‘)

any:和子查询中任意(随便)一个值比较

查询工资比10号部门任意一个员工工资低的员工信息

select * from emp where sal<any(select sal from emp where deptno=10);或者

select * from emp where sal<(select min(sal) from emp where deptno=10);

all: 和子查询中所有值比较

查询工资比10号部门所有员工工资低的员工信息

select * from emp where sal<all(select sal from emp where deptno=10);

**

any: 小于集合中的最大值

all: 小于集合中的最小值

any: 大于集合中的最小值

all: 大于集合中的最大值

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-25 09:02:58

oracle 学习笔记(二)的相关文章

Oracle 学习笔记二

一.oracle通用函数vnl(a,b) 用于任何类型,如果a的值不为null返回a的值否则返回b的值 条件判断oracle中可以使用 case 字段 when 条件1 then 表达式1 when 条件2 then 表达式2 else 表达式n end 另一种,decode() 函数,可以算case when的增强(字段,条件1,表达式1,条件2,表达式2,..表达式n) 二.数据库中的引号 单引号出现的地方:1字符串,日期 .双引号出现的地方:列的别名 select ename "姓 名&q

oracle学习笔记(二)

1. Oracle字符串操作 1.1. 字符串类型 1.1.1. CHAR和VARCHAR2类型 CHAR和VARCHAR2类型都是用来表示字符串数据类型,用来在表中存放字符串信息, 比如姓名.职业.地址等. CHAR存放定长字符,如果数据存不满定长长度,则补齐空格: VARCHAR2存放变长字符,实际数据有多少长度则占用多少. 如保存字符串'HELLOWORLD',共10个英文字母: CHAR(100): 10个字母,补齐90个空格,实际占用100个字节. VARCHAR2(100) :10个

Oracle学习笔记二——DBMS

数据库管理系统 数据库管理系统(Database Management System,DBMS),有时也被称为数据库管理器(Database Manager) 什么是数据库管理系统 数据库管理系统(Database Management System,DBMS)是一种操纵和管理数据库的大型软件,是用于建立.使用和维护数据库.它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性.用户通过dbms访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作.它提供多种功能,可使多个应用

Oracle学习笔记章(一)

Oracle学习笔记一 权限分为sysdba,nomal等,系统自带有两个用户,起始密码为空. 用户为:SYSTEM,SYS. 登录SYSTEM的时候要使用sysdba权限来登录,如果忘记了密码,则打开命令行 输入:1.echo %ORACLE_SID% 2.set ORACLE_SID = orcl(orcl为所要登录数据的实例,可以自己修改) 3.sqlpuls / as sysdba  (即可采用sysdba权限进入oracle系统) 4.alter user system identif

oracle学习笔记(二)

设置归档模式(mount状态) ALTER database ARCHIVELOG; //关闭数据库 shutdown immediate //启动数据库到mount状态 startup mount alter database archivelog; //查看归档状态 archive log list; SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列 1 下一个存档日志序列

【我的Oracle学习笔记(二)】----- select语句补充

一.多表查询 多表查询是指从多个有关联的表中查询数据,其语法与单表查询类似.一般来说,多表查询的表要用连接联系起来,如果没连接,则查询结果是这多个查询表的笛卡尔积(注释1). 模拟查询雇员姓名和所在部门名称: select [雇员姓名],[部门名称] from [雇员表] a,scott,[部门表] b where a.[部门编号]=b.[部门编号]; 上例中,为每一个查询表指定了别名,便于SQL语句的书写. 模拟查询在”sales“部门工作的雇员其雇员姓名 select [雇员姓名] from

oracle学习笔记 存储及raid技术概述

oracle学习笔记 存储及raid技术概述 本课以oracle数据库所运行的环境,讲一下存储和raid技术. 一)oralce生产环境里的结构 先说一下oracle所在的环境. 有一种结构: 两个服务器.两个光纤存储交换机.两个存储, 它们通过网线相互连接在一起. 每个服务器接两个交换机, 每个交换机连两个服务器同时连两个存储, 每个存储和两个交换机有连接. 这是oracle数据库相对比较典型的正规的运行环境. 每个服务器上都装Linux和oracle数据库软件, oracle数据库建在存储上

Oracle学习笔记三 SQL命令

SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)               下面是这四种SQL语言的详细笔记: Oracle学习笔记三 SQL命令(二):SQL操作语言类别 Oracle数据类型 创建表时,必须为各个列指定数据类型 以下是 Oracle 数据类型的类别: 字符数据类型 CHAR类型 当需要固定长度的字符串时,使用 CHAR 数据类型. CHAR 数据类型存储字母数字值. CH

oracle学习笔记 SQL语句执行过程剖析讲课

oracle学习笔记 SQL语句执行过程剖析讲课 这节课通过讲述一条SQL语句进入数据库 和其在数据库中的整个的执行过程 把数据库里面的体系结构串一下. 让大家再进一步了解oracle数据库里面的各个进程.存储结构以及内存结构的关联关系. 首先来讲整个体系中有客户端.实例和数据库 数据库里有三类文件 控制文件ctl.数据文件dbf.日志文件log 实例中SGA有六大池子 第一大内存区shared pool即共享池 第二大内存区buffer cache 第三块是redo log 我们主要讲上面的三