马士兵oracle笔记

发布 2021-05-11 23:55:28 阅读 3922

第一课:客户端。

1. sql plus(客户端),命令行直接输入:sqlplus,然后按提示输入用户名,密码。

2. 从开始程序运行:sqlplus,是图形版的sqlplus.

3. http://localhost:5560/isqlplus

toad:管理, plsql developer:

第二课:更改用户。

1. sqlplus sys/bjsxt as sysdba

2. alter user scott account unlock;(解锁)

第三课:table structure

1. 描述某一张表:desc 表名。

2. select * from 表名。

第四课:select 语句:

1.计算数据可以用空表:比如:.select 2*3 from dual

ename,sal*12 annual_sal from emp;与select ename,sal*12 "annual sal" from emp;区别,加双引号保持原大小写。不加全变大写。

3. select ename ||abcd" 如果连接字符串中含有单引号,用两个单引号代替一个单引号。

第五课:distinct

select deptno from emp;

select distinct deptno from emp;

select distinct deptno from emp;

select distinct deptno ,job from emp

去掉deptno,job两者组合的重复。更多的项,就是这么多项的组合的不重复组合。

第六课:where

select * from emp where deptno =10;

select * from emp where deptno <>10;不等于10

select * from emp where ename ='bike';

select ename,sal from emp where sal between 800 and 1500 (>800 and <=1500)

空值处理:select ename,sal,comm from emp where comm is (not) null;

select ename,sal,comm from emp where ename ( not)in ('smith','king','abc');

select ename from emp where ename like '_a%';代表一个字母,%代表0个或多个字母。 如果查询%

可用转义字符。\%还可以用escape '$比如:select ename from emp where ename like '%a%' escape '$

第七课: orderby

select * from dept;

select * from dept order by dept desc;(默认:asc)

select ename,sal,deptno from emp order by deptno asc,ename desc;

第八课: sql function1:

select ename,sal*12 annual_sal from emp

where ename not like '_a%' and sal>800

order by sal desc;

select lower(ename) from emp;

select ename from emp

where lower(ename) like '_a%';等同于。

select ename from emp where ename like '_a%' or ename like '_a%';

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

select chr(65) from dual 结果为:a

select ascii('a') from dual 结果为:65

select round(23.652,1) from dual; 结果为: 23.7

select round(23.652,-1) from dual; 20

select to_char(sal,'$99_999_999') from emp;

select to_char(sal,'l99_999_999') from emp;人民币符号,l:代表本地符号。

这个需要掌握牢:

select birthdate from emp;

显示为:birthdate

17-12月-80

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

显示:birthdate

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; /也可以改为:hh12

to_char(sysdate,'yy

to_date函数:

select ename,birthdate from emp where birthdate > to_date('1981-2-20 12:34:56','yyyy-mm-dd hh24:

mi:ss');

如果直接写 birthdate>'1981-2-20 12:34:56'会出现格式不匹配,因为表中的格式为: dd-mm月-yy.

select sal from emp where sal>888.88 无错。但。

select sal from emp where sal>$1,250,00;

会出现无效字符错误。

改为:select sal from emp where sal>to_number('$1.250.00','9,999,99');

把空值改为0

select ename,sal*12+nvl(comm,0) from emp;

这样可以防止comm为空时,sal*12相加也为空的情况。

第九课: group function 组函数。

max,min,**g ,count,sum函数。

select to_char(**g(sal),'99999999,99') from emp;

select round(**g(sal),2) from emp;

结果:2073.21

select count(*)from emp where deptno=10;

select count(ename) from emp where deptno=10; count某个字段,如果这个字段不为空就算一个。

select count(distinct deptno) from emp;

select sum(sal) from emp;

第十课: group by语句。

需求:现在想求,求每个部门的平均薪水。

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

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

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

求薪水值最高的人的名字。

select ename,max(sal) from emp;出错,因为max只有一个值,但等于max值的人可能好几个,不能匹配。

应如下求:select ename from emp where sal=(select max(sal) from emp);

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...