iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle数据基础(一)
  • 733
分享到

Oracle数据基础(一)

2024-04-02 19:04:59 733人浏览 薄情痞子
摘要

一. Oracle字符串操作字符串类型    1. CHAR和VARCHAR2类型          表示字符串数据

一. Oracle字符串操作

字符串类型

    1. CHAR和VARCHAR2类型

          表示字符串数据类型,用来在表中存放字符串信息;

          CHAR存放定长字符,即存不满补空格(浪费空间,节省时间);VARCHAR2存放变长字符,存多少占用多少(浪费时间,节省空间);

          按照字符的自然顺序排序


    2. CHAR和VARCHAR2的存储编码

          默认单位是字节,可指定为字符

               — CHAR(10),等价于CHAR(10 BYTE)

               — 指定单位为字符:CHAR(10 CHAR),20个字节

               — VARCHAR2(10),等价于VARCHAR2(10 BYTE)

               — 指定单位为字符:VARCHAR2(10 CHAR),20个字节

          每个英文字符占用一个字节,每个中文字符按编码不同,占用2-4个字节

               — ZHS16GBK:2个字节

               — UTF-8:2-4个字节

 

   3. CHAR和VARCHAR2的最大长度

          CHAR最大取值为2000字节,最多保存2000个英文字符

          VARCHAR2最大取值为4000字节

          CHAR可以不指定长度,默认为1,VARCHAR2必须指定长度


    4. LONG和CLOB类型

          LONG:VARCHAR2加长版,存储变长字符串,最多达2GB的字符串数据

          LONG有诸多限制:每个表只能有一个LONG类型列;不能作为主键;不能建立索引;不能出现在查询条件中

          CLOB:存储定长或变长字符串,最多达4GB的字符串数据

          oracle建议开发中使用CLOB替代LONG类型


字符串函数

    1. CONCAT和“||”

          CONCAT(char1, char2);

               — 返回两个字符串连接后的结果,两个参数char1,char2是要连接的两个字符串

          等价操作:连接操作符“||”

          如过char1和char2任何一个为NULL,相当于连接了一个空格

          “||”在数据库中是连接字符串,相当于java中的“+”,注意和java“||”区分

          eg:

               java中:”hello” + “world” ==> “helloworld"

               DB中:’hello’||’world’ ==> ‘hello world'

               oracle中:CONCAT(‘hello’,’world’) ==> ‘hello world'


    2. FROM DUAL(虚表)

          DUAL:虚表,没有这么一个表,只为了满足SELECT的语法要求。

               — 我们常用虚表来测试表达式的结果。

               — 在数据库中,我们想测试某个表达式的结果只能使用SELECT语句来实现

               — 什么时候使用虚表:当SELECT语句中没有任何表中的字段参与时

               — eg: 假设表emp中name和sal两个字段存储的内容分别是名字和薪资

                    SELECT name||’:’||sal FROM emp

                    则所得结果为:boss:5000


    3. LENGTH

          LENGTH(char):用于返回字符串的长度

          如果字符类型是VARCHAR2,返回字符的实际长度,如果字符类型是CHAR,长度还要包括后补的空格

          eg: SELECT name,LENGTH(name) FROM emp;

               所得结果:boss 4(name为CHAR)


    4. UPPER,LOWER和INITCAP

          大小写转换函数,用来转换字符的大小写

          UPPER(char)用于将字符转换为大写形式

          LOWER(char)用于将字符转换为小写形式

          INITCAP(char)用于将字符串中每个单词的首字符大写,其它字符小写,单词之间用空格和非字母字符分隔

          如果熟人的参数是NULL值,仁返回NULL值


    5. TRIM,LTRIM,RTRIM

          作用:截去子串

          语法形式:

               — TRIM(c2 FROM c1)从c1的前后截去c2

               — LTRIM(c1[, c2])从c1的左边(Left)截去c2

               — RTRIM(c1[, c2])从c1的右边(Right)截去c2

               如果没有c2就去除空格

               eg:SELECT TRIM(‘e’ from ‘eeeeliteeee’) FROM DUAL;

          参数中from前面只能是单一字符

          若没有from以及前面的字符,则是去除空白

               eg:SELECT LTRIM(‘eeeeliteeee’,’e’) FROM DUAL;

                      SELECT RTRIM(‘eeeliteee’,’e’) FROM DUAL;

          不指定第二个参数,默认是去除空白


    6. LPAD, RPAD

          补位函数,用于在字符串char1的左端或右端用char2补足到n位,char2可重复多次

          — LPAD(char1, n, char2)左补位函数

          — RPAD(char1, n, char2)右补位函数

          在emp表中使用左补位,将sal用$补齐20位

               eg:SELECT name, LPAD(sal, 20, ‘$’) as “salary” FROM emp;

               作用:要求显示20个字符,若sal的值不足长度,则补充若干个’$’,以达到20个字符

               eg:SELECT RPAD(‘aaaaAAAAA’) FROM DUAL;

               得到结果为aaaaA


    7. SUBSTR

          SUBSTR(char, [m[, n]])

               — 用于获取字符串的子串,返回char中从m位开始取n个字符

          如果m=0,则从首字符开始,如果m取负数,则从尾部开始

          如果没有设置n,或者n的长度超过了char的长度,则取到字符串末尾为止

          字符串的首位计数从1开始


    8. INSTR

          INSTR(char1, char2[, n [, m]]);

               返回子串char2在原字符串char1中的位置

          参数:

               — 从n的位置开始搜索,没有指定n,从第一个字符开始搜索

               — m用于指定子串的第m次出现次数,如果不指定取值1

               — 如果在char1中没有找到子串char2,返回0


