Oracle数据类型,DDLDMLDCLTCL语言,SQL操作符,SQL函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle数据类型,DDLDMLDCLTCL语言,SQL操作符,SQL函数相关的知识,希望对你有一定的参考价值。

SQL查询与SQL函数

  本章目标

    了解Oracle数据类型

      了解数据定义语言和数据操纵语言

      了解事务控制语言数据控制语言

      掌握SQL操作符和SQL函数

 

      SQL(structured query language)--结构化查询语言

       通过SQL可以实现与Oracle服务器的通信

       SQL是数据库语言,Oracle使用该语言存储和检索信息

          表是主要的数据库对象,用于存储数据

  

    用户  --------------------发送SQL语句查询------------------------->服务器

      用户  <-------------发送命令输出结果到用户端--------------------服务器 

 

  SQL支持下列类别的命令:

     --数据定义语言(DDL)

      create、alter、drop

    --数据操纵语言(DML)

      select 、insert、update、delete

       --数据控制语言(DCL)

      grant、revork

     --事务控制语言(TCL)

      commit、rollback

  

  Oracle数据类型

    创建表时,必须为各个列指定数据类型

    Oracle数据库的数据类型种类有:

      字符类型

       数值类型

       日期时间类型

       RAW/LONG RAW类型

       LOB类型

  

  Oracle数据类型--字符数据类型:

    char  、varchar2  、  long

    char

    --当需要固定长度的字符串时,使用char数据类型。

    --char数据类型存储字母数字值。

    --char数据类型的列长度可以是1到2000个字节。

    varchar2

    --varchar2数据类型支持可变长度字符串

    --varchar2数据类型存储字母数字值

    --varchar2数据类型的大小在1至4000个字节范围内

    long

    --long数据类型存储可变长度字符数据

    --long数据类型最多能存储2GB

  

  Oracle数据类型--数值类型

     number

    --可以存储整数、浮点数和实数

    --最高精度为38位;

    数值数据类型的声明语法:

      number(p,s)--p表示精度即总共多少位,s表示小数点所占的位数

  

  Oracle数据类型--日期时间类型

    日期时间数据类型存储日期和时间值,包括年、月、日,小时、分钟、秒

    主要的日期时间类型有:

      date--存储日期和时间部分,精确到整个的秒

      timestamp--存储日期、时间和时区信息,秒值精确到小数点后6位。

   

  Oracle数据类型--RAW/LONG RAW类型

    RAW数据类型用于存储二进制数据

    RAW数据类型最多能存储2000字节

    LONG RAW数据类型用于存储可变长度的二进制数据

    LONG RAW 数据类型最多能存储2GB

    

    

  Oracle数据类型--LOB类型

    LOB类型称为‘大对象’数据类型,可以存储多达4GB的非结构化信息,例如声音和视频文件等

    LOB数据类型允许对数据进行高效、随机、分段的访问

    

    clob 即character lob(字符Lob),它能够存储大量字符数据

    blob 即binary log(二进制lob),可以存储较大的二进制对象,如图形、视频剪辑和声音文件

    bfile 即binary file(二进制文件),它用于将二进制数据存储在数据库外部的操作系统文件中。

 

  Oracle数据类型--伪列

    Oracle中伪列就像一个表列,但是它并没有存储在表中

    伪列可以从表中查询,但不能插入、更新和删除它们的值

    常用的伪列有rowid和rownum

      rowid是表中行的存储地址,该地址可以唯一地标识数据库中的一行,可以使用rowid伪列快速地定位表中的一行。

      rownum是查询返回的结果集中行的序号,可以使用它来限制查询返回的行数

  

  数据定义语言:

    数据定义语言(data defintion language)用于改变数据库结构,包括创建、更改和删除数据库对象。

    用于操纵表结构的数据定义语言命令有:

      --create table

      --alter table  

      --truncate table

      --drop table

  数据操纵语言:

    数据操纵语言(Data manipulation language)用于检索、插入和修改数据

    数据操纵语言是最常见的SQL命令

    数据操纵语言命令包括:

    --select

    --insert

    --update

    --delete

  

    利用现有的表创建表的副本

      create table 新表名 as select 列名 from 旧表名

      例:

        create table  stu1 as select * from stu where stuNo=stuNo1;

    选择无重复的行,在select中使用distinct

      例:

        select distinct * from 表名;

    使用列别名

      --为列表达式提供不同的名称

      --该别名指定了列标题

      ......

  

    插入日期类型的值

      --日期数据类型的默认格式为‘DD-MON--RR’

      --使用日期的默认格式

      --使用TO_DATE函数转换

      insert into order_master values (‘0001‘,‘12-5月-13‘,‘c’,‘25-5月-13‘);

      insert into my_table(date_col) values(TO_DATE)(‘2013-10-18‘,‘yyyy-mm-dd‘);

  

    插入来自其他表中的记录的语法:

      insert into 表名 (字段列表) select 字段名 from 其他表名  

      例:

        insert into masterInfo select * from masterInfo1

        insert into masterInfo(stuNo,stuName) select stuNo1,stuName1 from masterInfo1

  

  事务控制语言

    事务是最小的工作单位,作为一个整体进行工作;

    保证事务的整体成功或失败,称之为事务控制

    用于事务控制的语句有:

      commit--提交并结束事务处理

      rollback--撤销事务中已经完成的工作

      savepoint--标记事务中可以回滚的点

      例:

        update order_master set del_date=‘30-8月-05‘ where ordemo<=‘0002‘;

 

  数据控制语言

    数据控制语言为用户提供权限控制命令

    用于权限控制的命令有:
      grant--授予权限

      revoke--撤销已授予的权限

      例:

        grant  select on vendor_master to accounts with grant option;

        revoke seclect,update on order_master from martin;      

  

