Oracle数据库基础知识点


--------------------------------------------------------------------------------------------------------

简介:

Oracle数据库(Oracle Database),简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。

Oracle数据库:

一、oracle数据库的安装:

       oracle官网下载数据库安装包,两个全下载......
       解压:将下载的两个包一起同时解压到一个包中(否则安装不成功);
       安装:steup.exe双击就可以安装

      

二、 安装成功之后需要解锁   
 1)开始----cmd窗口输入   sqlplus / as sysdba   出现一段文字 ,有连接到表示连接成功。
 2)解锁----连接成功后 sql>alter user scott(用户) account unlock;   
 3)修改密码 --用户解锁成功后修改密码   alter  user scott identified by 新密码

 4)用客户端工具连接oracle数据库就可以使用。
      oracle自带的客户端工具:DOS版的sql plus/ 界面版的叫sqldeveloper/第三方:PLSQLdeveloper


三、使用客户端连接oracle————下载客户端工具
 解压后在bin目录找到sqldeveloper.conf去设置 SetJavahome ;
 打开输入连接参数:
      连接名:无所谓
      用户名:别人给的
      密码: 别人给的
      主机名:本地localhost    其他机器就是其他机器的ip地址(注意这是需要设置的,设置oracle的监听)
      端口:安装时有提示,一般不去改他。1521
      sid:默认的orcl.


四、oracle的数据类型
 1、 数字型:number(p,s);  p表示总位数   s表示小数位
                      sal(变量名)  number(8,2),表示整数位6位,小数位2位,若没有指定s或s为0,则表示整数
 2、char(N):表示固定字节的字符型。比如 job(变量名)  char(20)表示20个字节,占用的空间就20个。
                     虽然有时字节没有占到20个字节,但是在内存中的空间就是20 ,是固定的。
                     ----------最大限度不超过2000
 3、varchar2(N):表示可变长度的字符型。
                     例:job varchar2(20),表示最大长度是20,实际数据多少就占用多少空间
                     ----------最大限度不超过4000
 4、 long和clob
         long可以认为是varchar的加长版,存变长,最大2G。
         long的不足:(基本不用)
        每一张表只能出现一个long类型的
        不能是主键
        不能建立索引
        不能出现在查询条件中

        clob存储可以是定长也可以是变长,最大4GB。一般用clob代替long    

注意: char和varchar的区别
     ① char :定长,达不到定长长度空格补齐;   浪费空间换取查询效率。
         varchar2:变长,实际数据多少就多少;    节约空间但是比char查询效率低。   

     ② char可以不指定长度,默认一个字节。varchar必须指定长度。

     ③ 字符串的字符编码:
          字符串存储长度都是按字节计算的。
          每一个英文在数据库中占一个字节。
          中文:GBK  2个     UTF-8:2-4个字节

 4、date:定义日期时间格式的数据,长度默认7个字节  格式:默认格式是:DD(日)-MON(月)-RR(年)  
     例:heridate date 表示时间。


五、Oracle函数操作

