oracle各种指令(上课笔记)(一)

2014-11-24 15:21:26 · 作者: · 浏览: 2
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(yea