SQL操作符

  Oracle支持的SQL操作符分类为:

  算术操作符、比较操作符、逻辑操作符、集合操作符、连接操作符

  

  算术操作符

    算术操作符用于执行数值计算,可以在SQL语句中使用算术表达式,算术表达式由数值数据类型的列名、数值常量和连接它们的算术操作符组成

    算术操作符包括 +   -   *  /

    例:

      >select  itemdesc,max_level - qty_hand avble_limit from itemfile where p_category=‘spares‘;

      >select itemdestc,itemrate * (max_level - qty_hand) from itemfile where p_category=‘spares‘;

    

  比较操作符

    比较操作符用于比较两个表达式的值

    比较操作符包括 =   、!=  、 < 、  >  、  <= 、  >=  、   between...and   、  in 、   like 、     is null。

    例:

      >select itemdesc,re_level from itemfile where qty_hand<max_level/2;

      >select orderno from order_master where del_date in(‘06-2月-05‘,‘05-2月-05’);

      >select vencode,venname,tel_no from vendor_master where venname like ‘i   s‘;

  

  逻辑操作符

    逻辑操作符用于组合多个比较运算的结果以生成一个或真或假的结果。

    逻辑操作符包括 与(and)、或(or)、非(not)

    例:

      >select * from order_master where odate>‘10-5月-13‘ and del_date<‘26-5月-13‘;

  

  集合操作符

    集合操作符将两个查询的结果组合成一个结果

    union  、  union all  、  intersect   、 minus

    intersect操作符只返回两个查询的公共行。

    minus操作符返回从第一个查询结果中排除第二个查询中出现的行。

    >select orderno from order_master minus select orderno from order_detail;

    

  连接操作符

    连接操作符用于将多个字符串或数据值合并成一个字符串

    >select (venname||‘的地址是‘||venadd1||‘ ‘||venadd2||‘ ‘||venadd3)address from vendor_master where vencode=‘v001‘;

    --通过使用连接操作符可以将表中的多个列合并成逻辑上的一行列;

  

  操作符的优先级

    SQL操作符的优先级从高到低的顺序是:

      算术操作符

      连接操作符

      比较操作符

      not逻辑操作符

      and逻辑操作符

      or逻辑操作符

   

