当前位置:数据库 > Oracle >>

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 排序

 

 
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,