Oracle笔记一

作者: lichao3140 | 来源:发表于2017-08-02 12:41 被阅读0次

1、密码设置:Lichao3140

超级管理员sys:    密码:change_on_install

管理员system:    密码:manager

scott用户:      密码:tiger

sh用户:          密码:sh

2、登录

cmd: sqlplus scott/tiger

sqlplus: scott/tiger

无用户登录:sqlplus /nolog

3、设置每行数据长度:SET LINESIZE 300;

设置每页显示的行数:SET PAGESIZE 30;

设置指定列的宽度:COL 列名称 FOR A长度数字;e.g  COL job FOR A10;

4、使用记事本记录sql语句:

oracle创建记事本命令:ed 记事本名称,不设置后缀则默认为".sql"; e.g ed lichaosql    则生成lichaosql.sql文本

执行记事本里面sql语句:@记事本名称:  e.g @lichaosql;    或者指定自己的文件路径: @E:/data.sql

5、 用户切换:

切换到sys用户:CONN sys/change_on_install AS SYSDABA;

切换到system用户:CONN system/manager;

切换到scott用户:CONN scott/tiger;

6、表查询语句:

scott用户下所有的表查询:SELECT * FROM tab;

表结构查看:DESC 表名; e.g  DESC emp;

字段的连接:SELECT empno || ename FROM emp;

普通数字连接:SELECT empno || 1 FROM emp;

字符串连接:SELECT empno || 'hello' FROM emp;

7、验证函数:SELECT LOWER('Hello'), UPPER('Hello') FROM dual;

输入指定条件的值:SELECT * FROM emp WHERE ename=UPPER'&inputname';  (UPPER保证用户输入条件为大写,因为数据区分大小写)

首字母大写:SELECT INITCAP('HelloWorld') FROM dual;                  第一个字母大写

字符串替换:SELECT REPLACE(ename, UPPER('a'),'_') from emp;          将所有A都替换成_

消除空格:SELECT REPLACE('HELLO WORLD LI CHAO','')FROM dual;

8、字符串截取  注意:SUBSTR下标从1开始,若设置为0也会从1开始

SELECT SUBSTR('HelloWorldNIHAO', 11) FROM dual;              把NIHAO截取出来

SELECT SUBSTR('HelloWorldNIHAO', 6,5) FROM dual;              把World截取出来

9、数值函数

四舍五入操作:

SELECT

ROUND(46547.64446),          46548

ROUND(46547.64446,2),        46547.64

ROUND(46547.64446,-2),      46500

ROUND(46587.64446,-2),      46600

ROUND(-15.35)                -15

FROM dual;

截取操作不进位:

SELECT

TRUNC(46547.64446),          46547

TRUNC(46547.64446,2),        46547.64

TRUNC(46547.64446,-2),      46500

TRUNC(46587.64446,-2),      46500

TRUNC(-15.35)                -15

FROM dual;

求模(求余数)

SELECT MOD(10,3) FROM dual;      1

10、日期函数

当前日期:SELECT SYSDATE FROM dual;

时间戳:SELECT SYSDATE,SYSTIMESTAMP FROM dual;

日期 + 数字 = 日期:SELECT SYSDATE+100 FROM dual;

日期 - 数字 = 日期:SELECT SYSDATE-100 FROM dual;

日期 - 日期 = 数字:使用Oracle自带的函数可以解决闰年和闰月问题

e.g 计算员工到当前日期入职的年限: SELECT ename, hiredate, TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)/12) years FROM emp;

e.g 计算四个月之后是什么时候:SELECT ADD_MONTHS(SYSDATE,4) FROM dual;

e.g 计算当前日期月份的最后一天:SELECT LAST_DAY(SYSDATE) FROM dual;

e.g 计算所有雇员在每月的倒数第二天入职的员工:SELECT ename,hiredate,LAST_DAY(hiredate),LAST_DAY(hiredate)-2

FROM emp

WHERE hiredate = LAST_DAY(hiredate)-2;

e.g 计算下一个指定的星期:SELECT NEXT_DAY(SYSDATE,'星期二') FROM dual;

e.g 计算雇佣时间多少年、多少月、多少天:SELECT empno, ename, hiredate,

TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)/12) years,

TRUNC(MOD(MONTHS_BETWEEN(SYSDATE,hiredate),12)) months,

TRUNC(SYSDATE-ADD_MONTHS(hiredate, MONTHS_BETWEEN(SYSDATE,hiredate))) day

FROM emp;

11、转换函数

格式化日期:SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') FROM dual;

查找所有在2月雇佣的人:SELECT * FROM emp WHERE TO_CHAR(hiredate,'mm')='02';

转换本地货币:SELECT TO_CHAR(457646461348,'L999,999,999,999,999') FROM dual;

12、通用函数

NVl函数解决为null字段替换为0的问题:NVL(列|null,为空的默认值)      oracle只有的函数,其他数据库没这个函数

e.g 计算所有员工的年薪:SELECT empno, ename, job, sal, comm, NVL(comm,0),(sal+NVL(comm,0))*12 income FROM emp;

多数值判断:SELECT empno, ename, job,DECODE(job,'CLERK','办事员','SALESMAN','销售') FROM emp;

相关文章

  • 数据库

    DB Oracle Debian7安装Oracle 11g 入门教程 Oracle笔记 MySQL debian安...

  • Oracle笔记(二)

    Oracle笔记系列这几篇是来自一位老师的笔记,分享给大家放在简书上,主要方便自己时常复习,还有学习Oracle的...

  • Oracle笔记(三)

    Oracle笔记系列这几篇是来自一位老师的笔记,分享给大家放在简书上,主要方便自己时常复习,还有学习Oracle的...

  • Oracle笔记(四)

    Oracle笔记系列这几篇是来自一位老师的笔记,分享给大家放在简书上,主要方便自己时常复习,还有学习Oracle的...

  • Oracle笔记(一)

    Oracle笔记系列这几篇是来自一位老师的笔记,分享给大家放在简书上,主要方便自己时常复习,还有学习Oracle的...

  • Oracle笔记一

    1、密码设置:Lichao3140 超级管理员sys: 密码:change_on_install 管理员syst...

  • 相老师的OCP教程 1-5课文字版

    甲骨论相老师01课笔记 Oracle的学习软件:sqldeveloper。学习Oracle时一定要注重原理的学习,...

  • Oracle cursor学习笔记

    @[toc]最近在看《基于oracle的sql优化》一书,并做了笔记 一、oracle库缓存 1.1、库缓存简介 ...

  • Oracle笔记

    Oracle 视频里的三天课程简单笔记

  • 2020-03-17

    spark学习笔记centos安装Oracle VirtualBox: Centos安装Vagrant

网友评论

    本文标题:Oracle笔记一

    本文链接:https://www.haomeiwen.com/subject/smbelxtx.html