Oracle笔记

发布 2021-05-11 22:28:28 阅读 5251

第一课:客户端

命令行下:sqlplus 用户名:scott 密码:tiger,sqlplus scott/tiger

2.开始-运行-sqlplus 图形版的sqlplus

toad:管理 plsql developer

第二课:更改用户

sys/bjsxt as sysdba

user scott account unlock;(解锁)

第三课:table_structures

表名 * from 表名

第四课:select语句

ename, sal*12 annual_sal from emp;

select ename sal*12 "annual sal" from emp;

双引号可以保持原大小写,并且中间可以加空格,不加全变为大写

dual,select 2*3 from dual,dual是系统自带的一张空表,计算数据时可以使用该表

3.任何含有空值的算术表达式的计算结果是空值

ename||sal from emp; ename+sal

ename ||abcdefg' from emp; ename+abcdefg

ename ||abcd''efg' from emp;

当字符串中含有单引号时,可用两个单引号代表一个单引号 ename+abcd’efg

linesize 200;--用于设定每行显示的宽度

pagesize 30;--设置显示的页数

第五课:distinct 除重复。

distinct deptno from emp;

distinct deptno,job from emp;

第六课:where

* from emp where empno = 10;

* from emp where empno <>10; !10

* from emp where ename = hebe';

* from emp where sal (not) between 800 and 1500;

* from emp where comm is (not) null;

* from emp where ename (not) in ('smith','philip','jay');

* from emp where ename like '_a%';一个 % any

* from emp where ename like '_a%';系统默认转义符是\,可以自己指定转义符

* from emp where ename like '_a%' escape '$设$为转义符。

第七课:order by

* from dept;

* from dept order by dept desc;(默认为asc – 升序)

ename, sal, deptno from emp where sal > 2000 order by deptno asc,ename desc;

第八课:sql_function

ename,sal*12 annual_sal from emp where ename not like '_a%' and sal > 1500

order by sal desc;

lower(ename) from emp; to 小写。

ename from emp where lower(ename) like '_a%';

substr(ename,2,3) from emp;从第二字符截,一共截三个字符。

chr(65) from dual;结果为a ascii to 字符。

ascii('a') from dual;结果为65 字符to ascii

round(35.572) from dual;结果为36

round(35.572,2) from dual;结果为35.57

round(35.572,-1) from dual;结果为40

10. to_char函数。

select to_char(sal,'$99,999.9999') from emp;to_char函数主要用于对日期和数字进行格式化 to &1,234.5600

to_char(sal,'l99,999.9999') from emp;人民币符号¥,l代表本地符号。

birthdate from emp;

显示为:birthdate

22-3月-87

改为:select to_char(birthdate,'yyyy-mm-dd hh24:mi:ss') from emp;

显示为:1987-03-22 12:00:00

函数 select ename,birthdate from emp where birthdate > to_date('1987-3-22 11:22:33','yyyy-mm-dd hh24:

mi:ss');不能直接写birthdate>'1987-2-22 11:22:

33'会出现格式不匹配,因为表中格式为dd-mm月-yy,

14. to_number 函数。

select sal from emp where sal > to_number('$12,444.99','99,999.99');

ename, sal*12+nvl(comm,0) from 这样防止comm为空时,sal*12相加也为空的情况

第九课:group function 组函数

max(sal) from emp;

min(sal) from emp;

to_char(**g(sal), 999,999,999.99') from emp;

round(sum(sal),2) from emp;

count(*)from emp where sal > 1500;

count(comm) from emp; 非空。

count(distinct deptno) from emp; 非空非重复。

第十课:group by语句

**g(sal) from emp group by deptno;

deptno,**g(sal) from emp group by deptno;

deptno,job,max(sal) from emp group by deptno,job;

4.求薪水值最高的人的名称select ename,max(sal) from emp;出错,因为max只能有一个值但是等于max的值可能有好几个,不能匹配。

可以写成select ename from emp where sal=(select max(sal) from emp);

group by 语句应注意,出现在select中的字段,如果没有出现在组函数中,必须出现在group by语句中。

第十一课:h**ing对分组结果筛选

是对单条记录进行筛选,h**ing是对分组结果进行筛选

select **g(sal),deptno from emp group by deptno h**ing **g(sal) >2000;

2.查询工资大于2000的雇员,按照部门编号进行分组,分组后平均薪水大于1500,按工资倒序排列

select deptno,**g(sal) from emp where sal > 2000 group by deptno h**ing **g(sal) >1500 order by **g(sal) desc;

第十二课:子查询

语句中嵌套select 语句,求哪些人工资在平均工资之上。

select ename,sal from emp where sal > select **g(sal) from emp);

2.查找每个部门挣钱最多的那个人的名字。

select ename, deptno from emp where sal in (select max(sal) from emp group by deptno) 查询会多值。正确写法是:

应把select max(sal),deptno from emp group by deptno当成一个表,语句如下:

select ename,sal from emp join (select max(sal) max_sal,deptno from emp group by deptno) t on ( and =

oracle笔记

1 查看表的结构 desc tabledescription 2 set timing on 打开操作表的时间记录。3 消除重复行 distinct 4 大小写不区分的是列名,而不是里面的数据。1 可以对某一列直接进行加减乘除。两列相加。2 如果有一列为null,所得结果也为空。使用nvl函数处理n...

Oracle笔记

第1页1.oracle 的使用 1.1.sqlplus 的命令 初始化表的位置 set nls lang american 设置编码才可以使用下面脚本 cd oracle home rdbms cd demo 我们目前使用的是oralce 9i 9201 版本 select from v versi...

oracle笔记

clear 清屏。col title for a20 设置title的字符最多有20个。oracle介绍。rdbsrdb 基本的存储结构是,二维表。表头。行。列。字段。sql的分类 dsl 关键字 select dml 操作 insert delete update ddl 定义 create dr...