二. Oracle数值操作

数值类型

    1. NUMBER(P)表示整数

          完整语法:NUMBER(precision, scale)

               — 如果没有设置scale,则默认取值0,即NUMBER(p)表示整数

               — P表示数字的总位数,取值为1-38

          用来在表中存放如编码,年龄,次数等用整数记录的数据


    2. NUMBER(P, S)表示浮点数

          NUMBER(precision, scale)

               — precision:NUMBER可以存储的最大数字长度(不包括左右两边的0)

               — scale:在小数点右边的最大数字长度(包括左侧0)

          指定了s但是没有指定p,则p默认为38

          经常用于表中存放金额,成绩等有小数的数据。

          NUMBER的变种数据类型:内部实现是NUMBER,可以将其理解为NUMBER的别名,目的是多种数据库及编程语言兼容

               — NUMERIC(p, s):完全映射至NUMBER(p, s)

               — DECIMAL(p, s)或DEC(p, s):完全映射至NUMBER(p, s)类型

               — INTEGER或INT:完全映射至NUMBER(38)类型

               — SMALLINT:完全映射至NUMBER(38)类型

               — FLOAT(b):映射至NUMBER类型

               — DOUBLE PRECISION:映射至NUMBER类型

               — REAL:映射至NUMBER类型


数值函数

    1. ROUND

          ROUND(n[, m]):用于四舍五入

               — 参数中的n可以是任何数字,指要被处理的数字

               — m必须是整数

               — m取正数则四舍五入到小数点后第m位

               — m取0值则四舍五入到整数位

               — m取负数,则四舍五入到小数点前m位

               — m缺省,默认是0

               eg:SELECT ROUND(45.678, -1) FROM DUAL; —50


    2. TRUNC

          TRUNC(n[, m]):用于截取

               — n和m的定义和ROUND(n[, m])相同,不同的是功能上按照截取的方式处理数字n

               eg:SELECT TRUNC(45.678, -1) FROM DUAL; —40


    3. MOD

          MOD(m, n):返回m除以n后的余数

               —n为0则直接返回m


    4. CEIL和FLOOR

          CEIL(n),FLOOR(n)这两个函数,一个是取大于或等于n的最小整数值,另一个是取小于或等于n的最大整数值

          eg:SELECT CEIL(45.678) FROM DUAL; —46

                  SELECT FLOOR(45.678) FROM DUAL; —45


