oracle各种指令(上课笔记)
oracle各种指令(上课笔记)
1.启动服务(必须要启动)
(1)listener
(2)数据库
注意:
E:\oracle\product\10.1.0\db_1\NETWORK\ADMIN
listener.ora
tnsnames.ora
2.sql plus
可视化工具
dos
3.三个系统帐号
sys chang_on_install 角色 sysdba system manage scott tiger (普通用户) conn 用来连接数据库 conn 用户名/密码@//ip/数据库名 conn scott/tiger@//192.168.41.2/niit conn 用户名/密码 conn 用户名/密码 as sysdba
4.oracle一些常用的命令
(1) conn:建立连接 (2) disconn:断开连接 (3) show user; 查看当前用户 (4) start或@ :用来执行文件里的语句 (5) edit :用来编辑一个文件 (6) passw:用来修改自己的密码 如果要修改别人的密码,必须用管理员的身份来登录 alter user scott identified by tiger; 给用户去解锁 alter user scott account unlock; (7) spool :将控制台中的内容输出到文件中去 spool d:\aa.txt 所有做的操作 spool off (8) &:与数据进行交互 select empno from emp where ename=&aa;
5.oracle中的数据类型
(1)字符类
char 2000个字符 一个中文占两个字符
长度是定长 char(15) 'niit' 用空格来补全
varchar2 4000个字符
变长 varchar2(36) 'niit' 32
clob 4G内容
(2)数值类型
number -10的38次方 10的38次方 整数和浮点
number(n[,m])
number(3) -999 999
number(5,3) -99.999 99.999
(3)日期类型
date 年月日时分秒
timestamp 毫秒
得到当前系统的时间
sysdate 日月年 01-1月-13
systimestamp
6.简单查询
(1) select * from emp; (2) select empno from emp where ename=&aa; (3) +-*/ 得到所有员工的年薪为多少 select sal*13 from emp; (4) as 起别名 select sal*13 年薪 from emp; (5) null值的处理 nvl(comm,0) select sal*13+nvl(comm,0) from emp; (6) 字符连接符|| select 'name is'||ename from emp; (7) and or select empno from emp where ename='dd' or 5>3; (8) in not in select sal from emp where sal in(1200,4500,1500); (9) between and (10) > >= < <= !=(<>) (11) like 模糊查询 % 表示有0到多个字符 _ 表示一个字符 找到所有员工名中有S 的员工的信息 select ename from emp where ename like '%S%'; select ename from emp where ename like '_O%'; (12) 排序 order by asc/desc select sal from emp order by sal;
8. 单行函数
(1) 数值函数 (a) abs(n); 绝对值 select abs(-9) from dual; 9 (b) ceil(n): 天花板 大于等于n的最小整数 select ceil(3.4) from dual; 4 (c) floor(n): 地板 小于等于n的最大整数 select floor(3.4) from dual; 3 (d) round(n,m) 四舍五入 select round(3.5),round(3.4) from dual; select round(333.35,1),round(343.33,-2) from dual; (e) trunc(n,m) 截取 select trunc(3.5),trunc(3.4) from dual; select trunc(333.35,1),trunc(353.33,-2) from dual; (2) 字符函数 (1)concat(char,char) 连接字符 select concat(ename,sal) from emp; (2) initcap(char) 首字母大写 select initcap(ename) from emp; (3) instr(char,char[,n,m]) 找子串下标 select instr('abcdsdgsd','a') from dual; select instr('abcdsdgsd','d',-1,3) from dual; (4) length(char) :返回字符串的长度 select ename from emp where length(ename)==4; (5) lower() 变成小写 (6) upper() 变成大写 (7) lpad() 左填充 (8) rpad() 右填充 select lpad(ename,10,'*') from emp; (9) trim() 去掉两端空格 select trim(' aa ') from dual; select trim('a' from 'aaabbbaaacccdddaaa') from dual; rtrim() ltrim() (10) substr(char,n,m) select substr('niit',1) from dual; (3) 日期和时间 (1)sysdate (2)systimestamp (3)add_months(sysdate,2) 加/减几个月。 select sysdate,add_months(sysdate,2),add_months(sysdate,-2) from dual; (4) alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; (5) months_between(d,d).相差的月份 oracle 31来计算 得到员工到目前为止干了多少个月 select months_between(hiredate,sysdate) from emp; (6) extract(year from d) year month day hour minute second select extract(year from sysdate) from dual; (7) last_day(d)得到日期中最后一天 (8) next_day();下一个工作日 (9) round :对日期四舍五入 (10)trunc :对日期截取 year month ,day select round(sysdate,'month') from dual; select trunc(sysdate,'month') from dual; yyyy 年 mm 月 dd 日 hh hh24 mi ss $ 表示美元 L 本地货币的表示 , 数值之间的分隔 . 小数分隔 9 表示数值 0 表示小数位 (4) 转换函数 to_char(c,format) select to_char(sysdate,'dd') from dual; select to_char(123456,'$999,999.99') from dual; $123,456 to_date('今天是2013年','"今天是"yyyy"年"') from dual; to_number() (5) 其它函数 nvl() decode(); if else if else if select decode(job,'CLERK',sal,'MANAGER',sal*1.2) from emp;
9.分组函数
count() 个数 sum() 求和 avg() 平均值 max() 最大值 min() 最小值 (1)各个部门的成员人数 group by 分组 select count(empno) from emp group by deptno; select deptno ,count(empno) from emp group by deptno; (2)得到每个部门的平均工资 select avg(sal) from emp group by deptno; 得到除了10号部门的平均工资 select deptno,avg(sal) from emp where deptno not in(10) group by deptno; select deptno,avg(sal) from emp where avg(sal) >=2000 group by deptno; (3) select deptno,avg(sal) from emp where deptno not in(10) group by deptno having avg(sal)>=800 order by avg(sal) asc; 1.where 过滤 一些记录 2.group by 分组 第二次记录 3.分组后的过滤 having 第三次记录 4.order by 排序