美文网首页
oracle基础文档

oracle基础文档

作者: 钟敏_1788 | 来源:发表于2018-12-09 15:59 被阅读0次

    1.oracle的sqlplus....................................................................................................... 3

    2 oracle 的简单查询................................................................................................... 3

    3 oracle的限定查询.................................................................................................... 4

    4 oracle查询排序....................................................................................................... 5

    5 oracle的单行函数.................................................................................................... 8

    5.1字符串函数:.................................................................................................. 8

    5.2数字函数..................................................................................................... 10

    5.3 时间函数.................................................................................................... 11

    5.4 转换函数.................................................................................................... 13

    5.5通用函数..................................................................................................... 13

    6.Oracle子查询........................................................................................................ 14

    6.1单行单列..................................................................................................... 14

    6.2.单行多列的信息.......................................................................................... 15

    6.3子查询返回单行多列.................................................................................... 16

    6.4在having字句之中使用子查询..................................................................... 17

    6.5在from字句中使用子查询........................................................................... 18

    7分组统计查询........................................................................................................ 20

    8多表查询............................................................................................................... 21

    9数据库更新........................................................................................................... 25

    9.1.1数据增加.................................................................................................. 25

    9.1.2数据修改.................................................................................................. 26

    9.1.3数据删除.................................................................................................. 27

    10事务处理............................................................................................................. 27

    11数据伪劣............................................................................................................. 29

    11.1行号 ROWNUM.......................................................................................... 29

    11.2 行ID :ROWID................................................................................................ 30

    12 表的创建............................................................................................................ 31

    12.1常见数据类型............................................................................................ 31

    12.2创建表....................................................................................................... 31

    12.3 复制表...................................................................................................... 32

    12.4修改表结构................................................................................................ 34

    13 约束................................................................................................................... 35

    13.1 非空约束.................................................................................................. 35

    13.2唯一约束................................................................................................... 35

    13.3主键约束................................................................................................... 36

    13.4主外键约束................................................................................................ 37

    14  序列.......................................................................................................... 39

    15视图.................................................................................................................... 41

    16 同义词................................................................................................................ 43

    17索引.................................................................................................................... 43

    18数据库备份.......................................................................................................... 45

    19用户管理............................................................................................................. 46

    20数据库设计.......................................................................................................... 47

    20.1第一范式................................................................................................... 47

    20.2第二范式(多对多).................................................................................. 48

    20.2第三范式(多对多)、................................................................................ 49

    21sybaase powerdesigner工具............................................................................ 49

              oracle基础文档

    1.oracle的sqlplus

    但常用的几种连接方式也就几种:

    [if !supportLists]1.1 [endif]sqlplus / as sysdb

    sqlplus / assysdba

    [if !supportLists]1.2 [endif]sqlplus “/as sysdba”

    sqlplus "/assysdba"

    [if !supportLists]1.3 [endif]sqlplus username/pwd@host/service_name

    sqlplustiger/scott@localhost/orcl sqlplustiger/scott@172.16.10.1:1521/orcl

    [if !supportLists]1.4 [endif]sqlplus /nolog

    sqlplus /nolog

    conn tiger/scottconntiger/scott@172.16.0.1/orcl

    2 oracle 的简单查询

    1,利用select 子句控制要显示的数据列:

    1select  empno,ename,ename,job,sal from emp; 

    2,可以使用distinct来消除重复的数据行显示:

    1select distinct  job from emp; 

    3,select子句可以进行四则运算,可以直接输出常量内容,但是对于字符串使用单引号数字直接编写,日期格式按照字符格式:

    1select  empno,ename,(sal*15+(200+100)) income from emp;

    4,||负责输出内容连接此类的操作很少直接在查询中出现:

    1select  empno||ename from emp;

    5,where子句一般都写在from子句之后,但是是紧跟着from子句之后执行的,where子句控制显示数据行的操作,而select控制数据列,select子句要落后于where子句执行,所以在select子句之中定义的别名无法在where中使用。

    3 oracle的限定查询

    1,关系运算符:

    1

    2

    3

    4

    5

    select * from  emp where sal>1500;

    select * from  emp where ename ='SMITH'

    select  empno,ename,job from emp where job<>'SALESMAN';

    2,逻辑运算符:

    1

    2

    3

    select * from  emp where sal>1500 and sal<3000;

    select * from  emp where sal>2000 or job='CLERK';

    select * from

      emp where not sal >=2000;

    3,范围查询:

    1

    2

    select * from  emp where sal between 1500 and 2000;

    select * from

      emp where hiredate between '01-1月-1981'and'31-12月-1981';

    4,空判断(空在数据库上表示不确定,如果在数据列使用null不表示0)

    1select * from

      emp where comm is not null;

    5,IN操作符(类似于between and 而in给出的是指定的范围):

    1select * from  emp where empno in (7369,7566,7788,9999);

    关于not in与null的问题:

    在使用not in 进行范围判断的时候,如果范围有null,那么不会有任何结果返回。

    6,模糊查询:

    “-”:匹配任意一位字符;

    “%”:匹配任意的0,1,,或者多位字符;

    查询姓名是以字母A开头的雇员信息:

    1select * from emp where ename like 'A%'

    查询姓名第二个字母是A的雇员信息:

    1select * from  emp where ename like '_A%';

    查询姓名任意位置是A的雇员信息:

    1select * from  emp where ename like '%A%';

    查询排序:

    ASC(默认):按照升序排列;

    DESC: 按照降序排列;

    查询所有的雇员信息,要求按照工资的由高到低:

    1select * from

      emp order by sal desc;

    查询每个雇员的编号,姓名,年薪,按照年薪由低到高排序:

    1select empno

      ,ename,sal*12 income from emp order by income;

    语句的执行顺序:from - where -select - order by

    4 oracle查询排序

    [if !supportLists]1.[endif]升序排序

    【训练1】  查询雇员姓名和工资,并按工资从小到大排序。

    输入并执行查询:

    Sql代码

    SELECT

    ename, sal FROM emp ORDER BY sal; 

    SELECT

    ename, sal FROM emp ORDER BY sal;

    执行结果为:

    Sql代码

    ENAME           

    SAL  

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

    SMITH            

    800  

    JAMES            

    950 

    ENAME           

    SAL

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

    SMITH            

    800

    JAMES            

    950

    注意:若省略ASC和DESC,则默认为ASC,即升序排序。

    [if !supportLists]2.[endif]降序排序

    【训练2】  查询雇员姓名和雇佣日期,并按雇佣日期排序,后雇佣的先显示。

    输入并执行查询:

    Sql代码

    SELECT

    ename,hiredate FROM emp ORDER BY hiredate DESC; 

    SELECT

    ename,hiredate FROM emp ORDER BY hiredate DESC;

    结果如下:

    Sql代码

    ENAME      

    HIREDATE  

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

    ADAMS       23-5月 -87  

    SCOTT       19-4月 -87  

    MILLER     

    23-1月 -82  

    JAMES       03-12月-81  

    FORD        03-12月-81 

    ENAME      

    HIREDATE

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

    ADAMS       23-5月 -87

    SCOTT      19-4月 -87

    MILLER    

    23-1月 -82

    JAMES      03-12月-81

    FORD       03-12月-81

    注意: DESC表示降序排序,不能省略。

    [if !supportLists]3.[endif]多列排序

    可以按多列进行排序,先按第一列,然后按第二列、第三列......。

     【训练3】  查询雇员信息,先按部门从小到大排序,再按雇佣时间的先后排序。

    输入并执行查询:

    Sql代码

    SELECT

    ename,deptno,hiredate FROM emp ORDER BY deptno,hiredate; 

    SELECT

    ename,deptno,hiredate FROM emp ORDER BY deptno,hiredate;

    结果如下:

    Sql代码

    ENAME      

    DEPTNO HIREDATE  

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

    CLARK                 

    10 09-6月 -81  

    KING                  

    10 17-11月-81  

    MILLER                

    10 23-1月 -82  

    SMITH                 

    20 17-12月-80  

    JONES                 

    20 02-4月 -81  

    FORD                  

    20 03-12月-81  

    SCOTT                 

    20 19-4月 -87 

    ENAME      

    DEPTNO HIREDATE

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

    CLARK                 

    10 09-6月 -81

    KING                  

    10 17-11月-81

    MILLER                

    10 23-1月 -82

    SMITH                 

    20 17-12月-80

    JONES                 

    20 02-4月 -81

    FORD                  

    20 03-12月-81

    SCOTT                 

    20 19-4月 -87

    说明:该排序是先按部门升序排序,部门相同的情况下,再按雇佣时间升序排序。

    4.在排序中使用别名

    如果要对计算列排序,可以为计算列指定别名,然后按别名排序。

     【训练4】  按工资和工作月份的乘积排序。

    输入并执行查询:

    Sql代码

    SELECT

    empno, ename, sal*Months_between(sysdate,hiredate) AS total FROM

    emp   

    ORDER BY total; 

    SELECT

    empno, ename, sal*Months_between(sysdate,hiredate) AS total FROM emp

    ORDER BY total;

    执行结果为:

    Sql代码

    EMPNO

    ENAME         TOTAL  

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

    7876    ADAMS      

    221526.006  

    7369    SMITH      

    222864.661  

    7900    JAMES      

    253680.817  

    7654   MARTIN      336532.484 

     EMPNO

    ENAME         TOTAL

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

    7876    ADAMS       221526.006

    7369    SMITH      222864.661

    7900    JAMES      253680.817

    7654   MARTIN      336532.484

    sysdate获取当前日期。

    5 oracle的单行函数

    5.1字符串函数:

    [if !vml]

    [endif]

    注意SUBSTR 如果向要从后向前截取,可以使用负数来表示

    例如:SUBSTR('helloword',-3),表示截取最后三个字符,不写长度.默认从开始截取到字符串的末尾.

    以上函数除了INITCAP以外都可以在mysql中使用

    程序中的字符串,下标从0开始,数据库中的下标从1开始,Oracle中,如果下标写0.则按照1处理,在mysql中,不会返回任何结果

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    5.2数字函数

    [if !vml]

    [endif]

    注意,ROUND,和TRUNC函数都可以是用以下格式ROUND(889.99,-2) 这样中格式,小数位数可以是负数,当小数位数是负数时,例子中的结果是900

    在mysql中没有TRUNC函数,有功能相同的TRUNCATE函数,用法也和Oracle中的TRUNC函数相同[if !vml]

    [endif]

    [if !vml]

    [endif]

    5.3 时间函数

    在日期中有如下三个操作:

    日期+数字=日期(表示若干天之后的天数)

    日期-数字=日期(表示若干天前的天数)

    日期-日期=天数(表示两个日期相差多少天)

    但是这种计算的结果不精确,在oracle中不精确,在mysql中结果会是一种错误的结果

    所以给出以下日期函数

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    5.4 转换函数

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    5.5通用函数

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    6.Oracle子查询

    子查询可以出现在很多位置,比如: 当列、当表、当条件等

    语法:

    SELECT (

    子查询)

    FROM (

    子查询)

    WHERE (

    子查询)

    GROUP BY

    子句

    HAVING (

    子查询)

    ORDER BY

    子句

    注:子查询要用括号括起来。

    6.1单行单列

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    6.2.单行多列的信息

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    6.3子查询返回单行多列

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    6.4在having字句之中使用子查询

    [if !vml]

    [endif]

    6.5在from字句中使用子查询

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    7分组统计查询

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    8多表查询

    [if !vml]

    [endif]

    笛卡尔积问题:

    本问题在数据库的操作之中被称为笛卡尔积,就表示多张表的数据乘积的意思,但是这种查询结果肯定不是用户所希望的,那么该如何去掉笛卡尔积呢?

    最简单的方式是采用关联字段的形式,emp表和dept表之间现在存在了deptno的关联字段,所以现在可以从这个字段上的判断开始

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    9数据库更新

    [if !vml]

    [endif]

    9.1.1数据增加

     [if !vml]

    [endif]

    [if !vml]

    [endif]

    9.1.2数据修改

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    9.1.3数据删除

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    10事务处理

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    11数据伪劣

    11.1行号 ROWNUM

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    11.2 行ID :ROWID

    [if !vml]

    [endif]

    12 表的创建

    [if !vml]

    [endif]

    12.1常见数据类型

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    12.2创建表

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    12.3 复制表

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    12.4修改表结构

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    修改列结构

    [if !vml]

    [endif]

    13 约束

    [if !vml]

    [endif]

    13.1 非空约束

    [if !vml]

    [endif]

    13.2唯一约束

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    13.3主键约束

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    13.4主外键约束

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    14 序列

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    15视图

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    16 同义词

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    17索引

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    18数据库备份

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    19用户管理

    [if !vml]

    [endif]

    [if !vml]

    [endif]‘’[if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    20数据库设计

    20.1第一范式

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    20.2第二范式(多对多)

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    20.2第三范式(多对多)、

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    21sybaase powerdesigner工具

    [if !vml]

    [endif]

    [if !vml]

    [endif]

    相关文章

      网友评论

          本文标题:oracle基础文档

          本文链接:https://www.haomeiwen.com/subject/voqkhqtx.html