三. Oracle日期操作

日期类型

    1. DATE

          ORACLE中最常用的日期类型,用来保存日期和时间

          DATE表示的日期范围可以是公元前4712年1月1日至公元9999年12月31日

          DATE类型在数据库中的存储固定为7个字节,格式为:

               — 第一个字节:世纪+100

               — 第二个字节:年

               — 第三个字节:月

               — 第四个字节:天

               — 第五个字节:小时+1

               — 第六个字节:分+1

               — 第七个字节:秒+1


    2. TIMESTAMP

          ORACLE常用的日期类型

          与DATE的区别是不仅可以保存日期和时间,还能保存小数秒,最高精度可以到ns(纳秒)

          数据库内部用7或者11字节存储,精度为0,用7字节存储,与DATE功能相同,精度大于0则用11字节存储

          格式为:

               — 第1字节-第7字节:和DATE相同

               — 第8-11字节:纳秒,采用4个字节存储,内部运算类型为整型


日期关键字

    1. SYSDATE

          其本质是一个ORACLE的内部函数,返回当前的系统时间,精确到秒

          默认显示格式是DD-MON-RR


    2. SYSTIMESTAMP

          内部函数,返回当前系统日期和时间,精确到毫秒


日期转换函数

    1. TO_DATE

          TO_DATE(char[, fmt[, nlsparams]]):将字符串按照定制格式转换为日期类型

               — char:要转换的字符串

               — fmt:格式

               — nlsparams:指定日期语言

               — 常用的日期格式见表


YY2位数字的年份
YYYY4位数字的年份
MM2位数字的月份
MON简拼的月份
MONTH全拼的月份
DD2位数字的天
DY周几的缩写
DAY周几的全拼
HH2424小时制的小时
HH1212小时制的小时
MI显示分钟

SS

显示秒

          

    2. TO_CHAR

          将其它类型的书籍转换为字符类型

          TO_CHAR(date[, fmt[, nlsparams]]):将日期类型数据date按照fmt的格式输出字符串。nlsparams用于指定日期语言

          需要注意的是:在日期格式字符串中,出现的非关键字符或符号的其它字符时,需要使用双引号

               eg:SELECT TO_CHAR(SYSDATE, “yyyy”year”mm”month”dd”day”hh:mi:ss”) FROM DUAL;

          两个日期可以进行减法操作,差为相差的天数


日期常用函数

    1. LAST_DAY

          LAST_DAY(date):返回日期date所在月的最后一天

          在按照自然月计算某些业务逻辑,或者安排月末周期性活动时很有用处

          eg:SELECT LAST_DAY(SYSDATE) FROM DUAL;  —30-9月-17

                    SELECT LAST_DAY(’20-2月-09’) FROM DUAL; —28-2月-09


    2. ADD_MONTHS

          ADD_MONTHS(date, i):返回日期date加上i个月后的日期值

               — 参数i可以是任何数字,大部分时候取正值整数

               — 如果i是小数,将会被截取整数后再参与运算

               — 如果i负数,则获得的是减去i个月后的日期值

               eg:计算职员入职20周年纪念日

                      SELECT name, ADD_MONTHS(hiredate, 20 * 12) as ‘20周年’ FROM emp;


    3. MONTHS_BETWEEN

          MONTHS_BETWEEN(date1, date2):计算date1和date2两个日期值之间间隔了多少个月

          实际运算是date1-date2,如果date2时间比date1晚,会得到负值

          除非两个日期间隔是整数月,否则会得到带小数位的结果。

               — 此时可以使用FLOOR得到整月

                    eg:SELECT name, FLOOR(MONTHS_BETWEEN(SYSDATE, hiredate)) FROM emp;


    4. NEXT_DAY

          NEXT_DAY(date, char):返回date日期数据的下一个周几,周几是由参数char来决定的

          在中文环境下,直接使用“星期三”这种形式,英文环境下,需要使用“WEDNESDAY”这种英文的周几。位避免麻烦,可以直接使用1-7表示周日-周六

          NEXT_DAY不是明天

          SELECT NEXT_DAY(SYSDATE, 3) FROM DUAL;  —离现在最近的周2(不包含今天)


    5. LEAST, GREATEST

          GREAGEST(expr1[, expr2[, expr3]]...)

          LEAST(expr1[, expr2[,expr3]]...)

          也被称作比较函数,可以有多个参数值,返回结果是参数列表中最大或最小的值

          参数类型必须一致

          在比较之前,在参数列表中第二个以后的参数会被隐含的转换为第一个参数的数据类型,所以如果可以转换,则继续比较,如果不能转换将会报错。


    6. EXTRACT

          EXTRACT(date FROM datetime):从参数date time中提取参数date指定的数据,比如提取年,月,日

          eg:SELECT EXTRACT(HOUR FROM TIMESTAMP ‘2008-01-01 10:10:10’) FROM DUAL;