1、字符串的函数操作
 1.1、字符串拼接函数concat和 ||
          concat 例句:select concat(concat(ename,':'),sal)from emp;

                 ||  例句:select ename||':'||sal||':'||mgr from emp;

          注意:concat只能用于两个字符串的拼接,若要拼接第三个,则需要用到两个concat,如上例句

                     concat()用于字符串的拼接,但多个拼接比较繁琐,建议用字符串拼接符号||


 1.2、length()返回字符串的长度,varchar返回实际长度,char返回的是定长。

         例:select ename,length(ename)from emp;

         注意:如果字符串中有中文,也将中文的字节长度返回。

 1.3、将字符串中的字母进行转换(dual:伪表)
         upper():将字符串所有字母转大写——select upper('hello world') from dual;
         lower():将所有字符串转成小写——select lower('HELLO WORLD') from dual;
         initcap():将所有的字符串单词的首字母转大写——select initcap('hello world') from dual;
         注意:函数中间是单引号,不能写双引号
 1.4、--trim()函数用于截去字符串,如果没有给定截去字符,则截去空格
            select trim('e'from'eelitee')as t1 from dual;-----结果-----lit
         --ltrim()函数用于截去左边的字符串,如果没有给定截去字符,则截去空格
            select ltrim('eelitee','e')as t2 from dual;-----结果-----litee
         --rtrim()函数用于截去右边的字符串,如果没有给定截去字符,则截去空格
            select rtrim('eelietee','e')as t3 from dual;-----结果------eeliet
         --将上面三个函数整合到一张表中,分别用别名显示在表中的字段
            select trim('m'from'museum')as t1,ltrim('museum','m')as t2,rtrim('museum','m')as t3 from dual;


           

 1.5、补位函数 pad 有左补位lpad()和右补位rpad();
          select rpad(ename,10,' '),lpad(sal,6,'$') FROM emp;
 1.6、截取字符串中字串函数substr()
          将字符串从m位开始,截取n个字符串,注意字符串首位从1开始,空格也算上去截取的
          m为0直接从字符串首位开始,m为负数从字符串尾部开始,n大于字符串长度,直接截取到字符串的尾部。

          例:--截取字符串中的字串
                select substr('doctor who travels tradis',0,24) from dual;-----结果-----doctor who travels tradis
                 --将字符串chinasofti中的softi截取出来
                select substr('chinasofti',6,10)as s from dual;------结果------softi

 1.7、instr()函数用来返回指定字符串在源字符串中的位置,注意字符串首位从1开始,空格也算上去截取的

          例:select instr('doctor who travels tradis','who')as indext from dual;-----结果-----8
         

2、数值操作函数

2.1、number(p):表示数值类型,p表示整数位也表示数值的总位数,取值的范围是1-38.----用来存id 年龄等数字
        number(p,s):p表示总位数(包括s),取值1-38,s表示小数后面的位数。---用来存金额。
               注意:如果指定是s,没有指定p,p默认就是38位


2.2、round(n,m)对数值进行四舍五入操作
    SELECT ROUND(46.768,2) FROM DUAL;--46.77
    SELECT ROUND(46.768,1) FROM DUAL;--46.8
    SELECT ROUND(46.768,0) FROM DUAL;--47
    SELECT ROUND(46.768,-1) FROM DUAL;--50
    m必须是整数,默认的是0.可以是负数也可以正数,表示小数点后第几位
    
  2.3TRUNC()函数用于截取数字(舍弃)
    SELECT TRUNC(46.768,2) FROM DUAL; --46.76
    SELECT TRUNC(46.768,1) FROM DUAL; --46.7
    SELECT TRUNC(46.768) FROM DUAL; --46  不写相当于默认就是0
    SELECT TRUNC(46.768,-2) FROM DUAL; --0
    
  2.4MOD()函数用于取模
    SELECT ENAME,SAL,MOD(SAL,1000) AS RESULT FROM EMP;--表示m取模于n后的结果
    SELECT ENAME,SAL,MOD(SAL,0)AS RESULT FROM EMP;--如果n为0,直接返回m
    
  2.5CEIL()/FLOOR()取天花板或地板函数
    SELECT CEIL(46.768)AS RESULT FROM DUAL;--47取比当前小数大的整数   
    SELECT FLOOR(46.768)AS RESULT FROM DUAL; --46取比当前小数小的整数


3、 Oracle日期操作
 

3.1、日期类型:date内部7个字节   分别表示 世纪 年 月 日 时 分 秒
                          timestamp  时间戳 最大精度达到11个字节,前7位于date相同,8-11表示纳秒,4个字节存储
                
        日期关键字:sysdate 用于获取系统时间,精确到时分秒,但是只显示年月日
                              可以将sysdate作为某一列的默认值也可以作为新值插入到表中
                              systimestamp也是Oracle的内部日期函数,返回当前系统日期和时间,精确到毫秒。
  

3.2、日期转换函数

——字符串转为日期
    查询2002以前入职的员工
    TO_DATE()将给定的字符串以指定的格式进行转换
    SELECT ENAME,HIREDATE FROM EMP WHERE HIREDATE<TO_DATE('2002-01-02','YYYY-MM-DD');

