oracle01
01-基本的查询语句
A:一些命令
- sqlplus sys/sys@192.168.22.220:1521/orcl as sysdba;
- conn scott/123456@192.168.22.210:1521/orcl; 从当前用户转换成scott用户
- show user; 显示当前用户名
- show linesize; 显示的行宽
- set linesize 150; 设置行宽
- col ename for a8; col sal for 9999;设置列ename为字符长度为8个长度;设置列sal为4位数字;
- c 命令字符替换,如: c /form/from 或者c!form!from
- host cls;清屏幕
- spool d:/1.sql 将命令写入到1.sql文件中。spool off终止写入文件中。
B:sql优化原则
- 查询的时候尽量使用列名;如:select ename,sal from emp;
- 分组查询没有多行函数(聚合函数),如果使用过滤,考虑使用where还是having
- 在子查询和多表查询之间选择,尽量使用多表查询
- 在集合运算中,如果union 和union all都可以,考虑使用union all 。因为union需要去掉重复的。
- 能够不要使用集合运算就不要使用集合运算。
注意:掌握oracle的常规命令,在学习过程中总结一些优化原则;
02-空值和别名
A:处理列值为null
oracle中的列值为null做四则运算结果都为null。处理方法:nvl(null,0)
B:判断列值为null
oracle中判断一个列值为null使用is null 或者is not null
C:给一个列取一个别名可以使用as 或者省略as
select empno as “员工编号” , ename 员工姓名 from emp;
注意:别名需要使用“”,或者不加“”。别名中间有空格的需要“”;
不能使用单引号;
D:distinct 取出后面的所有列唯一值
select distinct job,deptno from emp;这里的distinct作用于后面的所有的列。
select distinct(job) from emp;可以将加()
E:|| 和concat() 将字符连接起来
select concat(‘hello’,’world’) from dual;使用concat()后面需要加表。mysql并严格遵循sql1990标准;
select ‘hello’ || ‘world’ from dual;
注意:字符串使用单引号‘’,不能使用双引号“”,使用双引号的是别名。
dual是伪表;
03-SQL和iSQLPLUS
A:sql、sqlplus、isqlplus区别
- sql:insert update delete等常见的sql语句,关键词没有缩写。命令可以控制表中定义和数据;
- sqlplus:desc/ed/c/col/for等命令都是sqlplus命令,关键词有缩写,命令不能改变数据库中的数据;访问sqlplus服务端口是1158;
- isqlplus:是sqlplus是网页版本的sqlplus。可以执行脚本,也可以运行脚本;访问isqlplus服务需要访问5560端口;
04-过滤where
A:where 后面比较运算符(>,<,!=,>=,<=,between and ,in,like,not like,is null,is not null)
- 后面=可以接数据或者字符串,其中日期格式需要注意
如果select * from emp where hiredate=’81-09-08’ 执行会出现错误;
因为该日期字符串格式与oracle当前格式不一致,oralce无法处理成日期类型。但是可以修改日期格式;alter session|system set NLS_DATE_FORMATE=’yy-mm-dd’.select * from v$nls_parameters; 可以查看到系统的所有变量;
- between and (包括边界,小值在前,大值在后)
- in后面集合中可以加null,not in()集合中不能有null
- 注意:where 后面用于过滤或者连接其他表的条件,重点掌握常用>,<,!=,>=,<=,between and ,in,like,not like,is null,is not null操作;
05-逻辑运算符和排序
A:where 后面使用逻辑运算符(and ,or ,not)
注意:condition1 and condition2 和condition2 and condition1的区别;解析的顺序是从右边到左边;explain plan for select * from emp where condition1 and condition2;
B:查询排序(order by)
order by 列名/表达式/别名/序列. 且order by 后面可以接多个列
如果列中有值为null,则desc排序会出现null值行在前null最大,为了解决该问题:
select * from emp order by comm desc nulls last;
注意:order by 多个列参与排序的特殊性。
06-函数简介
A:单行函数和多行函数
注意:操作返回一行数据的函数叫单行函数,操作返回的多行数据的函数叫多行函数;
07-字符函数和数值函数
A:字符函数
- 大小写控制
B:数值函数
- round():四舍五入
- truncate():截断
注意:重点掌握length(),substr(),instr(),round().
08-日期函数
A:日期函数
Oracle中提供了很多和日期相关的函数,包括日期的加减,在日期加减时有一些规律
日期 – 数字 = 日期
日期 + 数字 = 日期
日期 – 日期 = 数字
09-转换函数
A:oracle中隐式转换(查百度)
B:to_char():日期转换成字符串,数字转换成字符
C:to_number():字符串转换成数字
D:to_date():字符串转换成日期
注意:掌握to_char(),to_number(),to_date() ,3个转换函数;
10-通用函数和条件表达式
A:通用函数
- nvl(expr1,expr2) 如果repr1是null则把expr1处理成expr2
- nvl2(expr1,expr2,expr3),如果repr1不为null,则值为expr2,为null则返回expr3
- nullif(expr1,expr2),如果repr1=repr2,则返回null,否则返回expr1
- coalesce(expr1,expr2….), 依次参考各参数表达式,遇到非null值即停止并返回该值。
如果所有的表达式都是空值,最终将返回一个空值B:条件表达式- case xx when xx then xx when xxx then xx else xx end;
- decode()
注意:nvl(),nvlif()和2个条件语句必须掌握。
11-多行函数
A:分组函数(avg(),max(),min(),count(),sum())
B:分组
group by having order by
注意:多行函数在sql中的使用;
oracle01的更多相关文章
- Oracle01——基本查询、过滤和排序、单行函数、多行函数和多表查询
作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7272236.html Oracle的集群 Oracle的体系结构 SQL> --当 ...
- Oracle-01:基础命令小结
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 记录一下我的Oracle学习之路,详细的安装教程忙完这俩天会认真总结一版 本次记录这次学习cmd基础命令 一, ...
- 文件控制列表命令setfacl和getfacl的使用
一 需求 有以下需求,通过setfacl命令实现 一组用户可写可读可执行,一组用户可写可执行,另一组用户只可读 linux rwx oracle wx uplook r 二 解决 第一步 添加六个用户 ...
- OCP读书笔记(26) - 题库(ExamF)
501.Note the output of the following query;SQL> SELECT flashback_archieve_name, status FROM dba_f ...
- 【恢复】 Redo文件丢失的恢复
第一章 Redo文件丢失的恢复 1.1 online redolog file 丢失 联机Redo日志是Oracle数据库中比较核心的文件,当Redo日志文件异常之后,数据库就无法正常启动,而且有丢 ...
- ORACLE监听配置及测试实验(2)
实验四 在tnsname.ora里添加默认监听代号 [oracle@oracle01 admin]$ vi tnsnames.ora 添加一行 PORT1528=(ADDRESS = (PROTOCO ...
- ORACLE监听配置及测试实验
实验一: 修改db_domain和service_name 我们将Db_name和Db_domain两个参数用'.'连接起来,表示一个数据库,并将该数据库的名称称为Global_name即等于serv ...
- ORACLE network environment
监听程序 建立网络连接 要建立客户机或中间层连接,Oracle Net要求客户机 下列事项: 运行监听程序的主机 监听程序监视的端口 监听程序使用的协议 监听程序处理的服务名 Hostname/ip ...
- oracle RAC srvctl命令关闭节点实例的时候 不能正常执行
场景描述: [oracle@oracle01 admin]$ srvctl stop database -d oradb1 PRCD- : The resource for database ORAD ...
随机推荐
- 面试经验And总结
作为一个实习生,我大二即将读完,因为自己是大专的和本科没法比,没有他们的 知识基础,没有他们的充裕的时间,没有那个本科毕业证,没有学位证书.作为一个大专生我在找工作的时候总是充满了自卑,可自己有事那种 ...
- [js高手之路] vue系列教程 - 绑定class与行间样式style(6)
一.绑定class属性的方式 1.通过数组的方式,为元素绑定多个class <style> .red { color:red; /*color:#ff8800;*/ } .bg { bac ...
- angular4.0单个标签不能同时使用ngFor和ngIf
这个问题估计是ng4严格了语法规范的原因. 介于这篇太短,附上图助助兴致 解决办法: <div *ngFor="表达式"> <ng-container *ngIf ...
- c语言贪吃蛇详解5.GameOver功能与显示成绩
c语言贪吃蛇详解5.GameOver功能与显示成绩 以前我们已经做出来了一个能吃东西变长的蛇.不过它好像不会死... 现在就来实现一下game over的功能吧. 写个函数判断蛇是否撞到自己或者撞到墙 ...
- Pyqt4的对话框 -- 文件对话框
文件对话框允许用户选择文件或文件夹,被选择的文件可进行读或写操作 # QInputDialog 文件对话框 # 本示例包含一个菜单栏,一个状态栏和一个被设置为中心部件的文本编辑器. # 状态栏的状态信 ...
- 【二分图】ZJOI2007小Q的游戏
660. [ZJOI2007] 小Q的矩阵游戏 ★☆ 输入文件:qmatrix.in 输出文件:qmatrix.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] ...
- Python网络编程篇之socket
1 socket 插座?呵呵,想多了,翻译过来意思是套接字! A network socket is an internal endpoint for sending or receiving dat ...
- Windows服务框架与服务的编写
从NT内核开始,服务程序已经变为一种非常重要的系统进程,一般的驻守进程和普通的程序必须在桌面登录的情况下才能运行,而许多系统的基础程序必须在用户登录桌面之前就要运行起来,而利用服务,可以很方便的实现这 ...
- CAD 二次开发 -- 自动加载开发的DLL
CAD二次开发可以采用写扩展DLL的方式实现.该DLL的函数可以被CAD调用. 但是调用前,必须用命令netload 将该dll加载到CAD. 其实可以修改注册表,当CAD软件启动后,自动加载扩展DL ...
- JavaScript语法详解:JS简介&变量
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. JavaScript简介 Web前端有三层: HTML:从语义的角度,描 ...