四. 空值操作

NULL的含义

          数据库里的重要概念:NULL,即空值

          有时表中的某些字段值,数据未知或暂时不存在,取值NULL

          任何数据类型均可取值NULL

NULL的操作

    1. 插入NULL值和更新成NULL时只有在非空约束时才可操作

          查询条件:WHERE name IS NULL/ WHERE name IS NOT NULL

          任何数据和NULL相加都是NULL


    2. 非空约束

          非空(NOT NULL)约束用于确保字段值不为空

          默认情况下,任何列都允许有空值

          当某个字段被设置了非空约束条件,这个字段中必须存在有效值。


空值函数

    1. NVL

          NVL(expr1, expr2):将NULL转变为非NULL值

               — 如果expr1为NULL,则取值expr2,expr2是实际值

               — expr1和expr2可以是任何数据类型,但两个参数的数据类型必须是一致的

    2. NVL2

          NVL2(expr1, expr2, expr3):和NULL函数功能类似,都是将NULL转变为实际值

          NVL2用来判断expr1是否为NULL,如果不是NULL,返回expr2,如果是NULL,返回expr3


您可能感兴趣的文档:

--结束END--

本文标题: Oracle数据基础(一)

本文链接: https://www.lsjlt.com/news/51609.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle数据基础(一)
    一. Oracle字符串操作字符串类型    1. CHAR和VARCHAR2类型          表示字符串数据...
    99+
    2024-04-02
  • Oracle基础(一)
          数据库系统:     微软的SQL  server ,  IBM的DB2, 甲骨文公司的Ora...
    99+
    2024-04-02
  • Python基础学习教程:Python基础之基本数据类型(一)
    Python基础学习教程:Python基础之基本数据类型(一)...
    99+
    2023-06-02
  • Oracle 数据块体系基础知识概述
    <div style="font-family:微软雅黑;font-size:14px;line-height:21px;white-space:normal;widows:auto;bac...
    99+
    2024-04-02
  • 基础数据类型
    计算机处理不同的数据需要定义不同的数据类型。改变数字数据类型的值,意味着要重新分配内存空间用来存储新的数值。 int,整数包含正整数和负整数,32位和64位系统的取值范围不同。32位系统的取值范围:-2**31 ~ 2**31-164位系...
    99+
    2023-01-30
    数据类型 基础
  • 【MySQL】数据库基础
    文章目录 1. 登陆选项的认识2. 什么是数据库3. 存储数据为什么不用文件?4. 见一见数据库创建数据库创建表 5. SQL语句分类6. 查看MysQL存储引擎 1. 登陆选项的认识...
    99+
    2023-10-18
    数据库 mysql
  • 万恶之源 - Python基础数据类型一
    整数 整数在Python中的关键字用int来表示; 整型在计算机中运于计算和比较 在32位机器上int的范围是:  -2**31~2**31-1,即-2147483648~2147483647 在64位机器上int的范围是: -2**6...
    99+
    2023-01-30
    万恶 之源 数据类型
  • python基础-函数(一)--pyth
    python基础---函数(一) 目录 python基础---函数(一)1.函数的定义2.函数 的参数详解3.return4.lambda匿名函数 1.函数的定义 function 功能,函数 函数就是对代码进行一个封装,把实现某...
    99+
    2023-01-31
    函数 基础 python
  • Oracle数据类型解析:从基础到进阶
    Oracle数据类型解析:从基础到进阶 Oracle数据库是一款强大的关系型数据库管理系统,广泛应用于企业级应用程序开发和数据存储中。在Oracle数据库中,数据类型是非常重要的概念,...
    99+
    2024-03-07
    数据类型 oracle 进阶
  • Python3基础数据类型
    Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。等号(=)用来给变量赋值。等号(=)运算符左边是...
    99+
    2023-01-31
    数据类型 基础
  • python3--基础数据类型
    python基础二(基础数据类型)1.什么是数据  x=10,10是我们要存储的数据2.为何数据要分不同的类型  数据是用来表达状态的,不同的状态就应该用不同的类型数据去表示3.数据类型数字,字符串,列表,元组,字典,集...
    99+
    2023-01-30
    数据类型 基础
  • 网络基础-数据包
    目录前言数据包简要生命周期理解区数据包前言 本笔记通过记录 数据包 在网络中的生命履历来引出一些网络基础知识,如: MAC、ARP、IP、子网掩码、网关、集线器、交换机、路由器这些概...
    99+
    2024-04-02
  • python 基础 数据类型
    1、变      量:变量是计算机内存中的一块儿区域,变量可以存储规定范围内的值,而且值可以改变。  范    例: a a1 a_ a_1     变量命名:变量名有字母、数字、下划线组成;                      数字...
    99+
    2023-01-31
    数据类型 基础 python
  • python数据分许基础
    【单选题】【单选题】下列关于数据和数据分析的说法正确的是( ) A、数据就是数据库中的表格B、文字、声音、图像这些都是数据C、数据分析的数据只能是结构化的D、数据分析不可能预测未来几天的天气变化 正确答案: B :文字、声音、图像这些都是数...
    99+
    2023-10-24
    python 开发语言 数据分析
  • Python基础--数据类型
    Numbers数字 String字符串 Bool布尔型 List列表 # List列表,支持字符,数字,字符串以包含列表(即嵌套),用[]标识,有序对象 x5 = [1,'a',2.4,502.2,[1,2,3]] print(x5,...
    99+
    2023-01-30
    数据类型 基础 Python
  • 【MySQL】 MySQL数据库基础
    文章目录 🐱‍👓数据库的操作📌显示当前的数据库📌创建数据库🎈语法:🎈语法说明🎈示...
    99+
    2023-09-18
    数据库 mysql 基础操作 oracle
  • python基础(一)
    1.计算机是由什么组成的 CPU、内存、硬盘、输入输出设备 CPU 处理各种数据 相当于人的大脑 内存 存储临时数据 相当于人的临时记忆 硬盘 存储数据 相当于人的...
    99+
    2023-01-30
    基础 python
  • Python--基础一
    Python基础:print & input & 变量 & 运算符 & Python数据类型 & 运算符与表达式 注释 单行注释 #我注释了一行 多行注释 三个单引号'''括起来 ''' 我...
    99+
    2023-01-30
    基础 Python
  • python基础一
    1989年的圣诞节期间,吉多·范罗苏姆为了打发时间,决心开发一个新的解释程序。 1991年,第一个Python解释器诞生,它是用C语言实现的,并且能调用C语言的库文件。 计算机不能直接理解任何除机器语言以为的语言,所以必须要把程序员所...
    99+
    2023-01-30
    基础 python
  • python 基础(一)
    第一个程序hello.py 以下为内容#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'teng' print 'hello'#!/usr/bin/env python表示...
    99+
    2023-01-31
    基础 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作