• 不得不会的Oracle数据库知识点(二)


    SQL查询和SQL函数

    1.SQl支持的命令:

    数据定义语言(DDL):create,alter,drop

    数据操纵语言(DML):insert,delete,update,select

    数据控制语言(DCL):grant,revoke

    事务控制语言(TCL):commit,savepoint,rollback

    2.Oracle数据类型

    字符,数值,日期,RAW,LOB

    字符型

    char:1-2000字节的定长字符

    varchar2:1-4000字节的变长字符

    long:2GB的变长字符

     注意:一个表中最多可有一列为long型

    Long列不能定义唯一约束或主键约束

    long列上不能创建索引

    过程或存储过程不能接受long类型的参数。

    数值型

    number:最高精度38位

    日期时间型

    date:精确到ss

    timestamp:秒值精确到小数点后6位

    函数sysdate,systimestamp返回系统当前日期,时间和时区。

    更改时间的显示

    1. alter session set nls_date_language=’american’;
    2. alter session set nls_date_format=’yyyy-mm-dd’;

    Oracle中的伪列,像一个表列,但没有存储在表中,伪列可以查询,但不能插入、更新和修改它们的值,常用的伪列:rowid和rownum。

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

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

    3.数据定义语言

    用于操作表的命令

    create table

    alter table

    truncate table

    drop table

    修改表的命令

    1. alter table stu_table rename to stu_tbl;--修改表名
    2. alter table stu_tbl rename column stu_sex to sex;--修改列名
    3. alter table stu_tbl add (stu_age number);--添加新列
    4. alter table stu_tbl drop(sex);--删除列
    5. alter table stu_tbl modify(stu_sex varchar2(2));--更改列的数据类型
    6. alter table stu_tbl add constraint pk_stu_tbl primary key(id);--添加约束

    4.数据操纵语言

    select,update,delete,insert

    利用现有的表创建表

    1. create table stu_tbl_log as select id,stu_name,stu_age from stu_tbl;--选择无重复的行
    2. select distinct stu_name from stu_tbl;--插入来自其他表中的记录
    3. insert into stu_tbl_log select id,stu_name,stu_age from stu_tbl;

    5.数据控制语言

    grant,revoke

    6.事务控制语言

    commit,savepoint,rollback

    7.SQL操作符

    算术操作符:+-*/

    比较操作符:=,!=,<>,>,<,>=,<=,between-and,in,like,is null等

    逻辑操作符:and,or,not

    集合操作符:union,union all,intersect,minus

    连接操作符:||

    示例:

    1. select (3+2)/2 from dual;--算术操作符,结果:2.5
    2. select * from stu_tbl where stu_age>=20;--比较操作符
    3. select * from stu_tbl where stu_name like '%a%';--比较操作符:like
    4. select * from stu_tbl where stu_name like 'a___';--比较操作符:like
    5. select * from stu_tbl where stu_age in(20,30);--比较操作符:in
    6. select * from stu_tbl where stu_age between 20 and 30;--比较操作符:between
    7. select stu_name from stu_tbl union all
    8. select stu_name from stu_tbl_log;--集合操作符:union all
    9. select stu_name from stu_tbl union
    10. select stu_name from stu_tbl_log;--集合操作符:union
    11. select stu_name from stu_tbl intersect
    12. select stu_name from stu_tbl_log;--集合操作符:intersect
    13. select stu_name from stu_tbl minus
    14. select stu_name from stu_tbl_log;--集合操作符:minus

    从中可以看出:

    minus是获取第一张表独有的数据

    intersect是获取两张表中都有的数据

    union是整合两张表的数据,都有的只显示一次

    union all是纯粹的两张表数据整合

    1. select id,stu_name||' '||stu_sex as name_sex,stu_age
    2. from stu_tbl;--连接操作符||

    8.SQL函数

    单行函数:从表中查询的每一行只返回一个值,可出现在select子句,where子句中

    日期函数

    数字函数

    字符函数

    转换函数:ToChar(),ToDate(),ToNumber()

    其他函数:

    Nvl(exp1,exp2):表达式一为null时,返回表达式二

    Nvl2(exp1,exp2,exp3):表达式一为null时返回表达式三,否则返回表达式二

    Nullif(exp1,exp2):两表达式相等时,返回null,否则返回表达式一

    分组函数:基于一组行来返回

    Avg,Min,Max,Sum,Count

    Group by,having

    分析函数

    Row_number,rank,dense_rank

    示例:

    1. select u.user_name,sum(oi.order_num*oi.order_price) as total,row_number() over (order by sum(oi.order_num*oi.order_price) desc) as sort from order_item_tbl
    2.   oi,user_tbl  u,order_tbl  o where oi.order_id = o.id and o.user_id = u.id group by u.user_name;

  • 相关阅读:
    BGP路由优选+EVPN
    JavaIO进阶系列——BIO day1-2
    八环氧环己基乙基笼状聚倍半硅氧|八苯胺丙基poss
    【代码笔记】高并发场景下问题解决思路
    View绘制流程的源码所得
    计算机网络实验
    工地临时用电之智慧用电:全方位保障用电安全
    关于 a (链接)标签 里面包含图片会被撑大的解决方法、a标签会撑大的解决方法
    C++之打印编译全过程(二百一十四)
    实践Docker部署
  • 原文地址:https://blog.csdn.net/xiejiachao/article/details/125189158