SQL函数

   Oracle提供一系列用于执行特定操作的函数

   SQL函数带有一个或多个参数并返回一个值

   SQL函数的分类:

      单行函数       、    分组函数     、    分析函数

  

   单行函数分类:

     单行函数对于从表中查询的每一行只返回一个值

     可以出现在select子句中和where子句中

      单行函数可划分为:

        日期函数

        数字函数

        字符函数

        转换函数

        其他函数

 

      日期函数

        日期函数对日期值进行运算,并生成日期数据类型或数值类型的结果

        日期函数包括:

          add_months

          months_between

          last_day

          round

          next_day

          trunc

          extract

      字符函数

        字符函数接受字符输入并返回字符或数值

        函数                                              输入                                               输出

      initcap(char)                       select initcap(‘hello‘) from dual;                      Hello

      lower(char)                         select lower(‘FUN‘) from dual;                         fun

      upper(char)                        select upper(‘sun‘) from dual;                         SUN

      ltrim(char,set)                     select ltrim(‘xyzadams‘,‘xyz‘) from dual;        adams

      rtrim(char,set)                    select rtrim(‘xyzadams‘,‘ams‘) from dual;       xyzad

      translate(char,from,to)  select tran slate(‘jack‘,‘j‘,‘b‘) from dual;   back

replace(char,search string,[rep string]) select replace(‘jack and jue‘,‘j‘,‘bl‘) from dual;   black and blue

      instr(char,m,n)                   select instr(‘worldwide‘,‘d‘) from dual;                5

      substr(char,m,n)     select substr(‘abcdefg‘,3,2) from dual;              cd

      concat(expr1,expr2)   select concat(‘Hello‘,‘world‘) from dual;             Hello world

      

      转换函数

        转换函数将从一种数据类型转换为另一种数据类型

        常用的转换函数有:

          to_char

          to_date

          to_number

        例:

          select to_date(‘2013-12-16‘,‘yyyy-mm-dd‘) from dual;

          select to_number(‘100‘) from dual;

 

       其他函数

        用来转换空值的函数:

          nvl      nvl2       nullif

        例:

          select itemdesc,nvl(re_level,0) from itemfile;

          select itemdesc,nvl2(re_level,re_level,max_level) from itemfile;

          select itemdesc,nullif(re_level,max_level) from itemfile;

 

       分组函数

        分组函数基于一组行来返回结果

        为每一组行返回一个值

        avg      min      max    sum     count

        例:

          select count(*) from itemfile;

          select avg(*) from itemfile where p_category=‘accessories‘;

          select count(itemrate) from itemfile;

          select max(max_level) from itemfile;

          select count(distinct qty_hand) from itemfile;

          select sum(itemrate * max_leve) from itemfile;

 

   group by子句

      group by子句 用于将信息划分为更小的组

      每一组行返回针对该组的单个结果

      例:

        select p_category,max(itemrate) from itemfile group by p_category;

  

   having 子句

      having子句用于指定group by子句检索行的条件

      select p_category,max(itemrate) from itemfile group by p_category  having p_category not in(‘accessories‘);

    

   分析函数

      分析函数根据一组行来计算聚合值

      用于计算完成聚集的累计排名、移动平均数等

      分析函数为每组记录返回多个行

    row_number        rank        dense_rank 

      下面三个分析函数用于计算一个行在一组有序行中的排位,序号从1开始

      --row_number -- 返回连续的排位,不论值是否相等

      --rank --具有相等值的行排位相同,序数随后跳跃

      --dense_rank 具有相等值的行排位相同,序号是连续的

      select d.dname,e.ename,e.sal,dense_rank() over (partition by e.deptno order by e.sal desc ) as denrank from emp e,dept d where e.deptno=d.deptno;  

 

    总结:

      SQL是通用的数据库语言  

      SQL命令可分为数据定义语言、数据操纵语言、事务控制语言、数据控制语言

      Oracle 支持的数据类型包括字符、数值、日期时间、raw和lob等

      SQL支持的操作符包括算数、比较、逻辑、集合、和连接操作符

      SQL函数大致分为单行函数、聚合函数和分析函数

       

    描述truncate table 命令与delete命令的异同。

     

 





以上是关于Oracle数据类型,DDLDMLDCLTCL语言,SQL操作符,SQL函数的主要内容,如果未能解决你的问题,请参考以下文章

SQL之DDLDMLDCLTCL

oraclede中数据定义语言

oracle数据库语言类型

SQL语言的四种类型和ORACLE运算符

Oracle中DDL的基础知识

Oracle 数据类型介绍