Oracle Database 10 SQL开发指南


Oracle Database 10 SQL开发指南

文章插图
Oracle Database 10 SQL开发指南【Oracle Database 10 SQL开发指南】《Oracle Database 10 SQL开发指南》是2005年4月清华大学出版社出版的图书,作者是彭辉 。
基本介绍书名:Oracle Database 10 SQL开发指南
作者:彭辉
ISBN:9787302104872
定价:59.80元
出版社:清华大学出版社
出版时间:2005年04月01日
装帧:平装
开本:16开 
内容简介本书全面深入地论述了如何使用结构化查询语言(SQL)语句来访问Oracle资料库,以及使用PL/SQL(ProceduralLanguage/SQL)来编写包含SQL语句的程式 。本书由Oracle前产品经理JasonPrice亲笔撰写,基于新推出的SQL2003规範,详细介绍了OracleDatabase10g的新特性和功能 。全书内容系统、权威,能帮助读者快速掌握SQL的核心知识 。目录第1章简介 11.1关係资料库简介 11.2结构化查询语言(SQL)简介 21.3使用SQL*Plus 31.3.1启动Windows版本的SQL*Plus 41.3.2启动命令行版本的SQL*Plus 41.4使用SQL*Plus执行SELECT语句 51.5SQL*PlusWorksheet 61.6创建store模式 71.6.1运行SQL*Plus脚本创建store模式 71.6.2用来创建store模式的DDL语句 81.7添加、修改、删除行 151.7.1向表中添加行 151.7.2修改表中的现有行 161.7.3从表中删除行 171.8Oracle10g的新数据类型BINARY_FLOAT和BINARY_DOUBLE 171.8.1BINARY_FLOAT和BINARY_DOUBLE的优点 171.8.2在表中使用BINARY_FLOAT和BINARY_DOUBLE 181.8.3特殊值 181.9退出SQL*Plus 191.10OraclePL/SQL简介 191.11小结 20第2章从资料库表中检索信息 232.1对单表执行SELECT语句 232.2选择一个表中的所有列 242.3理解行标识符 252.4执行算术运算 252.4.1日期运算 262.4.2列运算 272.5使用列别名 282.6使用串连操作合併列的输出结果 292.7理解空值 292.8禁止显式重複行 312.9使用WHERE子句过滤行 322.9.1使用比较操作符 322.9.2使用SQL操作符 342.9.3使用逻辑操作符 362.9.4理解操作符的优先权 372.10使用ORDERBY子句对行进行排序 372.11执行使用两个表的SELECT语句 392.12使用表别名 412.13笛卡尔积 412.14执行使用多于两个表的SELECT语句 422.15理解连线条件和连线类型 432.15.1理解不等连线 432.15.2理解外连线 442.15.3理解自连线 472.16使用SQL/92语法执行连线 482.16.1使用SQL/92标準语法执行两个表的内连线 482.16.2使用USING关键字简化连线 492.16.3使用SQL/92执行多于两个以上表的内连线 502.16.4使用SQL/92执行多列的内连线 502.16.5使用SQL/92执行外连线 502.16.6使用SQL/92执行自连线 522.16.7使用SQL/92执行交叉连线 522.17小结 53第3章使用简单函式 553.1使用单行函式 563.1.1字元函式 563.1.2数字函式 643.1.3转换函式 693.1.4正则表达式函式 743.2使用聚合函式 783.2.1AVG()函式 793.2.2COUNT()函式 803.2.3MAX()和MIN()函式 803.2.4STDDEV()函式 813.2.5SUM()函式 813.2.6VARIANCE()函式 823.3对行进行分组 823.3.1使用GROUPBY子句对行进行分组 823.3.2调用聚合函式的错误用法 853.3.3使用HAVING子句过滤行分组 863.3.4组合使用WHERE和GROUPBY子句 863.3.5组合使用WHERE、GROUPBY和HAVING子句 873.4小结 88第4章日期和时间的存储与处理 894.1几个简单的存储和检索日期的例子 894.2使用TO_CHAR()和TO_DATE()转换时间值 914.2.1使用TO_CHAR()将时间值转换为字元串 914.2.2使用TO_DATE()将字元串转换为时间值 954.3设定默认的日期格式 984.4Oracle对2位年份的处理 994.4.1使用YY格式 994.4.2使用RR格式 994.5使用时间值函式 1014.5.1ADD_MONTHS()函式 1014.5.2LAST_DAY()函式 1024.5.3MONTHS_BETWEEN() 1024.5.4NEXT_DAY()函式 1034.5.5ROUND()函式 1034.5.6SYSDATE()函式 1044.5.7TRUNC()函式 1044.6理解时区 1054.6.1与时区有关的函式 1064.6.2资料库时区和会话时区 1064.6.3获取时区的时差 1074.6.4获取时区名 107 4.6.5将时间值从一个时区转换为另一个时区 1084.7使用时间戳 1084.7.1使用TIMESTAMP类型 1084.7.2与时间戳有关的函式 1124.8使用时间间隔 1164.8.1使用INTERVALYEARTOMONTH类型 1174.8.2使用INTERVALDAYTOSECOND类型 1194.8.3与时间间隔有关的函式 1214.9小结 122第5章使用SQL*Plus 1235.1查看錶结构 1235.2编辑SQL语句 1245.3保存、检索并运行档案 1265.4格式化列 1285.5设定页面大小 1305.6设定行大小 1315.7清除列格式 1315.8使用变数 1325.8.1临时变数 1325.8.2已定义变数 1355.9创建简单报表 1375.9.1在脚本中使用临时变数 1375.9.2在脚本中使用已定义变数 1375.9.3向脚本中的变数传递值 1385.9.4添加页眉和页脚 1395.9.5计算小计 1405.10自动生成SQL语句 1415.11小结 142第6章子查询 1436.1子查询的类型 1436.2编写单行子查询 1446.2.1在WHERE子句中使用子查询 1446.2.2在HAVING子句中使用子查询 1456.2.3在FROM子句中使用子查询(内联视图) 1466.2.4可能碰到的两个错误 1476.3编写多行子查询 1486.3.1在多行子查询中使用IN操作符 1486.3.2在多行子查询中使用ANY操作符 1496.3.3在多行子查询中使用ALL操作符 1496.4编写多列子查询 1506.5编写关联子查询 1506.5.1关联子查询的例子 1506.5.2在关联子查询中使用EXISTS和NOTEXISTS 1516.6编写嵌套子查询 1536.7编写包含子查询的UPDATE和DELETE语句 1556.7.1编写包含子查询的UPDATE语句 1556.7.2编写包含子查询的DELETE语句 1556.8小结 156第7章高级查询 1577.1使用集合操作符 1587.1.1示例表 1587.1.2使用UNIONALL操作符 1597.1.3使用UNION操作符 1607.1.4使用INTERSECT操作符 1617.1.5使用MINUS操作符 1617.1.6组合使用集合操作符 1627.2使用TRANSLATE()函式 163 7.3使用DECODE()函式 1647.4使用CASE表达式 1667.4.1使用简单CASE表达式 1667.4.2使用搜寻CASE表达式 1677.5层次化查询 1687.5.1示例数据 1687.5.2使用CONNECTBY和STARTWITH子句 1707.5.3使用伪列LEVEL 1717.5.4格式化层次化查询的结果 1717.5.5从非根节点开始遍历 1727.5.6在STARTWITH子句中使用子查询 1737.5.7从下向上遍历树 1737.5.8从层次查询中删除节点和分支 1747.5.9在层次化查询中加入其他条件 1757.6使用扩展的GROUPBY子句 1757.7使用ROLLUP子句 1777.7.1使用CUBE子句 1797.7.2使用GROUPING()函式 1817.7.3使用GROUPINGSETS子句 1837.7.4使用GROUPING_ID()函式 1847.7.5在GROUPBY子句中多次使用一个列 1867.7.6使用GROUP_ID()函式 1867.8使用分析函式 1877.8.1示例表 1887.8.2使用评级函式 1897.8.3使用反百分点函式 1957.8.4使用视窗函式 1967.8.5使用报表函式 2017.8.6使用LAG()和LEAD()函式 2037.8.7使用FIRST和LAST函式 2047.8.8使用线性回归函式 2047.8.9使用假想评级与分布函式 2057.9使用MODEL子句 2067.9.1示例MODEL子句 2067.9.2用位置标记和符号标记访问数据单元 2087.9.3用BETWEEN和AND返回特定範围内的数据单元 2087.9.4用ANY和ISANY访问所有的数据单元 2097.9.5用CURRENTV()获取某个维度的当前值 2097.9.6用FOR循环访问数据单元 2107.9.7处理空值和缺失值 2127.9.8更新已有的单元 2147.10小结 215第8章修改表的内容 2178.1使用INSERT语句添加行 2178.1.1忽略列的列表 2188.1.2为列指定空值 2198.1.3在列值中使用单引号和双引号 2198.1.4从一个表向另外一个表複製行 2198.2使用UPDATE语句修改行 2208.3使用DELETE语句删除行 2218.4资料库的完整性 2228.4.1主键约束 2228.4.2外键约束 222 8.5使用默认值 2238.6使用MERGE合併行 2258.7资料库事务 2278.7.1事务的提交和回滚 2278.7.2事务的开始与结束 2288.7.3保存点 2298.7.4事务的ACID特性 2308.7.5并发事务 2308.7.6事务锁 2328.7.7事务隔离级别 2328.7.8SERIALIZABLE事务隔离性级别的一个例子 2338.8查询闪回 2348.8.1使用闪回的授权 2348.8.2时间查询闪回 2348.8.3系统变更号查询闪回 2368.9小结 237第9章资料库安全性 2399.1用户 2399.1.1创建用户 2409.1.2修改用户密码 2419.1.3删除用户 2419.2系统特权 2419.2.1向用户授予系统特权 2429.2.2检查授予用户的系统特权 2439.2.3使用系统特权 2449.2.4撤销用户的系统特权 2449.3对象特权 2449.3.1向用户授予对象特权 2459.3.2检查已授予的对象特权 2459.3.3检查已接受的对象特权 2479.3.4使用对象特权 2499.3.5同名对象 2499.3.6公共同名对象 2509.3.7撤销用户的对象特权 2519.4角色 2519.4.1创建角色 2519.4.2为角色授权 2529.4.3将角色授予用户 2529.4.4检查授予用户的角色 2539.4.5检查授予角色的系统特权 2549.4.6检查授予角色的对象特权 2549.4.7使用授予角色的特权 2569.4.8默认角色 2569.4.9撤销角色 2579.4.10从角色中撤销特权 2579.4.11删除角色 2579.5小结 257第10章创建表、序列、索引和视图 25910.1表 25910.1.1创建表 26010.1.2获得有关表的信息 26110.1.3获得表中列的信息 26210.1.4修改表 26310.1.5重命名表 27110.1.6向表添加注释 27110.1.7截断表 27210.1.8删除表 27210.2序列 27210.2.1创建序列 27210.2.2获取有关序列的信息 27410.2.3使用序列 27510.2.4使用序列填充主键 27610.2.5修改序列 27710.2.6删除序列 27810.3索引 27810.3.1创建索引 27810.3.2创建基于函式的索引 27910.3.3获取有关索引的信息 28010.3.4获取列索引的信息 28110.3.5修改索引 281 10.3.6删除索引 28110.4视图 28210.4.1创建并使用视图 28210.4.2修改视图 28910.4.3删除视图 28910.5小结 290第11章PL/SQL编程简介 29111.1块结构 29211.2变数和类型 29311.3条件逻辑 29411.4循环 29411.4.1简单循环 29511.4.2WHILE循环 29511.4.3FOR循环 29511.5游标 29611.5.1步骤1:声明用于保存列值的变数 29611.5.2步骤2:声明游标 29711.5.3步骤3:打开游标 29711.5.4步骤4:从游标中取得记录 29711.5.5步骤5:关闭游标 29811.5.6完整的实例:product_cursor.sql 29811.5.7游标与FOR循环 30011.6异常 30111.6.1ZERO_DIVIDE异常 30211.6.2DUP_VAL_ON_INDEX异常 30311.6.3INVALID_NUMBER异常 30311.6.4OTHERS异常 30311.7过程 30411.7.1创建过程 30411.7.2调用过程 30711.7.3获取有关过程的信息 30711.7.4删除过程 30811.7.5查看过程中的错误 30811.8函式 30911.8.1创建函式 30911.8.2调用函式 31011.8.3获取有关函式的信息 31011.8.4删除函式 31111.9包 31111.9.1创建包规範 31111.9.2创建包体 31211.9.3调用包中的函式和过程 31311.9.4获取有关包中函式和过程的信息 31411.9.5删除包 31411.10触发器 31411.10.1触发器运行的时机 31411.10.2设定示例触发器 31511.10.3创建触发器 31511.10.4激活触发器 31611.10.5获取有关触发器的信息 31711.10.6禁用和启用触发器 31911.10.7删除触发器 31911.11小结 319第12章资料库对象 32112.1对象简介 32112.2创建对象类型 32212.3使用DESCRIBE获取有关对象类型的信息 32412.4用对象类型定义列对象和对象表 32512.5对products表执行DML操作 32512.5.1将记录插入到products表中 32612.5.2从products表中查询记录 32612.5.3修改products表中的记录 327 12.5.4从products表中删除记录 32712.6对object_products表执行DML 32712.6.1向object_products表中插入记录 32812.6.2从object_products表中选择记录 32812.6.3更新object_products表中的记录 32812.6.4从object_products表中删除记录 32912.7对object_customers表执行DML 32912.7.1向object_customers表中插入记录 32912.7.2从object_customers表中查询记录 32912.8对purchases表执行DML 33012.8.1向purchases表中插入记录 33112.8.2从purchases表中选择记录 33112.8.3更新purchases表中的记录 33212.9在PL/SQL中使用对象 33212.10类型继承 33412.11NOTINSTANTIABLE对象类型 33512.12用户自定义的构造函式 33612.13小结 339第13章集合 34113.1集合简介 34113.2变长数组 34213.2.1创建变长数组类型 34213.2.2使用变长数组类型定义表列 34313.2.3获得变长数组信息 34313.2.4填充变长数组元素 34413.2.5查找变长数组元素 34513.2.6更改变长数组元素 34513.3嵌套表 34513.3.1创建嵌套表类型 34613.3.2使用嵌套表类型定义表列 34613.3.3获得嵌套表信息 34613.3.4填充嵌套表元素 34813.3.5查找嵌套表元素 34813.3.6更改嵌套表元素 34813.4多级集合类型 34913.5在PL/SQL中使用集合 35113.5.1操作变长数组 35113.5.2操作嵌套表 35313.5.3集合方法 35513.6Oracle10g对集合的改进 36213.6.1关联数组 36213.6.2更改元素类型的大小或精度 36313.6.3增加变长数组的元素数目 36313.6.4在临时表中使用变长数组 36313.6.5为嵌套表的存储表使用不同的表空间 36413.6.6对嵌套表的ANSI支持 36413.7小结 372第14章大对象 37314.1大对象(LOB)简介 37314.2示例档案 37414.3理解大对象类型 37414.4创建包含大对象的表 37514.5在SQL中使用大对象 37614.5.1使用CLOB和BLOB 376 14.5.2使用BFILE 37714.6在PL/SQL中使用大对象 37914.6.1READ() 38014.6.2WRITE() 38314.6.3APPEND() 38414.6.4CLOSE() 38614.6.5COMPARE() 38614.6.6COPY() 38814.6.7CREATETEMPORARY() 39014.6.8ERASE() 39114.6.9FILECLOSE() 39214.6.10FILECLOSEALL() 39314.6.11FILEEXISTS() 39314.6.12FILEGETNAME() 39414.6.13FILEISOPEN() 39414.6.14FILEOPEN() 39514.6.15FREETEMPORARY() 39614.6.16GETCHUNKSIZE() 39614.6.17GET_STORAGE_LIMIT() 39714.6.18GETLENGTH() 39714.6.19INSTR() 39714.6.20ISOPEN() 40014.6.21ISTEMPORARY() 40014.6.22LOADFROMFILE() 40114.6.23LOADBLOBFROMFILE() 40414.6.24LOADCLOBFROMFILE() 40514.6.25OPEN() 40514.6.26SUBSTR() 40614.6.27TRIM() 40714.6.28WRITEAPPEND() 40814.7理解LONG和LONGRAW类型 40814.7.1示例表 40914.7.2使用LONG和LONGRAW列 40914.8Oracle10g对大对象的增强 41014.8.1CLOB和NCLOB对象之间的隐式转换 41014.8.2在触发器中使用LOB时:new属性的用法 41114.9小结 412第15章使用Java运行SQL 41315.1準备工作 41415.2配置计算机 41415.2.1设定ORACLE_HOME环境变数 41415.2.2设定JAVA_HOME环境变数 41515.2.3设定PATH环境变数 41515.2.4设定CLASSPATH环境变数 41615.2.5设定LD_LIBRARAY_PATH环境变数 41615.3OracleJDBC驱动程式 41615.3.1Thin驱动程式 41715.3.2OCI驱动器 417 15.3.3伺服器端内部驱动器 41715.3.4伺服器端Thin驱动器 41715.4导入JDBC包 41715.5注册OracleJDBC驱动程式 41815.6打开资料库连线 41815.6.1使用DriverManager类的getConnection()方法连线资料库 41815.6.2使用Oracle数据源连线资料库 42015.7创建JDBCStatement对象 42215.8从资料库检索列 42315.8.1步骤1:创建和填充ResultSet对象 42315.8.2步骤2:从ResultSet对象中读取列值 42415.8.3步骤3:关闭ResultSet对象 42615.9向资料库添加行 42615.10更改资料库的行 42715.11删除资料库的行 42715.12处理数字 42815.13处理资料库Null值 42915.14控制资料库事务 43015.15执行DDL语句 43115.16处理异常 43215.17关闭JDBC对象 43315.18示例程式:BasicExample1.java 43415.18.1编译BasicExample1 43915.18.2运行BasicExample1 43915.19预备SQL语句 44115.20OracleJDBC扩展 44615.20.1oracle.sql包 44615.20.2oracle.jdbc包 45015.20.3示例程式:BasicExample3.java 45315.21小结 456第16章SQL最佳化 45716.1SQL最佳化简介 45716.2使用WHERE子句过滤行 45816.3使用表连线而不是多个查询 45816.4执行连线时使用完全限定的列引用 45916.5使用CASE表达式而不是多个查询 46016.6添加表索引 46116.7使用WHERE而不是HAVING 46116.8使用UNIONALL而不是UNION 46216.9使用EXISTS而不是IN 46416.10使用EXISTS而不是DISTINCT 46416.11使用绑定变数 46516.11.1不相同的SQL语句 46516.11.2使用绑定变数定义相同SQL语句 46616.11.3列出和输出绑定变数 46716.11.4使用绑定变数存储PL/SQL函式的返回值 46716.11.5使用绑定变数存储REFCURSOR的行 46716.12比较执行查询的成本 46816.12.1检查执行计画 468 16.12.2比较执行计画 47316.13为最佳化器传递提示 47416.14其他最佳化工具 47416.14.1Statspack包 47416.14.2OracleEnterpriseManagerDiagnosticsPack 47516.14.3自动资料库诊断监控 47516.15小结 475附录AOracle数据类型 477A.1OracleSQL类型 477A.2OraclePL/SQL类型 479