精华内容
下载资源
问答
  • ORACLE 数据库入门视频

    2008-12-07 16:02:17
    ORACLE 数据库入门视频 PPT讲义。
  • ORACLE 数据库入门 教程ORACLE 数据库入门 教程ORACLE 数据库入门 教程ORACLE 数据库入门 教程ORACLE 数据库入门 教程ORACLE 数据库入门 教程
  • Oracle数据库入门

    2009-02-07 22:26:13
    Oracle数据库入门 Oracle数据库入门 Oracle数据库入门
  • oracle数据库入门

    2008-12-20 08:26:04
    oracle数据库入门 oracle数据库入门 oracle数据库入门
  • oracle数据库入门到精通oracle数据库入门到精通oracle数据库入门到精通oracle数据库入门到精通
  • ORACLE 数据库入门

    2010-02-12 13:36:39
    ORACLE 数据库入门.ppt Oracle数据库入门经典教程!
  • ORACLE+数据库入门ORACLE+数据库入门ORACLE+数据库入门ORACLE+数据库入门ORACLE+数据库入门
  • 教程名称:Oracle 数据库入门到精通视频教程【31集】教程目录:【】01-学习oracle的目的【】02-sqlplus连接与启动关闭实例【】03-sqlplus缓冲区操作【】04-sqlplus与外部编程器交互【】05-sqlplus中使用变量【】06-...
  • Oracle数据库 入门教程

    万次阅读 多人点赞 2018-07-06 17:16:56
    Oracle数据库1.1 数据库环境安装1.Oracle数据库产品是免费的,我们可以从Oracle的官方网站(http://www.oracle.com)下载到程序安装包,Oracle在Windows下的安装非常方便,安装开始后,一直点击安装程序的“下一步”...

    Oracle数据库

    1.1  数据库环境安装

    1.Oracle数据库产品是免费的,我们可以从Oracle的官方网站(http://www.oracle.com)下载到程序安装包,Oracle在Windows下的安装非常方便,安装开始后,一直点击安装程序的“下一步”即可。

    2. 下载Oracle10g后,解压到一个文件夹下,单击“setup.exe”文件即可启动安装界面。。填写全局数据库名,以及管理员的密码。全局数据库名是数据库在服务器网络中的唯一标识。

    3. 数据库创建完毕后,需要设置数据库的默认用户。Oracle中为管理员预置了两个用户分别是SYSSYSTEM。同时Oracle为程序测试提供了一个普通用户scott,口令管理中,可以对数据库用户设置密码,设置是否锁定。 Oracle客户端使用用户名和密码登录Oracle系统后才能对数据库操作。默认的用户中,SYSSYSTEM用户是没有锁定的,安装成功后可以直接使用,SCOTT用户默认为锁定状态,因此不能直接使用,需要把SCOTT用户设定为非锁定状态才能正常使用。

    *******

     

    Oracle数据库中,默认情况下,所有系统的数据,SQL关键字等都是大写的,在操作过程中,Oracle会自动把这些内容转换为大写,因此用户操作时不需考虑大小写问题,一般情况下,为了良好的程序风格,程序中建议关键字用大写,非关键字可以使用小写。

     

    4.该工具是Oracle系统默认安装下,自带的一个客户端工具。在Windows命令行中输入sqlplusw命令,就能够启动该工具了

    ,输入:sqlplus输入密码后就可以直接使用了

    Oracle数据库的端口号是:1521

    1.2  数据库的卸载

    1、我的电脑右击《管理》选择《服务和应用程序》->《服务》找到《Oracle》右击选择停止。

    2、控制面板卸载程序

    3、去安装Oracle的目录下面把Oracle的文件夹删除

    4、用CMD打开regedit注册表

    删除HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Oracle文件夹

    删除HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\Oracle文件夹

    删除HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Oracle文件夹
    删除HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\Oracle文件夹。

    删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Oracle文件夹
    删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\Oracle的文件夹。

    5、以上操作完成后即表示Oracle已经完全卸载。

    1.3  Oracle数据库---scott用户

    sqlplus无图形界面,如果想要打开文件,

    使用 ed 文件路径 默认打开的是以.sql结尾的文件

    如果想要执行某个文件。

    使用 @ 文件路径 如果打开的是.sql文件后缀可以不写.

    1、scott是默认用户,需要导入才能使用

    2、导入scott的用户 (默认scott用户是锁定状态)

    @D:\oracle\app\oracle\product\11.2.0\server\rdbms\admin\scott

    3、解锁scott用户

    alter user scott account unlock;

    4、设置scott密码生效

    alter User scott identified by tiger;

    1.3.1  切换用户

    登录sys用户的时候需要以sysdba的身份登录  

    sys/root as sysdba;

    切换用户

    conn 用户名/用户密码

    注意切换到sys用户

    conn sys/root as sysdba;

    显示当前用户

    show user;

    查看用户下所有的表

    select * from tab;

    1.3.2 sqlplus中的显示格式化

    设置每页显示的条数

    set pagesize 30;

    设置每行显示的宽度

    set linesize 300;

    设置某个字段显示的宽度

    字符串

    col 字段名 for a10;

    数值

    col 字段名 for 9999;(几位数就填几个9

    1.4  Oracle数据库的用户管理

    1、用户的管理

    创建用户:create user 用户名 identified by 密码;

    2、用户的授(包含两个权限 CONNECT,RESOUCE)

    grant CONNECT,RESOUCE to 用户;

    3、修改密码

    ALTER USER 用户名 IDENTIFIED BY 新密码

    4、让密码失效:登陆之后需要立即修改密码

    ALETR USER 用户名 PASSWORD EXPIRE ;

    5、锁定用户

    ALTER USER 用户名 ACCOUNT LOCK;

    6、解锁用户

    ALTER USER 用户名 ACCOUNT UNLOCK;

    7、将A用户名的操作权限授予其他用户

    ps:A用户下访问B 用户名的表

    GRANT SELECT,INSET,UPDATE ,DELETE ON 用户名.表名 TO 其他用户

    8、回收权限

    REVOKE CONNECT ,RESOURCE FROM 用户名;

    9、删除用户

    DROP USER 用户名  (CASCADE); 需要先删除用户名创建的内容

    sys管理员的默认密码为change_on_install

    如果在一个用户下访问其他用户的表,需要加上模式名称
    ps: select * from scott.emp;

    1.5 Oracle 数据库数据定义语言Data Definition LanguageDDL

    CHAR(length)

    存储固定长度的字符串。参数length指定了长度,如果存储的字符串长度小于length,用空格填充。默认长度是1,最长不超过2000字节。

    VARCHAR2(length)

    存储可变长度的字符串。length指定了该字符串的最大长度。默认长度是1,最长不超过4000字符。

    NUMBER(p,s)

    既可以存储浮点数,也可以存储整数,p表示数字的最大位数(如果是小数包括整数部分和小数部分和小数点,p默认是38为),s是指小数位数。

    FlOAT/DOUBLE

    小数型

    INT/INTEGER

    整数型

    DATE

    存储日期和时间,存储纪元、4位年、月、日、时、分、秒,存储时间从公元前4712年1月1日到公元后4712年12月31日。

    TIMESTAMP

    不但存储日期的年月日,时分秒,以及秒后6位,同时包含时区。

    CLOB

    存储大的文本,比如存储非结构化的XML文档

    BLOB

    存储二进制对象,如图形、视频、声音等。

    ALTER TABLE命令 创建表

      ALTER TABLE 表名 ADD CONSTRAINT约束名约束内容。

    创建表和约束

    ALTER TABLE SCORES

        ADD CONSTRAINT CK_SCORES_TERM CHECK(TERM = 'S1' OR TERM ='S2')  只能在S1和S2中二选一,约束

    1.6 Oracle 数据库 数据操纵语言(DML)

    1.6.1 INSERT 增加表

    简单查询 分组查询

    SELECT *|列名|表达式 FROM 表名 WHERE 条件 ORDER BY 列名

    根据结果集创建表

    CREATE TABLE 表名 AS SELECT语句

    EX:INSERT INTO EMP VALUES(1000,'JACK','SALESMAN',7902,SYSDATE,2000,NULL,10);

    插入指定的数据

    INSERT INTO EMP (EMPNO,ENAME,SAL)VALUES(1001,'ROSE',3000);

    修改

    复制表结构

    如果只复制表结构,只需使查询的条件不成立(比如where 1=2),就不会查询从出任何数据,从而复制一个表结构。

    EX CREATE TABLE INFOS2 AS SELECT * FROM INFOS WHERE 1=2;

    根据结果集创建表

    INSERT INTO 表名(列名1,列名2……) VALUES (1,值2……)

      Oracle中,日期是国际化的,不同的区域安装的数据库,默认的日期格式不同,因此为了程序便于移植,日期的输入要使用TO_DATE函数对日期格式化后输入,采用格式化字符串对日期进行格式化时,格式化字符串中字符不区分大小写,常见的格式化字符如下:

    1.         yyyy表示四位年份

    2.         mm表示两位月份,比如3月表示为03

    3.         dd表示两位日期

    4.         hh24表示小时从0-23hh12也表示小时从0-11

    5.         mi 表示分钟

    6.         ss表示秒

     commit是把用户操作(添加、删除、修改操作)提交,只有提交操作后,数据才能真正更新到表中,否则其他用户无法查询到当前用户操作的结果。

    INSERT向表中插入一个结果集

     INSERT INTO INFOS2 SELECT * FROM INFOS;

    INSERT向表中插入一个常量结果集

     INSERT INTO INFOS

    SELECT 's100106','卢俊义','',23,5,

                   TO_DATE('2009-8-9 08:00:10','YYYY-MM-DD HH24:MI:SS'),

                   '青龙寺','1001'

    FROM DUAL;

    1.6.2 UPDATE 更新表

    UPDATE操作

    UPDATE 表名 SET 列名1=值,列名2=值…… WHERE 条件

    DELETE FROM 表名称 [WHERE 删除条件] ;

    1、删除指定的员工(删除jack)

    DELETE FROM EMP WHERE ENAME='JACK';

    2、删除若干个员工(1001,7902,7844)

    DELETE FROM EMP WHERE EMPNO IN (1001,7902,7844);

    3、删除工资最高的员工

    DELETE FROM EMP WHERE SAL = (SELECT MAX(SAL) FROM EMP);

    删除语句中如果没有WHERE子句,表示全部删除(谨慎)

    物理删除:真删

    逻辑删除:利用表中的字段做标记。FLAG = 0

    SELECT * FROM EMP WHERE FLAG = 1;

    1.6.3 DELECT 删除表

    DELETE操作

    DELETE FROM表名 WHERE 条件

    EXDELETE FROM INFOS WHERE STUID='s100103';

    TRUNCAT命令(是一个DDL命令)可以把表中的所有数据一次性全部删除

    TRUNCATE TABLE 表名

    删除表

    DROP TABLE 表名称 [PURGE 清除缓存];

    DROP TABLE STUDENT;

    DROP TABLE STUDENT PURGE;

    TRUNCATEDELETE都能把表中的数据全部删除,他们的区别是:

    1.       TRUNCATEDDL命令,删除的数据不能恢复;DELETE命令是DML命令,删除后的数据可以通过日志文件恢复。

    2.       如果一个表中数据记录很多,TRUNCATE相对DELETE速度快。

    由于TRUNCATE命令比较危险,因此在实际开发中,TRUNCATE命令慎用。

    EX:1、将公司的最低工资改为平均工资

    UPDATE EMP SET SAL = (SELECT AVG(SAL) FROM EMP) WHERE SAL = (SELECT MIN(SAL) FROM EMP);

     

    2、将所有在81年入职的员工的入职日期改为今天,工资上涨20%

    UPDATE EMP SET HIREDATE = SYSDATE,SAL = SAL*1.2 WHERE HIREDATE BETWEEN '01-1-81' AND '31-12-81';

    修改语句在没有WHERE子句的时候,表示修改表中所有的记录

    1.6.4 SELECT 查询表

    DISTINCT消除重复行高级查询

    SELECT DISTINCT DEPTNO FROM EMP;

     

    1.7 Oracle 数据库操作符

    求余运算只能借助函数

    MOD(x,y):返回x除以y的余数。

    算术运算

    SELECT ENAME,SAL,(SAL*12+2000) FROM EMP WHERE SAL>2000;

    =

    等于

    >

    大于

    <>或者!=

    不等于

    <=

    小于或者等于

    <

    小于

    >=

    大于或者等于

    逻辑运算符有三个:ANDORNOT

    字符串连接操作符(||)

    EXSELECT (ENAME || 'is a ' || JOB) AS "Employee Details"  ①

      2  FROM EMP

      3  WHERE SAL>2000;

     Oracle字符串可以用单引号,也可以用双引号,在别名中存在空格时,必须用双引号。在表名、列名时用双引号。

    NULL操作

    如果某条记录中有缺少的数据值,就是空值(NULL值)。空值不等于0或者空格,空值是指未赋值、未知或不可用的值。任何数据类型的列都可以包括NULL值,除非该列被定义为非空或者主键。

    在查询条件中NULL值用IS NULL作条件,非NULL值用NOT IS NULL做条件。   

    IN 操作

    EXWHERE job = 'SALESMAN ' OR job = 'PRESIDENT ' OR job = 'ANALYST '

    WHERE job IN ('SALESMAN', 'PRESIDENT', 'ANALYST')

    对应IN操作的还有NOT IN,用法一样,结果相反。

    BETWEEN...AND...

    WHERE子句中,可以使用BETWEEN操作符来查询列值包含在指定区间内的行。

    EXWHERE SAL>=1000 AND SAL<=2000

    BWTWEEN操作所指定的范围也包括边界。

    LIKE模糊查询

    在一些查询时,可能把握不准需要查询的确切值,比如百度搜索时输入关键字即可查询出相关的结果,这种查询称为模糊查询。模糊查询使用LIKE关键字通过字符匹配检索出所需要的数据行。字符匹配操作可以使用通配符%_:

     %:表示零个或者多个任意字符。_:代表一个任意字符。

    1.8 Oracle 数据库函数

    大小写转换:

    upper(|数据)lower(|数据)

    通过输入人名得到这个人的完整信息

    sqlplus中输入某个值 使用 &标记(了解)

    SELECT * FROM EMP WHERE ENAME = &标记;

    SELECT * FROM EMP WHERE ENAME = upper('&name');

    首字母大写:

    initcap(|数据)

    字符串长度:

    length()

    字符串替换:

    replace(|数据,替换数据,新数据)

    字符串截取:

    substr(|数据,开始位置);

    substr(|数据,开始位置,长度)

    四舍五入:

    round(|数值 [保留小数位]);不写保留小数位则不保留

    如果小数位为负数,则从小数点左边计算。

    截取小数位:

    trunc(|数值 [保留小数位])    

    直接截取小数位,默认不保留小数位

    如果是负数直接整数位为0

    取模:  取余

    mod(1|数值1,2|数值2)

    时间戳

    获取系统当前的时间戳

    SELECT SYSTIMESTAMP FROM DUAL;

    获取系统当前的时间

    SELECT SYSDATE FROM DUAL;

    日期三种计算方式:

    日期函数

    1、日期+天数 = 日期(n天后)

    2、日期 -天数 = 日期(n天前)

    3、日期-日期 = 天数(时间间隔)

    MONTHS_BETWEEN(日期1,日期2) 两个日期间的相隔的月份

    ADD_MONTHS(日期,月数);在指定的日期上增加月数

    LAST_DAY(日期)指定日期的最后一天

    NEXT_DAY(日期,周几);

    查询所有员工工作年限()

    SELECT TRUNC((SYSDATE-HIREDATE)/30) year FROM EMP;

    SELECT MONTHS_BETWEEN(SYSDATE,HIREDATE) FROM EMP;

    计算毕业时间

    SELECT SYSDATE+120 FROM DUAL;

    SELECT ADD_MONTHS(SYSDATE,-4) FROM DUAL;

     

    查询月底(25号以后)入职的员工

    SELECT * FROM EMP WHERE HIREDATE > LAST_DAY(HIREDATE)-5;

    SELECT LAST_DAY(SYSDATE) FROM DUAL;

     

    找到当前日期的下一个星期几的是哪一天(1表示星期日,7表示星期六)

    SELECT NEXT_DAY(SYSDATE,1) FROM DUAL;

    1.9 Oracle 数据库转换函数

    TO_CHAR(|日期|数字,转换格式)

    日期转换成字符串 年(yyyy)(mm)(dd)(hh24)(mi)(ss);

    EX:将系统当前时间转换成'yyyy-mm-dd'格式

    SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd') FROM DUAL;

    SELECT TO_CHAR(SYSDATE,'yyyy/mm/dd') FROM DUAL;

    SELECT TO_CHAR(SAL)+10 FROM EMP;

    SELECT '10' +10 from dual;

    数字转换成字符串  任意一位数字(9)、货币(L 本地货币)TO_CHAR

    SELECT TO_CHAR(1234567876,'999,999,999,999') FROM DUAL;

    SELECT TO_CHAR(1234567876,'L999,999,999,999') FROM DUAL;

    TO_DATE(字符串,'时间格式');

    oracle中默认的时间格式  xxxxx

    '2018-07-04'日期类型的属性插入到EMP

    INSERT INTO EMP (EMPNO,ENAME,HIREDATE,SAL) VALUES(8888,'李四','04-7-18',3000);

    INSERT INTO EMP (EMPNO,ENAME,HIREDATE,SAL) VALUES(8888,'李四',TO_DATE('2018-07-04','yyyy-mm-dd'),3000);

    TO_NUMBER(|数值);

    SELECT TO_NUMBER('10') FROM DUAL;

    可以将字符串中全是数字的类型转换为数字类型,oracle中如果是全是数字的字符串类型可以直接加减乘除,系统会默认转换成CHAR类型。如果该字符串中不仅仅只有数字的话 该TO_NUMBER 类型没有任何作用。

    2.0 Oracle 数据库中的多表查询

    SELECT E.ENAME,E.HIREDATE,E.JOB,E.SAL,D.DNAME,D.DEPTNO,D.LOC

    FROM EMP E,DEPT D

    WHERE E.DEPTNO = D.DEPTNO;

     

    查询每个雇员的编号、姓名、职位、基本工资、部门名称、部门位置

    1、确定要使用的数据表

    EMP:雇员的编号、姓名、职位、基本工资

    DEPT:部门名称、部门位置

    2、确定数据表之间的关联关系

    EMP.DEPTNO = DEPT.DEPTNO;

    内连接----->等价连接

    SELECT E.EMPNO,E.ENAME,E.JOB,E.SAL,D.DNAME,D.LOC

    FROM EMP E,DEPT D

    WHERE E.DEPTNO = D.DEPTNO;

     

     

    一、查询每个雇员编号、姓名、职位、基本工资、工资等级

    (提示:emp中的salsalgrade表中的losalhisal之间)

    1、确定要使用的数据表

    EMP : 雇员编号、姓名、职位、基本工资

    SALGRADE:工资等级

    2、确定数据表之间的关联关系

    EMP.SAL BETWEEN LOSAL AND HISAL;

     

    SELECT E.EMPNO,E.ENAME,E.JOB,E.SAL,S.GRADE

    FROM EMP E,SALGRADE S

    WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL;

    二、查询每个雇员的编号、姓名、基本工资、部门名称、工资等级

    1、确定要使用的数据表

    EMP:编号、姓名、基本工资

    DEPT:部门名称

    SALGRADE:工资等级

    2、确定数据表之间的关联关系

    E.DEPTNO = D.DEPTNO AND E.SAL BETWEEN S.LOSAL AND S.HISAL;

     

    SELECT E.EMPNO,E.ENAME,E.SAL,D.DNAME,S.GRADE

    FROM EMP E,DEPT D,SALGRADE S

    WHERE E.DEPTNO = D.DEPTNO AND E.SAL BETWEEN S.LOSAL AND S.HISAL;

    右连接---->+)在左边

    SELECT E.ENAME,E.HIREDATE,E.JOB,E.SAL,D.DNAME,D.DEPTNO,D.LOC

    FROM EMP E,DEPT D

    WHERE E.DEPTNO(+) = D.DEPTNO;

    左连接---->+)在右边

    SELECT E.ENAME,E.HIREDATE,E.JOB,E.SAL,D.DNAME,D.DEPTNO,D.LOC

    FROM EMP E,DEPT D

    WHERE E.DEPTNO = D.DEPTNO(+);

    2.1 Oracle 数据库 数据集合操作

    数据集合操作主要用于数据结果的连接,就相当于多个查询结果连接成一个结果返回。但是要求必须多个查询返回结果列的结构必须一致

    UNION

    得到两个结果合并到一起,但是会去除重复数据

    EX:SELECT * FROM EMP UNION SELECT * FROM DEPT;

    UNION ALL

    得到两个结果合并到一起,不会去除重复数据,是所有表的集合,包含全部数据

    EX:SELECT * FROM EMP UNION ALL SELECT * FROM DEPT;

    INTERSECT

    得到两个结果的并集,是所有表的交集,相重复的部分

    EX:SELECT * FROM EMP INTERSECT SELECT * FROM DEPT;

    MINUS

    得到第一个结果减去第二个结果的差集

    EX:SELECT * FROM EMP MINUS SELECT * FROM DEPT;

    2.2 Oracle 数据库 计数函数

    COUNT(*)

    返回表中的数据个数

    EX:SELECT COUNT(*) FROM EMP GROUP BY DEPTNO;

    COUNT(字段)

    返回不为null的数据个数

    COUNT(DISTINCT 字段)

    返回去除重复之后的数据个数

    2.3 Oracle 数据库 分组查询

    分组统计查询的顺序

    SELECT 分组字段 [别名],分组字段[别名],...

    FORM  表名称 [别名]

    [WHERE  限定条件s]

    [GROUP BY 分组字段,分组字段2....]

    [ORDER BY 列名 [ASC|DESC],列名 [ASC|DESC],列名 [ASC|DESC]...]

    EX1、按照职位分组,查询每个职位的名称、人数、平均工资

    SELECT JOB,COUNT(*),AVG(SAL)

    FROM EMP

    GROUP BY JOB;

    2、查询每个部门编号,每个部门的人数,最高工资,最低工资

    SELECT DEPTNO,COUNT(*),MAX(SAL),MIN(SAL)

    FROM EMP

    GROUP BY DEPTNO;

    oracle中分组统计查询的三点要求:

     

    1、在没有GROUP BY子句的时候,在使用统计函数的时候不能出现任何其他字段

     

    SELECT sal,avg(sal) FROM EMP;

     

    2、在使用GROUP BY 子句的时候,只允许出现分组字段和统计函数

     

    SELECT DEPTNO,AVG(SAL),ENAME

    FROM EMP

    GROUP BY DEPTNO;

     

    3、统计函数可以嵌套,但是嵌套之后,SELECT子句中不能出现其他字段。只能使用嵌套函数。分组字段也不能查询。

     

    SELECT DEPTNO,AVG(SAL) FROM EMP GROUP BY DEPTNO;

     

    SELECT DEPTNO,MAX(AVG(SAL)) FROM EMP GROUP BY DEPTNO;

    HAVING子句与WHERE子句的区别

    WHERE子句是在GROUP BY 子句之前执行(不允许出现统计函数)

    HAVINGGROUP BY 子句之后执行

    所有的分组查询中的执行顺序:

    SELECT 分组字段 [别名],分组字段[别名],...

    FORM  表名称 [别名]

    [WHERE  限定条件s]

    [GROUP BY 分组字段,分组字段2....]

    [HAVING 条件....]

    [ORDER BY 列名 [ASC|DESC],列名 [ASC|DESC],列名 [ASC|DESC]...]

    2.4 Oracle 数据库 子查询操作符

    子查询
    SELECT [DISTINCT] 分组字段[别名],...|统计函数,(子查询)
    FROM  表名称(子查询)
    [WHERE 过滤条件(s)]    (子查询)
    [GROUP BY 分组字段,分组字段...]
    [HAVING 分组后的过滤条件](子查询)
    [ORDER BY 字段[ASC|DESC],..]

    WHERE子句:返回单行单列、多行多列、单行多列

    HAVING子句:返回单行单列,同时要使用统计函数

    FROM 子句:返回多行多列

    子查询的操作符

    1IN操作

    子查询会返回多行单列的结果,IN操作符的含义在这个多行单列的结果中的其中某一个相

    EXSELECT *

    FROM EMP

    WHERE SAL  IN(SELECT SAL

     FROM EMP

     WHERE JOB = 'MANAGER');

    2NOT  IN

    IN操作符含义相反,不能与NULL值比较

    EX:SELECT *

    FROM EMP

    WHERE COMM NOT IN(SELECT COMM

     FROM EMP

    WHERE COMM IS NULL);

    子查询的操作符

    3ANY操作

    =ANY  与  =IN操作完全一样

    EX:SELECT *

    FROM EMP

    WHERE SAL =ANY(SELECT SAL

     FROM EMP

     WHERE JOB = 'MANAGER');

     

    4>ANY

    大于最小值

    EX:SELECT *

    FROM EMP

    WHERE SAL >ANY(SELECT SAL

     FROM EMP

     WHERE JOB = 'MANAGER');

    5<ANY

     小于最大值

    EX:SELECT *

    FROM EMP

    WHERE SAL <ANY(

    SELECT SAL

    FROM EMP

    WHERE JOB ='MANAGER'

    );

    6=ALL

    不存在

    7>ALL

     大于最大值

    EX:SELECT *

    FROM EMP

    WHERE SAL >ALL(SELECT SAL

    FROM EMP

    WHERE JOB = 'MANAGER');

    8<ALL

    小于最小值

    EX:SELECT *

    FROM EMP

    WHERE SAL <ALL(SELECT SAL

    FROM EMP

    WHERE JOB = 'MANAGER');

    2.5 Oracle 数据库 子查询

    1、在WHERE 子句中使用子查询

    EX:1、低于平均工资的员工信息

    SELECT *

    FROM EMP

    WHERE SAL < (SELECT AVG(SAL)

    FROM EMP);

    2、查询公司最早入职的员工

    1)查询入职的日期

    SELECT MIN(HIREDATE) FROM EMP;

    2)将查询的日期作为WHERE子查询的语句

    SELECT *

    FROM EMP

    WHERE HIREDATE = (SELECT MIN(HIREDATE)

      FROM EMP) ;

    3、查询与WARD职位相同,工资相等的员工信息

    1)查询WARD的部门和工资

    SELECT JOB,SAL FROM EMP WHERE ENAME = 'WARD';

    2)将查询的结果作为WHERE子查询的语句

    SELECT *

    FROM EMP

    WHERE (JOB,SAL) = (SELECT JOB,SAL

       FROM EMP

       WHERE ENAME = 'WARD')

      AND ENAME <> 'WARD';

    2、在HAVING子句中使用子查询

    EX:1、查询高于平均工资的职位名称、职位人数、平均工资

    SELECT JOB,COUNT(EMPNO),AVG(SAL)

    FROM EMP

    GROUP BY JOB

    HAVING AVG(SAL) > (SELECT AVG(SAL) FROM EMP);

    3、再FROM 子句中使用子查询

    EX:1、查询每个部门名称、位置、部门人数

    SELECT DEPTNO,COUNT(EMPNO)

    FROM EMP

    GROUP BY DEPTNO;

     

    SELECT D.DNAME,D.LOC,TEMP.COUNT

    FROM DEPT D,(SELECT E.DEPTNO,COUNT(EMPNO) COUNT

    FROM EMP E

    GROUP BY DEPTNO) TEMP

    WHERE D.DEPTNO = TEMP.DEPTNO(+);

    4、在SELECT子句中使用子查询(了解,一般不使用)

    2、查询每个员工的编号、姓名、职位、部门名称

    SELECT E.EMPNO,E.ENAME,E.JOB,D.DNAME

    FROM  EMP E,DEPT D

    WHERE E.DEPTNO = D.DEPTNO;

     

    SELECT E.EMPNO,E.ENAME,E.JOB,

       (SELECT D.DNAME

    FROM DEPT D

    WHERE E.DEPTNO = D.DEPTNO) DNAME

    FROM EMP E;

     

    此查询语句会出现'1+N' 的问题

    2.6 Oracle 数据库表约束的修改

    1、增加约束

    ALTER TABLE 表名称 ADD CONSTRAINT 约束名称  约束类型(字段)

    EX:stu表中的sid添加主键约束

    ALTER TABLE STU ADD CONSTRAINT PK_SID PRIMARY KEY(SID);

    因为NOT NULL 约束是在创建字段的时候就要加上,所有不能添加NOT NULL

    约束。如果非要添加,只能通过修改表结构来添加NOT NULL 约束。

    2、删除约束

    ALTER TABLE 表名称 DROP CONSTRAINT 约束名称

    EX:stu表中的sid删除主键约束

    ALTER TABLE STU DROP CONSTRAINT PK_SID;

    通常情况下,修改约束是不建议使用的, 也就是说数据约束要在数据库设计之初就应该设计好。

    2.7 Oracle数据库修改表结构

    1.重命名表名:

    ALTER TABLE 表名 RENAME 新表名;

    EX:    ALTER TABLE TEACHER RENAME TEACHERS;

    2.向表中添加一列:

    ALTER TABLE 表名 ADD 字段名 字段类型;

    EX:    ALTER TABLE TEACHERS ADD INFO TEXT;

    3.删除表中一列:

    ALTER TABLE 表名 DROP COLUMN 列名 ;

    EX:    ALTER TABLE TEACHERS DROP COLUMN INFO;

    4.修改表中一列的数据类型:

    ALTER TABLE 表名 MODIFY 字段名 字段类型 ;

    EX:      ALTER TABLE TEACHERS MODIFY SAL DECIMAL(7,2);

    5.重命名一列:

    ALTER TABLE 表名 CHANGE COLUMN 旧字段名 新字段名 新字段类型

    EX:   ALTER TABLE TEACHERS CHANGE COLUMN NAME T_NAME VARCHAR(30);

    2.8 Oracle 数据库 事务

    事务的特点

    特性:ACID

    1.原子性(A: 事务其实就是执行一组SQL语句,他们中只要有一条语句执行失败,整个事务都失败。

    2.一致性(C):即在事务开始之前和事务结束以后,数据库的设定是一样的。

    3.隔离性(I):当使用事务对数据进行操作时,我们另外的会话是无法对此条数据进行操作的。我们的InnoDB使用的是数据行锁。

    4.持久性(D):当事务成功,数据将提交到数据库,数据就被持久化了。所有的DDL语句默认是自动提交的,所有的DML 语句需要手工提交;

    事务的特点

    所有的关系型数据库在操作的时候都应该考虑到事务带来的影响。

    每一个用户在操作oralce数据库的是都会开启一个SEESION会话。

    默认情况下ORALCE数据库的DML语句是手动提交的。DDL语句是自动提交

    提交数据: commit;

    回滚数据: rollback;

    设置回滚点

    也可以设置标签进行回滚:

    也可以设置回滚点   

    savepoint 名字;

    回滚到回滚点

    rollback to 名字;

     

     

    2.9 Oracle 数据库 序列

     

    CREATE SEQUENCE 序列名

    [INCREMENT BY 步长]

    [START WITH 开始值]

    [MAXVALUE 最大值|NOMAXVALUE][MINVALUE 最小值|NOMINVALUE]

    [CYCLE | NOCYCLE] 循环

    [CACHE |NOCACHE] 缓存

     

    序列提供了两个函数

    序列名.nextval; 当前序列的下一个值

    序列名.currval; 当前序列的值

    删除序列:

    DROP SEQUENCE 序列名称;

    序列只能在INSERT语句中使用.不能在CREATE中使用(区别MySQL)

    3.0 Oracle数据库 数据编号 ROWNUM

     

    SELECT ROWNUM,ENAME FROM EMP;

    SELECT ROWNUM,ENAME FROM EMP WHERE DEPTNO = 10;

    ROWNUMORACLE中的数据伪列,是根据数据的顺序自动生成的,不是固定的

    SELECT ROWNUM,ENAME FROM EMP ORDER BY SAL;

    主要包含两个作用

    1、取出第一行数据

    SELECT * FROM EMP WHERE ROWNUM = 1;

     

    2、取出前N行数据

    SELECT * FROM EMP WHERE ROWNUM < 10;

     

    查询emp表中前5条数据

    SELECT * FROM EMP WHERE ROWNUM <= 5;

    查询emp表中前10条数据

    SELECT * FROM EMP WHERE ROWNUM <= 10;

    查询emp表中6~10条数据

    SELECT * FROM EMP WHERE ROWNUM BETWEEN 6 AND 10;错误

    查询emp表中11~15条数据(第三页currpage = 3,每一页显示5条数据 pagesize = 5 )

    SELECT * FROM (

    SELECT ROWNUM RN,EMPNO,ENAME,JOB,HIREDATE,SAL,COMM,MGR,DEPTNO

    FROM EMP

    WHERE ROWNUM <= 15) TEMP  currpage*pagesize

    WHERE TEMP.RN > 10;(currpage-1)*pagesize

    oracle分页查询公式

    SELECT 1,2...

    FROM  (SELECT ROWNUM RN,1,2...

    FROM 表名称

    WHERE RN<(pagesize*currpage)) TEMP

    WHERE TEMP.RN > (pagesize-1)*currpage;

    3.1 Oracle 数据库 同义词

    如:如果要在其他用户访问scott用户的下的emp,需要加上模式名称

    scott.emp’,而且是scott用户授予了其他用的增删改查的权限

    如:SELECT SYSDATE FROM DUAL;

    SELECT TNAME FROM TAB WHERE TNAME = 'DUAL';

    通过查询发现DUAL表是sys用户下的表。按道理应该sys.dual去访问

    原因是因为oraclesys.dual创建了一个同义词dual;

    创建同义词的语法:

    CREATE [PUBLIC] SYNONYM 同义词名称 FOR 用户名.表名;

    EX:CREATE PUBLIC SYNONYM emp FOR scott.emp;

    SELECT * FROM EMP;(此时的EMP就是刚刚创建的同义词) 如果不加PUBLIC只能在创建的那个用户下使用,如果加了PUBLIC则可以在所有的用户下面使用。这个创建需要在管理员用户下

    删除创建的同义词

    DROP SYNONYM emp;

    3.2 Oracle 数据库 视图

    视图(VIEW)的基本概念就是将复杂的查询进行封装

    语法:创建视图的语法

    CREATE [OR REPLACE] VIEW 视图名称 AS 子查询;

    EX:CREATE VIEW myview AS SELECT * FROM EMP WHERE DEPTNO =30;

    使用视图:

    EXSELECT ENAME,JOB FROM myview;

    创建的视图会被存放在‘user_views’字典表中。

    SELECT * FROM USER_VIEWS;

    普通用户需授权后才能创建视图

    默认在scott用户下无法创建视图权限不足

    授予scott创建视图的权限

    GRANT CREATE VIEW TO scott;

    替换视图:

    CREATE OR REPLACE VIEW myview AS SELECT * FROM EMP WHERE DEPTNO =30;

    DEPTNO =30;就是视图的创建条件

    如果视图不存在则创建视图,如果视图已经存在则替换视图

    修改视图的创建条件

    UPDATE MYVIEW SET deptno = 40 WHERE empno= 7521; 此时会改变原表中的信息。

    如果想要原表中的信息不被更改,需要加上关键字

    执行这个SQL语句会改变视图的创建条件。为了保护视图的创建条件不被

    修改,可以加上'WITH CHECK OPTION'

    EX:CREATE OR REPLACE VIEW myview AS SELECT * FROM EMP WHERE DEPTNO =30 WITH CHECK OPTION;

    但是加上个条件只会让创建条件不被修改,而其他字段可以修改

    UPDATE MYVIEW SET sal = 99999 WHERE empno= 7521;

    如果想要让视图的所有字段都不会被修改加上WITH READ ONLY

    CREATE OR REPLACE VIEW myview AS SELECT * FROM EMP WHERE DEPTNO =30 WITH READ ONLY;

    UPDATE MYVIEW SET sal = 99999 WHERE empno= 7521;

    此时只会改变视图中的显示,并不会改变原表中的任何信息,此时值赋予了视图中查看功能,但是修改,删除等功能将不被允许

    删除创建的视图

    DROP VIEW myview;

    3.3 Oracle 数据库 数据的导入导出

    导出:

    1、创建导入文件的路径(d:\\backup)

    2、通过命令行进入文件路径

    3exp命令

    4、登陆用户名

         默认导出的文件名为expdat.dmp

    导入:

    1、进入到备份的文件夹

    2、执行imp命令

     

    9.0  实际案例

    1、查询每个雇员编号、姓名、职位、基本工资、工资等级

    (提示:emp中的salsalgrade表中的losalhisal之间)

    SELECT EMPNO,ENAME,JOB,SAL,GRADE

    FROM EMP,SALGRADE

    WHERE SAL BETWEEN LOSAL AND HISAL;

    2、查询每个雇员的编号、姓名、基本工资、部门名称、工资等级

    SELECT EMPNO,ENAME,SAL,DNAME,GRADE

    FROM EMP E,SALGRADE,DEPT D

    WHERE E.DEPTNO =D.DEPTNO AND(SAL BETWEEN LOSAL AND HISAL);

    1、查询工资高于在30部门的所有员工的姓名、工资、部门名称、部门人数
    第一步:查询部门30 的所有员工的工资(多行单列的结果)
    SELECT SAL
    FROM EMP
    WHERE DEPTNO = 30;
    第二步:查询高于30部门的工资的员工姓名、工资(使用>ALL)
    SELECT ENAME,SAL
    FROM EMP
    WHERE  SAL >ALL (SELECT SAL
    FROM EMP
    WHERE DEPTNO = 30);
    第三步:查询部门名称(多表查询);
    SELECT E.ENAME,E.SAL,D.DNAME
    FROM EMP E,DEPT D
    WHERE  E.SAL >ALL (SELECT SAL
    FROM EMP
    WHERE DEPTNO = 30)
       AND D.DEPTNO = E.DEPTNO;

    第四步:查询部门人数
    SELECT DEPTNO,COUNT(EMPNO)
    FROM EMP
    GROUP BY DEPTNO;


    SELECT E.ENAME,E.SAL,D.DNAME,TEMP.COUNT
    FROM EMP E,DEPT D,(SELECT DEPTNO,COUNT(EMPNO) COUNT
    FROM EMP
    GROUP BY DEPTNO
       ) TEMP 
    WHERE  E.SAL >ALL (SELECT SAL
       FROM EMP
       WHERE DEPTNO = 30)
       AND D.DEPTNO = E.DEPTNO
       AND E.DEPTNO = TEMP.DEPTNO;
       
    2、查询工资比‘SMITH’或‘ALLEN’ 高的所有员工的编号、姓名、部门名称、领导姓名、最高、低工资
    第一步:查询‘SMITH’或‘ALLEN’ 的工资
    SELECT SAL 
    FROM EMP
    WHERE ENAME IN('SMITH','ALLEN');

    第二步:查询高于SMITH’或‘ALLEN’ 员工姓名、编号(在WHERE子句中使用子查询)
    SELECT ENAME,EMPNO
    FROM EMP 
    WHERE SAL >ANY(SELECT SAL 
       FROM EMP
       WHERE ENAME IN('SMITH','ALLEN'))
      AND ENAME NOT IN  ('SMITH','ALLEN');

    第三步:查询领导姓名
    SELECT E.ENAME,E.EMPNO,M.ENAME
    FROM EMP E,EMP M 
    WHERE E.SAL >ANY(SELECT SAL 
       FROM EMP
       WHERE ENAME IN('SMITH','ALLEN'))
      AND E.ENAME NOT IN  ('SMITH','ALLEN')
      AND E.MGR = M.EMPNO(+);
      
    第四步:查询部门信息
    SELECT E.ENAME,E.EMPNO,M.ENAME,D.DNAME
    FROM EMP E,EMP M,DEPT D
    WHERE E.SAL >ANY(SELECT SAL 
       FROM EMP
       WHERE ENAME IN('SMITH','ALLEN'))
      AND E.ENAME NOT IN  ('SMITH','ALLEN')
      AND E.MGR = M.EMPNO(+)
      AND E.DEPTNO = D.DEPTNO;
    第五步:查询最高、底工资



    SELECT E.ENAME,E.EMPNO,M.ENAME,D.DNAME,TEMP.MAX,TEMP.MIN,TEMP.AVG,TEMP.COUNT
    FROM EMP E,EMP M,DEPT D,(
    SELECT DEPTNO,MAX(SAL) MAX,MIN(SAL) MIN,AVG(SAL)AVG,COUNT(EMPNO) COUNT
    FROM EMP
        GROUP BY DEPTNO) TEMP
    WHERE E.SAL >ANY(SELECT SAL 
       FROM EMP
       WHERE ENAME IN('SMITH','ALLEN'))
      AND E.ENAME NOT IN  ('SMITH','ALLEN')
      AND E.MGR = M.EMPNO(+)
      AND E.DEPTNO = D.DEPTNO
      AND TEMP.DEPTNO = E.DEPTNO;

     

     

    展开全文
  • oracle数据库入门.ppt

    2010-07-29 17:03:56
    oracle数据库入门.ppt oracle数据库入门.ppt oracle数据库入门.pptoracle数据库入门.pptoracle数据库入门.pptoracle数据库入门.ppt
  • 前言 Oracle 数据库是目前应用广泛的大型商用关系数据库产品,因此掌握基本的 Oracle ...Oracle数据库特点 Oracle 数据库经过数十年发展,功能丰富,性能优越,可以满足企业级的数据密集型业务处理需求,它有如下...

    前言

    Oracle 数据库是目前应用广泛的大型商用关系数据库产品,因此掌握基本的 Oracle 数据库知识也成了每个开发人员的必须要求,本文是笔者对 Oracle 数据库的一些浅薄理解,希望能通过写博客在提高自己的同时也能帮助更多人,如有错漏,还望包涵指教。

     

    Oracle数据库特点

    Oracle 数据库经过数十年发展,功能丰富,性能优越,可以满足企业级的数据密集型业务处理需求,它有如下主要特点

     (1)可移植性强

     (2)支持多用户以及高并发事务

     (3)具有高度可扩展能力,提高大规模数据的处理能力

     (3)安全性能优越

     (5)支持多种标准操作接口以及编程规范

     

    Oracle 数据库体系结构

    Oracle 数据库具有复杂的体系结构,包括数据库实例和数据库文件两大组成部分。其中数据库实例包括内存结构和各种后台进程;数据库文件包括数据文件、控制文件以及重做日志文件等多种文件类型

     

    数据库实例

    数据库实例内存结构包括

    (一)SGA(系统全局区):由所有服务器进程和后台进程共享。SGA 各个主要组成部分如下

            (1)数据高速缓存:缓存频繁访问的数据,提高数据读写效率

            (2)重做日志缓存:缓存重做日志,通过批量写入磁盘的方式提高重做日志的保存效率

            (3)共享池:缓存已执行的SQL语句的编译方案和执行计划

            (4)大型池:缓存大型 I/O 数据的可选区域,支持并行查询、数据备份以及恢复操作

            (5)Java 池:内嵌的 Java 存储过程或其他 Java 程序运行时需要的内存

            (6)流池:缓存流进程在数据库间移动或复制数据时使用的队列消息,采用队列结构存储

    (二)PGA(程序全局区):由各个服务器进程和后台进程专用

            (1)排序区:存放排序操作所产生的临时数据

            (2)会话区:存放用户会话所具有的角色、权限以及性能统计

                   (3)游标区:存放执行游标操作时产生的数据​

                   (4)堆栈区:存放用户会话过程产生的程序变量和会话变量数据

    数据库实例后台进程:数据库服务器接受用户请求后,会调用相关后台进程进行数据库操作。包括 DBWR,LGWR 等等

            (1)DBWR:数据库写入进程,负责把数据高速缓存中的被修改的数据写入磁盘文件,从而保证数据高速缓存中有足                                         够的空闲空间 

            (2)LGWR:重做日志写入进程,把重做日志缓存中的日志内容写入联机的重做日志文件中,从而释放重做日志缓存                                         空间

            (3)RECO:分布式事务恢复进程,可以用于自动解决分布式数据库环境中出现的事务故障

            (4)CKRT:检查点进程,用于执行数据库检查点事件,触发 DBWR 和 LGWR 进程保存数据,可以维护数据库的一                                        致性状态

            (5)SMON:系统监控进程,负责在实例启动时对数据库进行恢复,并用于清理不再使用的临时空间

            (6)PMON:进程监控进程,在用户进程出现故障时执行进程恢复,并负责清理内存储区和释放该进程所使用的资源

            (7)ARCH:日志归档进程,用于将写满的在线日志文件复制到指定的存储位置,实现重做日志文件的在线备份

            (8)LCKn:锁进程,用于实例间的封锁,在具有并行服务器选项环境下使用,可最多建立 10 个进程

     

    数据库文件

    用于实际保存各类数据,实际上构成数据库的物理结构

    (1)数据文件:存储数据库的所有数据

    (2)控制文件:用户记录数据库的物理存储结构信息

    (3)重做日志文件:保存用户对数据库的操作记录

    (4)归档日志文件:保存已写满的重做日志文件,是历史重做日志文件的备份

    (5)参数文件:保存数据库启动时需要的初始化参数值

    (6)备份文件:进行数据库备份操作时产生的文件

    (7)其他文件:包括跟踪文件、口令文件和警告文件等

     

     

     

     

     

    展开全文
  • ORACLE 数据库入门.pdf

    2008-05-21 08:41:08
    ORACLE 数据库入门
  • Oracle数据库入门(使用参考)

    千次阅读 2021-03-06 22:54:01
    Oracle数据库入门(使用参考) 零、简介 Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上...

    Oracle数据库入门(使用参考)

    零、简介

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

    ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。

    一、与mysql对比

    内容挺多的,请参考这篇融合怪文章 https://blog.csdn.net/qq_44769485/article/details/114460712

    一、Oracle基础和表的CURD

    1.表空间以及用户的创建-用户的授权

    -- 创建表空间
    create tablespace oracletest   -- 创建表空间
    datafile 'E:\oracle\tablespace\oracletest.dbf'   -- 把表空间放在那,这里要指定路径名以及文件名,必须以.dbf结尾
    size 100m   -- 设置初始容量
    autoextend on -- 设置自动扩容
    next 10m;  -- 每次扩容10兆
    
    -- 删除表空间
    drop tablespace oracletest;
    
    -- 创建用户
    create user oracletest   -- 创建用户
    identified by oracletest -- 设置密码
    default tablespace oracletest;  -- 设置用户出生位置,出生在那个表空间
    
    -- 给用户授权
    -- oracle数据库中常用角色
    connect -- 连接角色 ,基本角色
    resource -- 开发者角色
    dba -- 超级管理员角色
    
    --给oracletest用户授予dba角色
    grant dba to oracletest;
    
    --切换到oracletest用户
    

    2.数据类型与表的创建

    -- 创建一个person表
    -- 数据类型
    --    Varchar,varchar2  表示一个字符串,可自动缩容,但不能自动扩容
    --    char              不可变字符类型
    --    NUMBER            NUMBER(n)表示一个整数,长度是n  例: number(2) 这就是0到99
    --                      NUMBER(m,n)表示一个小数,总长度是m,小数是n,整数是m-n
    --    DATE              表示日期类型              
    --    CLOB              大对象,表示大文本数据类型,可存4G
    --    BLOB              大对象,表示二进制数据,可存4G
    create table person(
           pid number(20),
           pname varchar2(10)
    );
    
    

    3.修改表结构

    -- 修改表结构
    
    -- 添加一列
    alter table person add (sex number(1),money number(4));
    -- 修改列类型 modify(修改)
    alter table person modify sex char(1);
    -- 修改列名称 column(列)
    alter table person rename column sex to gander;
    -- 删除一列
    alter table person drop column money;
    

    4.数据的增删改

    -- 数据的增删改
    
    -- 数据的查询
    select * from person; 
    -- 添加一条记录
    insert into person(pid,pname,sex) values(1,'小明','男');
    commit;
    -- 修改一条数据
    update person set pname='小马' where pid=1;
    commit;
    -- 删除记录
    -- 删除表中全部记录 
    delete from person;
    -- 删除表结构
    drop table person;
    -- 先删除表,再创建表.效果等同于删除表中全部记录    truncate(截断=删除)
    -- 在数据量大的情况下,尤其在表中带有索引的情况下,该操作效率高
    -- 索引可以提供查询效率,但是会影响增删改的效率
    truncate table person;
    

    5.序列的使用

    -- 序列的使用
    -- 序列:默认从1开始,一次递增,主要用来给主键赋值使用
    -- 序列不真的属于任何一张表,但是可以逻辑和表做绑定
    -- dual:虚表,只为了补全语法,没有任何意义
    create sequence s_person;
    select s_person.nextval from dual;
    -- 序列的使用:添加一条记录(设置主键增长)
    insert into person values(s_person.nextval,'小王','男');
    commit;
    select * from person;
    

    6.scott用户解锁

    -- scott用户,密码默认是tiger
    -- 解锁scott用户
    alter user scott account unlock;
    -- 解锁scott的密码[此句也可以用来重置密码]
    alter user scott identified by tiger;
    -- 切换到scott用户
    select * from emp;
    

    7.单行函数

    -- 单行函数:作用于一行,返回一个值
    
    -- 字符函数
    select upper('yes') from dual; --小写变大写
    select lower('YES') from dual; --大写变小写
    -- 数值函数
    select round(26.14,1) from dual;-- 四舍五入,后面参数表示保留的位数,-1表示往前保留一位(试试就知道了)
    select trunc(26.14,1) from dual;-- 直接截取,保留小数点后一位,再后面的直接截取掉
    select mod(10,3) from dual;-- 取余
    -- 日期函数
    select sysdate-e.hiredate from emp e;-- 查询出emp表中所有员工入职距离现在几天
    select sysdate+1 from dual;--获取明天这个时候的时间
    select months_between(sysdate,e.hiredate) from emp e;-- 查询出emp表中所有员工入职距离现在几月
    select months_between(sysdate,e.hiredate)/12 from emp e;-- 查询出emp表中所有员工入职距离现在几年
    select round((sysdate-e.hiredate)/7) from emp e;-- 查询出emp表中所有员工入职距离现在几周
    -- 转换函数
    select to_char(sysdate,'fm yyyy-mm-dd hh24:mi:ss') from dual;--当前日期转换成字符串,fm表示不带0开头,24表示用24小时计时法
    select to_date('2020-8-12 11:45:32','fm yyyy-mm-dd hh24:mi:ss') from dual;-- 字符串转日期
    -- 通用函数
    -- null值和任意数字运算结果都为null
    -- nvl(e.comm,0) 如果值为null,则换成0
    select e.sal+nvl(e.comm,0) from emp e;-- 算出emp表中所有员工的年薪+奖金
    
    

    8.条件表达式

    -- 条件表达式
    
    --下面两个是mysql和oracle都统用的条件表达式
    -- 给emp表中员工起中文名称
    select e.ename, -- 等值判断用这种写法
           case e.ename 
              when 'SMITH' then '曹贼'
                when 'ALLEN' then '大儿子'
                  when 'WARD' then '诸葛小儿'
                    else '无名'
                      end 
    from emp e;
    --判断emp表中员工工资,如果高于3000显示高收入,如果高于1500低于3000显示中收入,低于1500显示低收入,其余都是低收入
    select e.sal,-- 范围判断用这种写法
           case                   -- 这就类似一个switsh  
             when e.sal>300 then '高收入' -- 第一个条件不满足才会到下一个条件
               when e.sal>1500 then '中等收入'
                   else '低收入'
                     end
    from emp e;
    -- Oracle中除了起别名,都用单引号
    -- Oracle专用条件表达式
    select e.ename,
           decode(e.ename,
             'SMITH' , '曹贼',
                 'ALLEN' , '大儿子',
                   'WARD',  '诸葛小儿',
                     '无名') "中文名"  --这个别名可以双引号或者直接写中文名
    from emp e;     
    

    9.多行函数

    -- 多行函数【聚合函数】:作用于多行,返回一个值
    select count(1) from emp;--查询总数量 这里的1等于emp表的主键,推荐写1
    select sum(sal) from emp;--求和  求所有员工工资综合
    select max(sal) from emp;--求最大 求工资最大的值
    select min(sal) from emp;--求最小 求工资最小的值
    select avg(sal) from emp;--求平均 求工资平均值
    

    10.分组查询

    -- 分组查询 【重要】
    
    --分组查询中,出现再group by后面的原始列,才能出现在select后面
    --没有出现再group by后面的列,想在select后面,必须加上聚合函数                 
    --聚合函数有一个特性,可以把多行记录编程一个值
    --所有条件都不能使用别名来判断
                 --where执行先于select
    
    -- 查询出每个部门的平均工资
    select e.deptno,avg(e.sal) --e.ename
    from emp e
    group by e.deptno;--分组依据
    
    --查询出平均工资高于2000的部门信息
    select e.deptno,avg(e.sal)
    from emp e
    group by e.deptno
    having avg(e.sal)>2000;--判断工资大于2000
    
    --查询出每个部门工资高于800的员工的平均工资
    select e.deptno,avg(e.sal)
    from emp e
    where e.sal>800
    group by e.deptno;
    
    --【重要】where是过滤分组前的数据,having是过滤分组后的数据
    --        表现形式:where在group by之前,having在group by之后
    
    --查询出每个部门工资高于800的员工的平均工资
    --然后再查询出平均工资高于2000的部门
    select  e.deptno,avg(e.sal)
    from emp e
    where e.sal>800
    group by e.deptno
    having avg(e.sal)>2000;
    
    

    11.多表查询的一些概念

    -- 多表查询中的一些概念
    
    --笛卡尔积
       --两张表的数据量进行相乘
    select * 
    from emp,dept;
    --等值连接
    select * 
    from emp e,dept d 
    where e.deptno=d.deptno;
    --内链接(这是sql最开始的等值连接写法,推荐使用等值连接)
    select *
    from emp e inner join dept d
    on e.deptno=d.deptno;
    --查询中所有部门,以及部门下的员工信息,【外连接】
    select *   -- 右外查询 right
    from emp e right join dept d
    on e.deptno=d.deptno;
    --查询所有员工信息,以及员工所属部门
    select *   -- 左外查询 left
    from emp e left join dept d
    on e.deptno=d.deptno;
    --oracle中专用的外连接
    select * from emp e,dept d where e.deptno(+)=d.deptno; --(+)放在那边,他的对面的全部信息,和(+)边的符合条件的数据
    
    

    12.子链接概念和练习

    --查询出员工姓名,员工领导姓名
    select e1.ename,e2.ename -- 自链接:自联结其实就是站在不同的角色把一张表看成多张表
    from emp e1,emp e2
    where e1.mgr=e2.empno;
    
    --查询出员工部门名称和员工领导名称和部门名称
    select e1.ename,e2.ename,d.dname
    from emp e1,emp e2,dept d
    where e1.mgr=e2.empno
    and e2.deptno=d.deptno
    ;
    -- 查询出每个员工编号,姓名,部门名称,工资等级和他的上级领导的姓名,工资等级
    
    select e1.empno,e1.ename,d.dname,
           case
             when e1.sal>3000 then '高收入'
               when e1.sal>1500 then '中收入'
                 when e1.sal<1500 then '低收入'
                   else '低收入'
                     end ,d.dname,case
                                        when e2.sal>3000 then '高收入'
                                          when e2.sal>1500 then '中收入'
                                            when e2.sal<1500 then '低收入'
                                              else '低收入'
                                                end      
    from emp e1,emp e2,dept d
    where e1.mgr=e2.empno and e1.deptno=d.deptno ;
    

    13.分页查询

    -- 分页查询
    --rownum行号:当我们做select操作得时候
    --每查询一行记录,就会在该行上加一个行号
    --行号从1开始,一次递增,不能跳着走 【重要】
    
    --排序操作会影响rownum得顺序
    --如果涉及到排序,但是还要使用rownum得话,我们可以再次嵌套查询
    --倒序查询并加上第二次查询得行号
    select rownum,t.* from (select * from emp e order by e.sal desc) t;   -- order by 排序操作,默认正序
    
    --emp表工资倒叙排列后,每页五条记录,查询第二页
    --rownum这个不能被别的表.(点)这个是个独立的东西,不算在表里 【重要】
    select * 
    from(
           select rownum r,t.* 
           from (
                select * 
                from emp 
                order by sal desc
                ) t 
           where rownum<11
           ) 
    where r>5;
    
    

    二、Oracle加强部分

    1.视图

    --视图
    --视图的概念:视图就是提供一个查询的窗口,所有数据来自于原表
    
    --查询语句创建表
    create table emp as select * from scott.emp;
    select * from emp;
    --创建视图【必须有dba权限】
    create view v_emp as select ename,job from emp;
    --查询视图
    select * from v_emp;
    --修改视图【不推荐】
    update v_emp set job='CLERK' where ename='ALLEN';
    commit;
    --创建只读视图
    create view v_emp1 as select * from emp with read only; 
    --视图的作用?
    --第一:视图可以屏蔽一些敏感字段
    --第二:保证总部和分部数据及时统一
    
    
    

    2.索引

    -- 索引
    --索引的概念:索引就是再表的列上构建一个二叉树
    --达到大幅度提高查询效率的目的,但是索引会影响增删改的效率
    
    --单列索引
    --创建单列索引
    create index idx_ename on emp(ename);-- 创建一个索引 idx_ename 作用在 emp表的 ename属性上
    --单列索引触发规则,条件必须是索引列中的原始值
    --单行函数,模糊查询,都会影响索引的触发
    select * from emp where ename='SCOTT';--触发单行索引
    
    --复合索引
    --创建复合索引
    create index idx_enamejob on emp(ename,job);--ename为优先索引列
    --复合索引中第一列为有先索引列
    --如果要触发复合索引,必须包含有优先检索列中的原始值
    select * from emp where ename='SCOTT' and job='xx';--触发复合索引
    select * from emp where ename='SCOTT' or job='xx';--不触发索引
    select * from emp where ename='SCOTT';--如果存在单列索引和多列索引,那么这种情况就触发单列索引
    

    3.PLSQL语言定义变量

    --pl/sql编程语言
    --pl/sql编程语言是对sql语言的扩展,使得sql语言具有过程化编程的特性
    --pl/sql编程语言比一般的过程化编程语言,更加灵活高效
    --pl/sql编程语言主要用来编写储存过程和储存函数等
    
    --声明方法
    --赋值操作可以使用:=也可以使用into查询语句赋值
    declare
      i number(2):=10;
      s varchar2(10):='小明';
      ena emp.ename%type;--引用类型变量
      emprow emp%rowtype;--记录型变量
    begin
      dbms_output.put_line(i);
      dbms_output.put_line(s);
      select ename into ena from emp where empno = 7788;-- 查询emp表中 empno为7788的用户的名字,将名字字段的属性和值都赋值给 ena
      dbms_output.put_line(ena);
      select * into emprow from emp where empno = 7788;-- 查询emp表中 empno为7788的用户的信息列,将这一行信息封装给emprow,现在emprow相当于一行数据
      dbms_output.put_line(emprow.ename || '的工作为' || emprow.job);
    end;  
    

    4.PLSQL中的if判断

    --pl/sql中的if判断
    
    --输入大于18的数字,判断为未成年
    --输入大于18小于40,判断为中年人
    --输入大于50 ,判断为老年人
    declare
      i number(2):=&年龄;
    begin
      if i<18 then
        dbms_output.put_line('未成年'); 
        elsif i<40 then
          dbms_output.put_line('中年人');
          else
            dbms_output.put_line('老年人');
            end if;
    end;
    
    

    5.PLSQL中的循环

    --pl/sql中的loop循环
    
    --用三种方式输出1到10十个数字
    
    --while循环
    declare
      i number(2):=1;
    begin
      while i<11 loop
        dbms_output.put_line(i);
        i:=i+1;
        end loop;
    end;
    
    --exit循环(退出循环)【一般这个用的比较多】
    declare
        i number(2) :=1;
    begin
      loop
        exit when i>10;--注意这个when(什么时候)
        dbms_output.put_line(i);
        i:=i+1; 
        end loop;
    end;
    
    --for循环
    declare
    begin
      for i in 1..10 loop
        dbms_output.put_line(i);
      end loop;
    end;
    
    
    

    6.PLSQL中的游标

    --游标:可以存放多个对象,多行记录 (类似于java里面的集合)
    --输出emp表中所有员工的姓名
    
    declare
        cursor c1 is select * from emp;--将整个emp表装进c1游标中
        emprow emp%rowtype;--创建一个记录型变量,变量类型为emp中的一行数据
    begin
      open c1;--开启游标
      loop
        fetch c1 into emprow;--个人感觉像一个foreach,只不过是放判断前面  fetch(取)
        exit when c1%notfound;--当c1查不到东西的时候退出查询
        dbms_output.put_line(emprow.ename);--这个记录型变量一定要点一个属性,他不能当作一行数据来查
      end loop;  
      close c1;--关闭游标
    end;
    
    --给指定的部门员工涨工资  (我感觉不用写的这麽麻烦,只用一个where判断不就完了)
    select * from emp where deptno=10;
    declare
       cursor c2(eno emp.deptno%type) is select empno from emp where deptno=eno;--创建一个有参数的游标,将游标赋值where条件为deptno=传入的指定参数
       en emp.empno%type;--用于接受员工号码
    begin
      open c2(10);--开启游标并传参,这个因为是含参游标,所以必须传参数
       loop
         fetch c2 into en;--将c2的数据foreach到en中(每个循环都类似一次重新赋值)
         exit when c2%notfound;--退出条件为c2找不到东西为止
         update emp set sal=sal+100 where empno=en;--将部门id等于c2的参数的员工的工资加100
         commit;--提交事务
       end loop;
      close c2;--关闭就不必传参了
    end;
    
    

    7.储存过程

    --存储过程:只是类似于java的方法,这里叫过程
    
    --存储过程:春促过程就是提前已经编译高的一段pl/sql语言。防止再数据库端
    ----可以直接被调用,这一段pl/sql一般都是固定步骤的业务
    --给指定员工工资涨100块钱
    --创建   可修改    方法    方法名   (参数名 in/out 参数类型)
    create or replace procedure p1(eno emp.empno%type) -- or replace 这个加上之后可以修改错误(就是允许替换方法内容)
    is
    begin
      update emp set sal=sal+100 where empno=eno;  --方法调用后会执行这里面的方法
      commit;
    end;  
    
    select * from emp where empno=7788;
    
    declare
    begin
      p1(7788);--方法的调用
    end;
    
    

    8.储存函数

    --存储函数
    
    --通过储存函数实现计算指定员工的年薪
    --储存过程和储存函数的参数都不能带长度
    --储存函数和返回值类型不能带长度
    --创建   可修改的   存储函数   函数名  (参数列表 默认in) 返回值类型
    create or replace function f_yearssal(eno emp.empno%type)return number--创建存储函数 
    is
     s number(10);--定义一个接收返回值的对象
    begin
       select sal*12+nvl(comm,0)into s from emp where empno=eno;-- 计算指定员工的年薪 nvl(comm,0)奖金 如果为null就用0代替,将查询的值存入s对象中
       return s; //返回年薪
    end;
    
    declare
       s number(10);--接收对象
    begin
      s := f_yearssal(7788);--执行方法,存储函数的返回值必须被接收
      dbms_output.put_line(s);--打印返回值
    end;
    
    

    9.out类型参数如何使用

    --out类型参数如何使用
    
    -- in和out类型参数的区别是什么?
    -- 凡是涉及到into查询语句赋值或者:=赋值操作的参数,都必须使用out来修饰
    
    
    --使用储存过程来计算年薪
    create or replace procedure p_yearsal(eno emp.empno%type,yearsal out number)--out修饰的参数在调用过程时不用传参,只需要设置一个对象取接收即可
    is
      s emp.sal%type;--接收年工资
      c emp.comm%type;--接收奖金
    begin
      select sal*12,nvl(comm,0) into s,c from emp where empno=eno;--查询年工资赋值给s 查询奖金并对null做化0处理然后赋值给c
      yearsal:=s+c;--对out修饰的参数进行传值(类似于返回值)
    end;
    
    declare
      yearsal number(10);--接收out修饰对象传来的值,这个参数名不必须要和过程默认参数名一样
    begin
      p_yearsal(7788,yearsal);--调用过程
      dbms_output.put_line(yearsal);--打印接收的out参数
    end;
    
    
    

    10.储存过程和储存函数的区别

    --储存过程和储存函数的区别
    --语法区别:关键字不一样
    -----------存储函数比存储过程多了两个return
    --本质区别:存储函数有返回值,而存储过程没有返回值
    -----------如果存储过程想实现有返回值的业务,我们就必须使用out类型的参数
    -----------即使是存储过程使用了out类型的参数,其本质也不是有了返回值
    -----------而是在存储过程内部给out类型参数赋值,在执行完毕之后,我们直接拿到输出类型参数的值
    
    --我们可以使用存储函数有返回值的特性,来自定义函数
    --而存储过程不能用来自定义函数
    --案例需求:查询出员工姓名,员工所在部门名称
    --案例准备工作:把scott用户下的dept表复制到当前用户下
    create table dept as select * from scott.dept;
    --使用传统方式来实现案例需求
    select e.ename,d.dname
    from emp e,dept d
    where e.deptno=d.deptno;
    --使用存储函数来实现提供一个部门编号,输出一个部门名称
    create or replace function fdna(dno dept.deptno%type) return dept.dname%type
    is
      dna dept.dname%type;
    begin
      select d.dname
      into dna
      from dept d
      where d.deptno=dno;
      return dna;
    end;
    
    --使用fdna存储函数来实现案例需求:查询出员工姓名,员工所在部门名称
    select  e.ename,fdna(e.deptno)
    from emp e;
    
    

    11.触发器

    --触发器:就是制定一个规则,在我们做增删改操作的时候
    ---只要满足该规则,自动触发,无需调用
    ---语句级触发器:不包含有for each row的触发器
    ---行级触发器:包含有for each row的就是行级触发器
    -------------------加for each row是为了使用:old或者:new对象或者一行记录
    
    --语句级触发器
    ---插入一条数据,输出一个新员工入职
    create or replace trigger t1 --创建语句级触发器
    after--在语句执行之后执行
    insert--在insert语句执行这个触发器
    on person--触发器作用于person表
    declare
    begin
      dbms_output.put_line('有一位新员工加入');--触发器触发打印这段文字
    end;
    
    select * from person;
    insert into person values(1,'小红','女');--插入操作
    commit;
    --行级触发器
    --不能给员工降薪
    create or replace trigger t2  -- 创建行级触发器
    before--在语句执行之后执行
    update--触发器作用在更新语句
    on emp--触发器作用于emp表
    for each row--行级触发器需要加这段,方便使用:old和:new (修改之前的旧对象,和修改之后的新对象)
    declare
    begin
       if :old.sal>:new.sal then--判断如果工资降了触发下列异常
         raise_application_error(-20001,'不能给员工降薪');-- raise_application_error(-20001~20999之间,'错误提示信息');
         end if;  
    end;  
    
    update emp set sal=sal-1 where emp.empno=7788;--更新操作
    commit;
    select * from emp;
    
    

    12.触发器实现主键的自增

    --触发器实现主键自增。【行级触发器】
    --分析:在用户做插入操作的之前,拿到即将插入的数据
    -----给该数据中的主键列复制
    create or replace trigger auid--创建行级触发器
    before --在语句执行之后执行
    insert --作用在插入语句
    on person --作用在person表
    for each row --添加这一段
    declare 
    begin
      select s_person.nextval into :new.pid from dual; --语句执行之前执行传序列下一个的值,然后付给修改后的对象的pid
    end;  
    
    select s_person.nextval from dual; 
    select * from person;
    
    insert into person values(1,'小兰','男');--这里无论pid传什么都对自增长没有影响
    commit;
    
    

    之前学的时候的一些笔记,欢迎参考

    展开全文
  • Oracle 数据库入门学习

    2019-05-07 21:28:56
    什么是数据库 所谓的数据库其实就是数据的集合。用户可以对集合中的数据进行新增、查询、更新、 删除等操作。...Oracle Mysql PostgreSQL DB2 MicrosoftSQLServer MicrosoftAccess 2非关系型 Redis Mongodb B...

    什么是数据库

    所谓的数据库其实就是数据的集合。用户可以对集合中的数据进行新增、查询、更新、 删除等操作。数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、 与应用程序彼此独立的数据集合。

    2 数据库类型

    关系型

    Oracle
    Mysql
    PostgreSQL
    DB2
    MicrosoftSQLServer
    MicrosoftAccess

    2非关系型

    Redis Mongodb BigTable

    3 关系型数据库与非关系型数据之间的区别

    3.1关系型数据库

    1特点

    关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组 织。支持事务一致特性。

    2优点

    易于维护:都是使用表结构,格式一致; 使用方便:SQL 语言通用; 复杂操作:支持 SQL,可用于一个表以及多个表之间非常复杂的查询;

    3缺点

    性能差:读写性能比较差,尤其是海量数据的高效率读写,传统关系型数据库来说,硬 盘 I/O 是一个很大的瓶颈; 存储方式不灵活:固定的表结构,灵活度稍欠;

    2非关系型数据库

    1特点

    非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以 是文档或者键值对等。不支持事务一致特性。

    2优点

    格式灵活:存储数据的格式可以是 key,value 形式、文档形式、图片形式等等; 高扩展性:基于键值对,数据没有耦合性,容易扩展; 速度快:无需经过 sql 层的解析,读写性能很高;
    3缺点

    不支持 SQL:不提供 sql 支持,学习和使用成本较高; 不支持事务:无事务处理能力; 不支持复杂查询:数据结构相对复杂,复杂查询方面稍欠;

    Oracle 数据库

    所有的关系型数据库存储数据的集合就是磁盘中的文件。Oracle 数据库其实就是一组文 件的集合。Oracle 数据库分别由:数据文件、控制文件、日志文件所构成。

    1数据文件(.DBF)

    数据文件是一个二进制文件,是用于保存用户应用程序数据和 Oracle 系统内部数据的 文件,这些文件在操作系统中就是普通的操作系统文件。Oracle 在创建表空间的同时会创建 数据文件。

    2控制文件(.CTL)

    控制文件是一个二进制文件,它主要记录数据库的名称、数据库的数据文件存放位置等 信息。一个控制文件只能属于一个数据库。如果控制文件丢失,这数据库就无法操作。

    3日志文件(.LOG)

    日志文件在 Oracle 数据库中分为重做日志(RedoLogFile)文件和归档日志文件两种。重 做日志文件是 Oracle 数据库正常运行不可缺少的文件。重做日志文件主要记录了数据库操 作过程。用于备份和还原数据库,以达到数据库的最新状态。

    什么是 Oracle 实例

    实例就是数据库启动后分配的内存和建立的后台进程. 数据库关闭后,物理上的文件还 存在,但实例(分配的内存和建立的进程)就没有了

    Oracle 实例与数据库的关系

    实例就是一组操作系统进程(或者是一个多线程的进程)以及一些内存。这些进程可以 操作数据库;而数据库只是一个文件集合(包括数据文件、临时文件、重做日志文件和控制 文件)。 在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。大多数情况下, 反过来也成立:一个数据库上只有一个实例对其进行操作。

    4 Oracle 版本说明

    Oracle8i

    Oracle9i

    Oracle10g

    Oracle11g

    Oracle12c

    I:i 代表 Internet。8i 版本开启对 Internet 的支持。所以,在版本号之后,添加了标识 i。

    G:g 代表 Grid 网格。10g 加入了网格计算的功能,因此版本号之后的标识使用了字母 g。

    C:c 代表云(cloud)计算设计。12c 版本表示对云计算的支持。

    展开全文
  • Oracle数据库入门笔记(上)

    千次阅读 2021-02-05 00:02:49
    Oracle数据库入门 1.创建表空间 create tablespace bloghut datafile 'C:\bloghut.dbf' size 100m autoextend on next 10m; bloghut 为表空间名称 datafile 指定表空间对应的数据文件 size 后定义的...
  • Oracle数据库入门笔记(下)

    千次阅读 2021-02-05 18:27:30
    Oracle数据库入门笔记(下) 1.视图 1.视图的概念: 视图就是提供一个查询的窗口,所有数据来自原表。创建视图必须有dba权限 1.2视图的作用: 视图可以屏蔽一些敏感的字段 保证总部和分部数据及时统一。 保护数据起...
  • Oracle数据库入门——初级系列教程

    千次阅读 2018-09-17 12:01:22
    Oracle数据库入门——初级系列教程
  • Oracle数据库入门心得

    千次阅读 2014-01-02 15:20:57
    Oracle数据库入门心得 Oracle的体系太庞大了,对于初学者来说,难免会有些无从下手的感觉,什么都想学,结果什么都学不好,所以把学习经验共享一下,希望让刚刚入门的人对oracle有一个总体的认识,少走一些弯路。...
  • 03.风哥Oracle数据库入门必备Linux基础系列视频教程(Oracle零基础教程) 链接:https://pan.baidu.com/s/19C4vzPKq8EwKtJublmIB3w  提取码:lez8   
  • 一、Oracle数据库入门到高薪培训视频教程(从 Oracle11g 到 Oracle19c) 本套Oracle视频教程学习地址: https://edu.51cto.com/course/18034.html 为满足想快速入门学习Oracle的学员,风哥特别设计的一套比较全面...
  • Oracle数据库入门—基础知识

    千次阅读 2016-04-08 21:55:16
    Oracle数据库的主要特点 1. 支持多用户、大事务量的事务处理 2. 数据安全性和完整性控制 3. 支持分布式数据处理 4. 可移植性 数据库服务器对数据库表进行最佳管理,处理多个客户端对同一数据的并发访问。...
  • 风哥Oracle数据库基础入门培训视频课程,讲解了Oracle一些基础概念和简单的维护知识,是ORACLE入门学习的课程!
  • Oracle 19c 数据库基础入门视频教程

    千人学习 2020-10-04 09:55:13
    我对Oracle数据库有十几年的使用经验,我们公司的数据库是Oracle数据库,基本上每天的编程工作都要写SQL语句,公司的历史数据比较多,需要通过编写SQL语句来进行查询处理,有两年时间,我的工作就是编写Oracle...
  • 04.风哥Oracle数据库实战入门-Oracle安装配置视频教程 链接:https://pan.baidu.com/s/1UDhT_A_e62sZshQ5n2toYQ  提取码:pqca 
  • oracle数据库快速入门 十年项目开发经验,主要从事java相关的开发,熟...
  • Oracle数据库入门心得

    2008-02-01 17:54:00
    Oracle的体系太庞大了,对于初学者来说,难免会有些无从下手的感觉,什么都想学,结果什么都学不好,所以把学习经验共享一下,希望让刚刚入门的人对oracle有一个总体的认识,少走一些弯路。 一、定位 oracle分两大...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,603
精华内容 18,641
关键字:

oracle数据库入门视频