——日期转换为字符串
      to_char()是将日期按照指定的格式转换成字符串
    将此时的系统时间转换为  xxxx年xx月xx日 xx时xx分xx秒
    SELECT TO_CHAR(SYSTIMESTAMP,'YYYY"年"mm"月"dd"日"hh24"点"mi"分"ss"秒"day')FROM DUAL;

3.3、日期常用函数
—— last_day();
    返回当月的最后一天
    SELECT LAST_DAY(SYSDATE) FROM DUAL;
    指定返回15年2月份的最后一天是多少
    SELECT LAST_DAY('01-2月-15')FROM DUAL;
    
——add_monthS(DATE ,I)
    I可以正数也可以是负数也可以是小数,小数位自动舍弃,正数往后,负数往前
    查询员工入职后的20周年纪念日。
    SELECT ENAME,ADD_MONTHS(HIREDATE,20*12)AS A FROM EMP;
    计算3个月后的今天是哪一天,星期几?
    SELECT TO_CHAR((ADD_MONTHS(SYSDATE,-10*12)),'YYYY-MM-DD DAY')FROM DUAL;

——months_between()
    返回两个日期之间间隔的月数, 如果间隔的月之间不为整数就返回小数,第二个参数比第一个参数时间

晚的话会返回一个负数     
    select ename, months_between(hiredate,sysdate)hiredate from emp;
    
——next_day()
    查询下个礼拜几是哪一天, 中间参数在中文环境可以写中文,英文环境下要写英文的星期几,
    嫌麻烦的可以采用数字来1-7代替,注意1表示的星期天,7表示的星期六
    下个礼拜三是哪一天
    SELECT TO_CHAR((NEXT_DAY(SYSDATE,'星期三')),'YYYY-MM-DD DAY')AS NEXTWEEK FROM DUAL;
    下个礼拜四是哪一天
    SELECT TO_CHAR((NEXT_DAY(SYSDATE,5)),'YYYY-MM-DD DAY')AS NEXTWEEK FROM DUAL;

注意:如果还未过本周的周四,那么显示的是本周周四
    
——比较函数:least()
*参数类型必须匹配,如果后面参数类型,不同于前面的参数的数据类型,会做自动转换,能转换就比较,
不能转换就报错。但自动转换要注意符合前面参数的格式
    比较后,哪个小返回哪个。
    SELECT LEAST(SYSDATE,'09-9月-16')FROM DUAL;

——extract():抽取或提取
    从当前的系统时间中提取今年的数字
    SELECT EXTRACT(YEAR FROM SYSDATE)AS YEAR FROM DUAL;
    从指定的时间中获取hour
    SELECT EXTRACT(HOUR FROM TIMESTAMP'2016-10-10 15:35:23)FROM DUAL;



4、空值操作
    含义:表示未知或暂时不存在的  即null
    
    4.1、向表中插入空值 ----不能违反非空约束
       显示插入:null
       隐式插入:不给值 (把其他字段插入值进去,该字段不给值,默认就是空值)
    
    4.2、更新空值
        注意:更新空值时,要加上条件限制, 否则会将数据库表中该列中所有的字段值更新为null,   
             在更新为null值的时候,也不能违反非空约束
            
    4.3、非空条件查询  is  null , is not null;        
    查询上司为null的记录
    SELECT * FROM EMP WHERE MGR IS NULL;
    查询上司不为null的记录。
    SELECT * FROM EMP WHERE MGR IS NOT NULL;    
    
    4.4、非空约束    
    非空(NOT NULL)约束是约束条件的一种,
    用于确保数据表中某个字段值不为空。    
    4.5、空值函数
    NVL(E1,E2):如果e1字段的值为null,那就用e2去替换,但是确保e2和E1的数据类型的一致。
    SELECT empno,ename,comm,sal+NVL(comm,0)as esal from  emp WHERE ename='zhangsan';
    NVL2(e1,e2,e3):判断e1是null还是非空,如果是null,返回e3,如果不是null返回e2
    SELECT empno,ename,comm,nvl2(comm, comm+sal,sal)AS ESAL from emp where ename='zhangsan';    
            




  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值