Oracle-SQL基础
- 格式:docx
- 大小:44.66 KB
- 文档页数:17
oracle基础语句
Oracle是一种关系型数据库管理系统,它支持SQL语言。
在Oracle中,SQL语言被用来操作数据库中的数据。
以下是Oracle基础语句:
1. SELECT:用于从表中获取数据。
2. INSERT:用于向表中插入一条新的记录。
3. UPDATE:用于更新表中的记录。
4. DELETE:用于从表中删除记录。
5. CREATE:用于创建新表,视图或索引。
6. DROP:用于删除表,视图或索引。
7. ALTER:用于修改表的结构。
8. TRUNCATE:用于清空表中的所有数据。
9. COMMIT:用于将更改保存到数据库中。
10. ROLLBACK:用于撤消已进行的更改。
以上是Oracle基础语句,掌握这些语句可以让初学者熟练操作Oracle数据库。
- 1 -。
oracle sql 参数Oracle SQL参数是指在SQL语句中使用的变量,用于传递值或条件。
参数可以提高SQL语句的可重用性和安全性,同时还可以提高SQL语句的性能。
Oracle SQL参数的使用方法如下:1. 定义参数在SQL语句中定义参数,可以使用冒号(:)作为参数的前缀。
例如:SELECT * FROM employees WHERE department_id = :dept_id;在这个例子中,:dept_id是一个参数,它的值将在SQL语句执行时被传递进来。
2. 绑定参数在执行SQL语句之前,需要将参数的值绑定到参数上。
可以使用Oracle提供的绑定变量语法来绑定参数。
例如:DECLAREdept_id NUMBER := 10;BEGINSELECT * FROM employees WHERE department_id = :dept_id; END;在这个例子中,参数dept_id的值被绑定到了SQL语句中的参数:dept_id上。
3. 执行SQL语句在绑定参数之后,可以执行SQL语句。
执行SQL语句的方法与普通的SQL语句相同。
例如:DECLAREdept_id NUMBER := 10;emp_count NUMBER;BEGINSELECT COUNT(*) INTO emp_count FROM employees WHERE department_id = :dept_id;DBMS_OUTPUT.PUT_LINE('There are ' || emp_count || ' employees in department ' || dept_id);END;在这个例子中,SQL语句返回了一个值,并将这个值存储在变量emp_count中。
Oracle SQL参数的优点如下:1. 可重用性使用参数可以使SQL语句更加可重用。
可以将SQL语句定义为一个模板,然后在不同的场景中使用不同的参数值来执行SQL语句。
SQL语句执行过程详解一条sql,plsql的执行到底是怎样执行的呢?一、SQL语句执行原理:第一步:客户端把语句发给服务器端执行当我们在客户端执行select 语句时,客户端会把这条SQL 语句发送给服务器端,让服务器端的进程来处理这语句。
也就是说,Oracle 客户端是不会做任何的操作,他的主要任务就是把客户端产生的一些SQL 语句发送给服务器端。
虽然在客户端也有一个数据库进程,但是,这个进程的作用跟服务器上的进程作用事不相同的。
服务器上的数据库进程才会对SQL 语句进行相关的处理。
不过,有个问题需要说明,就是客户端的进程跟服务器的进程是一一对应的。
也就是说,在客户端连接上服务器后,在客户端与服务器端都会形成一个进程,客户端上的我们叫做客户端进程;而服务器上的我们叫做服务器进程。
第二步:语句解析当客户端把SQL 语句传送到服务器后,服务器进程会对该语句进行解析。
同理,这个解析的工作,其会做很多小动作。
也是在服务器端所进行的。
虽然这只是一个解析的动作,但是,“”1. 查询高速缓存(library cache)。
服务器进程在接到客户端传送过来的SQL 语句时,不会直接去数据库查询。
而是会先在数据库的高速缓存中去查找,是否存在相同语句的执行计划。
如果在数据高速缓存中,则服务器进程就会直接执行这个SQL 语句,省去后续的工作。
所以,采用高速数据缓存的话,可以提高SQL 语句的查询效率。
一方面是从内存中读取数据要比从硬盘中的数据文件中读取数据效率要高,另一方面,也是因为这个语句解析的原因。
不过这里要注意一点,这个数据缓存跟有些客户端软件的数据缓存是两码事。
有些客户端软件为了提高查询效率,会在应用软件的客户端设置数据缓存。
由于这些数据缓存的存在,可以提高客户端应用软件的查询效率。
但是,若其他人在服务器进行了相关的修改,由于应用软件数据缓存的存在,导致修改的数据不能及时反映到客户端上。
从这也可以看出,应用软件的数据缓存跟数据库服务器的高速数据缓存不是一码事。
目录第I部分 SQL语言与PL/SQL语言 (9)第1章数据库的概念与Oracle的安装 (9)1.1实体-关系模型 (9)1.2 关系数据库系统概述 (9)1.3 Oracle数据库历史与Oracle (10)1.4 Oracle数据库的安装 (11)1.5 本章小结 (14)第2章 SQL语言基础 (15)2.1 Oracle的数据类型 (15)2.2 SQL基本语法 (15)2.3 SQL*PLUS 工具和SQL*Plus工作单 (16)2.4函数 (17)2.4.1 单行SQL字符函数 (18)2.4.2 转换格式函数 (19)2.4.3 多行函数 (20)2.5本章小结 (20)第3章数据操作和数据库对象 (21)3.1 多表查询 (21)3.1.1 简单的两表查询 (21)3.1.2 三表查询和多表查询 (21)3.1.3 一些连接操作设置符号 (21)3.2 数据修改 (22)3.2.1 数据的插入 (22)3.2.2 数据的修改 (22)3.2.3 数据的删除 (22)3.3 事务控制命令 (22)3.4 表的创建与修改 (23)3.4.1 生成一个简单表 (23)3.4.2 表的重命名与删除 (24)3.5 视图 (24)3.6 其他数据库对象和数据字典 (25)3.6.1 索引(Index) (25)3.6.2 约束 (26)3.6.3 同义词 (26)3.6.4 过程、函数和包 (26)3.6.5 触发器 (27)3.6.6 数据字典 (27)3.7 本章小结 (27)4.1 PL/SQL简介 (28)4.2 PL/SQL块结构与用途 (28)4.3常量与变量 (29)4.3.1 变量声名 (29)4.3.2 常量 (29)4.3.3 单字符分界符和双符分界符 (29)4.3.3 标识符 (30)4.4 执行一个PL/SQL块 (30)4.7 游标 (31)4.8 出错处理 (32)4.9 本章小结 (33)第II部分 ORACLE数据库结构与管理 (34)第5章 Oracle的管理界面 (34)5.1 企业管理器 (34)5.2 Oracle Net Manager (34)5.3 登录方式 (35)5.4 启动和关闭数据库服务器 (35)5.5 配置系统初始化参数 (36)5.6 本章小结 (36)第六章 Oracle服务器的例程 (37)6.1 系统全局区 (37)6.1.1 数据库高速缓冲区 (37)6.1.2 共享存储区 (38)6.1.3 重做日志缓冲区 (38)6.1.4 Java存储区 (38)6.1.5 大型存储区 (38)6.1.6空池 (38)6.2进程全局区 (39)6.3用户全局区 (39)6.4 Oracle进程 (39)6.4.1 服务器进程 (39)6.4.2 后台进程 (40)6.4.3从属进程 (41)6.5 本章小结 (41)第7章 Oracle数据库的物理结构 (43)7.1 数据文件 (43)7.2 控制文件 (43)7.2.1 多路控制文件 (43)7.2.2 控制文件的生成 (44)7.2.3 查询控制文件信息 (44)7.3.1 管理重做日志文件 (45)7.3.2 日志转换(Log Switch) (45)7.3.3 检查点 (45)7.3.4 多路日志文件 (45)7.4 归档日志文件 (46)7.4.1 设置归档路径 (46)7.4.2 设置ARCHIVELOG/NOARCHIVELOG模式 (46)7.4.3 查询日志和归档信息 (47)7.5 本章小结 (47)第八章 Oracle数据库的逻辑结构 (48)8.1 表空间 (48)8.1.1 表空间管理 (48)8.1.2 管理数据文件 (50)8.1.3 数据文件信息查询 (50)8.2 数据块 (50)8.3 扩展区 (51)8.4 段 (51)8.4.1 数据段和索引段 (51)8.4.2 临时段 (52)8.4.3 回滚段 (52)8.5 本章小结 (53)第9章表、索引与约束 (54)9.1 数据库表创建 (54)9.1.1 生成一个简单表 (54)9.1.2 指定存储参数 (54)9.1.3 为表分区 (55)9.2 表管理 (55)9.2.1 指派与回收扩展区 (55)9.2.2 表重组 (55)9.3 表分析 (56)9.4 创建索引 (56)9.4.1 索引的分类与生成 (56)9.4.2 索引修改 (57)9.4.3 查询索引信息 (57)9.5 数据库的完整性约束 (57)9.5.1 约束的分类 (57)9.5.2 约束的创建 (57)9.6 本章小结 (58)第10章概要文件、用户权限与角色 (59)10.1 概要文件 (59)10.2 管理用户 (60)10.2.2 修改用户信息 (60)10.2.3 删除用户 (60)10.3 用户验证 (61)10.4 查询用户信息 (61)10.5 权限与角色 (61)10.5.1 对象权限 (61)10.5.2 系统权限 (62)10.5.3权限回收 (62)10.5.4角色管理 (62)10.6 本章小结 (63)第11章常用工具 (64)11.1 SQL*Loader (64)11.2 数据导入与导出 (64)11.2.1 用EXPORT导出数据 (64)11.2.2 用IMPORT导入数据 (64)11.2.3 表空间传输 (65)11.3 国家语言支持 (65)11.4 本章小结 (66)第三部分 ORACLE 数据库的备份与恢复 (67)第12章Oracle备份与恢复机制 (67)12.1 理解数据库备份 (67)12.2 冷备份与热备份 (68)12.3 归档备份与非归档备份对恢复的影响 (68)12.4 理解几种不同的恢复机制 (69)12.5 本章小结 (69)第13章非RMAN下物理备份与恢复实现 (70)13.1 数据库的冷备份 (70)13.2 数据库的热备份 (70)13.3 控制文件的备份 (70)13.4 几种不同的恢复方式 (71)13.4.1 非归档日志下的数据库恢复 (71)13.4.2 归档日志下对丢失部分数据文件的恢复 (71)13.4.3 丢失整个数据库情况下的恢复 (72)13.5非完全恢复 (72)13.5.1 基于Cancel的恢复 (72)13.5.2 基于Time的恢复 (72)13.5.3 基于SCN的恢复 (73)13.6 本章小结 (73)第14章逻辑备份与恢复 (74)14.1 使用逻辑备份与恢复工具 (74)14.2 数据库逻辑备份与恢复的实现 (74)14.3 使用Oracle企业管理器 (74)14.4 本章小结 (75)第15章Oracle恢复机制的补充 (76)15.1 并行恢复的实现 (76)15.2 控制文件的重建 (76)15.3 只读表空间的恢复 (77)15.4 本章小结 (77)第16章Oracle数据库恢复管理器和待命服务器 (78)16.1 RMAN简介 (78)16.1.1 Nocatalog 下连接RMAN (78)16.1.2 创建恢复目录 (78)16.1.3 管理恢复目录 (79)16.1.4 LIST和REPORT命令 (79)16.1.5 生成存储恢复管理器语句 (79)16.1.6 操作系统命令备份 (80)16.2 使用RMAN进行备份 (80)16.2.1 备份的分类与实现 (80)16.2.2 备份操作的调整 (80)16.3 使用RMAN进行还原与恢复 (80)16.3.1 数据文件的恢复 (81)16.3.2 表空间的恢复 (81)16.3.3 非归档日志下数据库的还原 (81)16.4 Oracle服务器的备用数据库(Standby Database) (81)16.4.1 考虑使用Standby Database (82)16.4.2 初始化参数的配置 (82)16.4.3 创建待命数据库 (82)16.5 本章小结 (83)第IV部分性能调整 (84)第17章性能调整概要 (84)17.1 调整目标与计划的制定 (84)17.2 调整内容 (84)17.3 常用调整工具 (85)17.4 本章小结 (85)第18章Oracle内容调整 (86)18.1 共享存储器调整 (86)18.1.1 调整库高速缓存与数据字典高速缓存 (86)18.1.2 共享存储区的“命中率” (86)18.1.3 提高共享存储区的性能 (87)18.2.1 存取区缓存管理机制 (87)18.2.2 测量高速缓冲区的性能 (88)18.2.3 提高缓冲区的性能 (88)18.3 重做日志缓冲区的调整 (89)18.3.1 测试日志缓冲区的性能 (89)18.3.2 提高日志缓冲区的性能 (90)18.4 本章小结 (90)第19章结构查询语句与应用程序设计调整 (91)19.1 TKPROF工具 (91)19.2 解释计划 (91)19.3 使用AUTOTRACE工具选项 (91)19.4 理解Oracle的最佳性能 (92)19.5 设置优化模式 (92)19.5.1 例程级优化模式 (93)19.5.2 会话级优化模式 (93)19.5.3 语句级优化模式 (93)19.6 应用程序的性能 (94)19.6.2 索引与聚簇来最小化I/O (94)19.7 OLTP和DSS系统的性能调整要求 (96)19.8 本章小结 (96)第20章物理I/O调整 (97)20.1 数据文件I/O的调整 (97)20.2 数据库写进程的调整 (97)20.3 段与数据块的调整 (98)20.4 检查点进程的调整 (98)20.5 归档日志进程的调整 (99)20.6 排序区的调整 (99)20.7 回滚段的调整 (100)20.7.1 回滚段的作用 (100)20.7.2 回滚段的种类 (100)20.7.3 回滚段I/O性能测试 (101)20.7.4 提高回滚段I/O性能 (101)20.8 本章小结 (101)第21章调整竞争 (102)21.1 锁 (102)21.1.1 数据锁 (102)21.1.2 字典锁 (103)21.1.3 死锁 (104)21.2 闩的调整 (104)21.3 Freelist的竞争 (105)21.4 本章小结 (105)22.1资源管理概况 (106)22.2 资源管理配置 (106)22.3 资源管理器的管理 (107)22.4 使用SQL*PLUS创建资源计划和使用者组 (107)22.5 本章小结 (107)第23章Oracle性能调整工具 (108)23.1 考虑使用Oracle Expert (108)23.2 Oracle Expert的使用 (108)23.2.1 设定范围 (108)23.2.2 收集统计 (110)23.2.3 复查 (111)23.2.4 生成建议案 (112)23.2.5 脚本的生成 (112)23.3 本章小结 (112)第5部分网络管理 (113)第24章Net Manager基本架构 (113)24.1 Oracle Net Manager功能简介 (113)24.2 Oracle 监听器 (113)24.3 概要文件 (113)24.4 网络服务命名 (114)24.5 Oracle Net Manager网络协议堆栈段 (114)24.5.1 典型的OSI协议通信栈 (114)24.5.2 Oracle Net Manager客户端/服务器中的堆栈 (115)24.6 Oracle连接管理器 (116)24.7 域 (117)24.8 本章小结 (117)第25章Oracle网络服务配置 (118)25.1 配置监听器 (118)25.2 本地命名服务器配置 (118)25.3 主机命名法 (119)25.4 Oracle命名服务器配置 (119)25.5 多线程服务器配置与网络安全 (119)25.5.1 多线程服务器配置 (119)25.5.2 高级网络安全 (120)25.6 本章小结 (120)第26章出错处理 (121)26.1服务器段异常处理 (121)26.2 命名服务器异常出理 (121)26.3 客户机异常处理 (121)26.5 NET8跟踪文件 (122)26.6 本章小结 (122)第I部分 SQL语言与PL/SQL语言第1章数据库的概念与Oracle的安装本章的学习目标:●了解实体-关系模型的基本概念和方法●了解当今流行的关系数据库以及Oracle数据库的优势●熟悉Oracle数据库服务器的安装过程1.1实体-关系模型模型是对过程和对象的抽象化,经过模型可以深入了解复杂系统的主要特征。
oracle常用sql函数Oracle是一款非常优秀的数据库管理系统,它提供了很多强大的功能与工具,其中最基本而实用的功能就是SQL函数了。
下面我们将重点介绍一些常用的Oracle SQL函数,帮助读者更好地了解和掌握这些常用的函数,从而更加有效地处理和管理数据。
一、数值型函数1. ABS()函数:用于计算数值的绝对值,比如ABS(-10)会返回10。
2. CEIL()函数:用于向上取整,比如CEIL(3.14)会返回4。
3. FLOOR()函数:用于向下取整,比如FLOOR(3.14)会返回3。
4. MOD()函数:用于求模,比如MOD(12,5)会返回2。
5. ROUND()函数:用于四舍五入,比如ROUND(3.49)会返回3,而ROUND(3.51)会返回4。
二、字符型函数1. CONCAT()函数:用于连接两个字符串,比如CONCAT('hello','world')会返回helloworld。
2. SUBSTR()函数:用于截取字符串,比如SUBSTR('hello',2,3)会返回ell。
3. UPPER()函数:用于将字符串转换成大写,比如UPPER('hello')会返回HELLO。
4. LOWER()函数:用于将字符串转换成小写,比如LOWER('HELLO')会返回hello。
5. TRIM()函数:用于去掉字符串首尾的空格,比如TRIM(' hello ')会返回hello。
三、日期型函数1. CURRENT_DATE函数:用于获取当前日期,比如SELECT CURRENT_DATE FROM DUAL会返回当前日期。
2. SYSDATE函数:用于获取系统当前时间,比如SELECTSYSDATE FROM DUAL会返回系统当前时间。
3. TO_CHAR()函数:用于将日期转换成字符型,比如TO_CHAR(SYSDATE,'yyyy-mm-dd')会返回当前日期的年月日格式。
1、两个oracle 开发工具介绍a)SqlDbx王金生曾推荐过的一款数据库客户端开发工具,使用容易,不需要额外的安装其它插件,有sql提示功能,支持Oracle,Sybase ASE, IBM,DB2/UDB, MicrosoftSQL Server 和ODBC数据源,免费绿色版。
b)PLSQL Developer专门针对oracle开发的一款比较专业的客户端工具,除了常用的数据库操作外,还支持存储过程及函数的调试功能等比较高级的功能,详细的操作可以安装完毕后大家去慢慢研究。
配置方式见网上找的一段方法,第二种:/view/65b5a80f6c85ec3a87c2c583.html以上提到的工具及可能用到的插件见共享目录中的文件。
2、oracle 与 sqlserver 语法大比较a)oracle各类型字段描述b)字段类型比较c)常用函数比较注:此处仅记录语法有区别的地方,更多丰富的语法请查看附件中的手册。
以下的exp为expression的缩写d)关于脏读目前我们使用的sqlserver 数据库,在查询数据时,都要求在select语句中后面跟一个(nolock)或(with nolock)来保证读取大表时不影响其它程序进程的数据操作。
在oracle中,目前还不允许脏读的方式,在每次select 后,读到的数据都是已经commit的数据,所以为了避免读取数据的不准确,程序中如果有比较耗时的sql 操作,尤其是在insert 和update后,尽量减小事务,而且要在事务结束后及时commit。
e)表(主键、外键、CHECK、UNIQUE、DEFAULT、INDEX)在创建表及其主键、外键、CHECK、UNIQUE、DEFAULT、INDEX时,SQL SERVER 与ORACLE的语法大致相同。
主要区别如下:Oracle定义表字段的default属性紧跟字段类型之后,如下:Create table MZ_Ghxx( ghlxh number primay key ,rq date default sysdate not null,….)而不能写成Create table MZ_Ghxx( ghlxh number primay key ,rq date not null default sysdate,….)f)存储过程/函数结构的不同SQLSERVER中存储过程的结构大致如下CREATE PROCEDURE procedure_name/*输入、输出参数的声明部分*/ASDECLARE/*局部变量的声明部分*/BEGIN/*主体SQL语句部分*//*游标声明、使用语句在此部分*/ENDORACLE中存储过程的结构大致如下CREATE OR REPLACE PROCEDURE procedure_name(/*输入、输出参数的声明部分*/ )AS/*局部变量、游标等的声明部分*/BEGIN/*主体SQL语句部分*//*游标使用语句在此部分*/EXCEPTION/*异常处理部分*/END ;ORACLE端FUNCTION语法说明CREATE [OR REPLACE] FUNCTION function_name[(argument [{IN | OUT | IN OUT }] ) type,…[(argument [{IN | OUT | IN OUT }] ) typeRETURN return_type {IS | AS}BEGIN…END;变量赋值在SQL SERVER语句中用如下语句对局部变量赋值(初始值或数据库表的字段值或表达式):“SELECT 局部变量名= 所赋值(初始值或数据库表的字段值或表达式)”;而在ORACLE中,将初始值赋给局部变量时,用如下语句:“局部变量名: = 所赋值(初始值或表达式);”,将检索出的字段值赋给局部变量时,用如下语句:“SELECT 数据库表的字段值INTO 局部变量名…”。
OCP-1 SQL 基础I课程介绍:Oracle培训(10g OCP)认证体系均分为三级认证:即Oracle 10g数据库认证专员(OCA)、Oracle 10g 数据库认证专家(OCP)和Oracle 10g数据库认证大师(OCM)。
要获得Oracle 10g OCA证书,需要通过1Z0-047和1Z0-042这两门考试;要获得Oracle 10g OCP证书,需要在获得Oracle 10g OCA证书的基础上,再通过1Z1-043的考试,就可获得Oracle 10g OCP证书。
要获得Oracle 10g OCM证书,需要在获得Oracle 10G OCP证书的基础上,通过Oracle大学的上机动手实验,就可获得Oracle 10G OCM证书。
学员在学习完“SQL 基础”后,可以参加1Z0-047的考试,通过考试后,可以获得SQL专家证书。
该证书证明学员可以熟练掌握SQL语言对表做增删查改、掌握数据库中常用的序列、索引、表等对象、掌握多表连接、分组运算、子查询等高级查询技巧。
适合人群:OCP培训SQL 基础I适合理解数据库的基本概念;使用过任何一种数据库的学员学习。
培训目标:OCP培训SQL 基础I培训目标:使用SELECT 语句在表中检索行数据和列数据利用SQL 函数生成和检索自定义的数据使用高级查询语言运行数据操纵语言(DML) 操纵数据管理不同时区的数据类型使用高级子查询搜索数据课程大纲:OCP培训SQL 基础I课程大纲:第一章. 编写SQL SELECT 语句第二章. 对数据进行限制和排序第三章. 使用单行函数自定义输出第四章. 使用组函数报告汇总数据第五章. 显示多个表中的数据第六章. 使用子查询来解析查询第七章. 使用SET 运算符第八章. 处理数据第九章. 使用DDL 语句创建和管理表第十章. 管理方案对象第十一章. 管理不同时区中的数据第十二章. 使用高级子查询搜索数据第十三章. 分层检索。
在Oracle数据库中,创建表的SQL语句的基本语法如下:
```sql
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
...
);
```
其中:
* `table_name` 是你想要创建的表的名称。
* `column1`, `column2`, `column3` 等是表中的列名。
* `datatype` 是这些列的数据类型,例如VARCHAR2, NUMBER, DATE 等。
例如,如果你想要创建一个名为"Employees" 的表,其中有"ID", "Name", 和"Salary" 三个列,你可以使用以下的SQL语句:
```sql
CREATE TABLE Employees (
ID NUMBER,
Name VARCHAR2(50),
Salary NUMBER(10,2)
);
```
这会创建一个新的表"Employees",其中"ID" 列的数据类型是NUMBER,"Name" 列的数据类型是最大长度为50的VARCHAR2,"Salary" 列的数据类型是带有两位小数的NUMBER。
请注意,这只是创建表的基本语法。
在实际使用中,你可能还需要添加其他的约束,例如PRIMARY KEY、FOREIGN KEY、NOT NULL 等约束来限制列的输入值。
Oracle 10g SQL 基础培训使用sqlplus连接数据库:1 本地主机连接远端的oracle数据库,本地主机要安装oracle客户端,输入如下命令sqlplus 用户名/密码@网络服务名网络服务名是什么?其实就是本地主机安装oracle客户端时配置远端数据库的别名,在Oracle Net Manager中叫“网络服务名”,在sqlplusw中叫“主机字符串”。
2 本地主机连接远端的oracle数据库成功后,切换到其实用户SQL> conn scott/tigger@网络服务名SQL>conn sys/sys的密码@网络服务名 as sysdba3 连接本机的oracle数据库,输入如下命令sqlplus /nologconn / as sysdba4 连接本机的oracle数据库成功后,切换到其实用户SQL> conn scott/tigger;常用SQL/PLUS命令查看一行显示字符数:SQL> show linesize; (简写:show lines)设置显示宽度为200字符:SQL> set linesize 200; (简写:set lines 200)查看目前的pagesize,默认是14:show pagesize;将pagesize设置好100:set pagesize 100;常用PL/SQL命令查看表的结构(详细): select dbms_metadata.get_ddl('TABLE','大写表名') FROM dual; 查看表的结构(简单): desc 表名查看当前数据库登录操作的用户:show user常用字典、包查看数据库有哪些用户从“用户字典”(注意权限):select username,account_status from dba_users;查看当前用户有哪些表:select table_name from user_tables;查看当前用户的对象:select object_name,object_type from user_objects;解锁scott帐户alter user scott account unlock; //解锁帐户grant connect,resource,unlimited tablespace to scott; //分配权限alter user scott identified by tiger ; //设置密码Oracle sqlplus的清屏如果是通过本身的sqlplus那么方法有:同时按SHIFT和DELETE键然后点OK、clear screen ;或 clea scre;实现如果是通过cmd模式进入的话:可以通过host cls命令来实现清屏----------------Schema---------------------------------HR用户下的7张表 Schema表的说明:employees 员工表departments 部门表(员工所在的部门)locations 地址表(部门在哪个地址)countries 国家表(地址在哪个国家)regions 大区表(亚太区,北美区)(国家在哪个大区)job 工作岗位表(员工的工作岗位)jbo_history 工作变动历史表----------------------------运算符部分------------------------------=,>,<,>=,<=,<>,between ... and ... (两端包含)in() , not in()like '%磊_' , %配置多个字符, _ 配置一个字符。
like '%磊\_' escape '\' ,说明\是转义字符,可以查询结果中包含_。
is null逻辑运算符:and , or , not----------------------------子句部分------------------------------select子句from子句where子句order by 子句,结果有null值时,升序时null放在结果的最后面,降序null值放在结果的最前面。
可以修改:order by id desc nulls last/first;group by 子句having 子句for update子句---------------------------函数部分-------------------------------字符函数:UPPER('String') 转换成大写字母LOWER('String') 转换成小写字母INITCAP('String')转换为首字母大写,其它小字SUBSTR('HelloWorld',1,5) 结果是:Hello。
参数说明:('HelloWorld',1,5)意思是截取'HelloWorld'串从第1个开始,取5个。
SQL中“第一”是从1开始的。
INSTR('HelloWorld','W') 结果是:6replace('JACK and JUE','J','BL') 替换,把'J' 替换成'BL'。
trim() 去空格数学函数:ROUND(45.926,2) 结果:45.93 保留两位小数,四舍五入。
ROUND(45.926,-1) 结果:50TRUNC(45.926,2) 结果:45.92 保留两位小数,多余部分直接截去,无四舍五入。
TRUNC(45.926,-1) 结果:40MOD(1600,300) 结果:100 取余数日期函数:SQL> select sysdate from dual; 结果是:23-7月 -10 sysdate是一个无参数的函数。
转换函数: (隐式转换,显示转换)---- 日期转字符SQL> select to_char(sysdate,'YYYY-MM-DD') as date_ from dual; 结果:2010-07-23 SQL> select to_char(sysdate,'fm YYYY-MM-DD') as date_ from dual; 结果:2010-7-23 fm作用:去掉前导0,07月显示为7月。
SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') as date_ from dual; 结果:2010-07-23 12:06:19---- 数字转字符SQL> select to_char(100,'L99,999.00') from dual; 结果:¥100.00 以本地货币格式化成字符串。
---- 字符转成数值TO_NUMBER('100')---- 字符转成日期TO_DATE('2009-11-01','YYYY-MM-DD')null相关函数:相当于if elseNVL(name,0) 如果name值是null,就返回0,否则返回name。
NVL2( name,1 ,0 ) 如果name值是null,就返回0,否则返回1。
NULLIF(1,1) 如果两个参数相等,就返回null,否则返回第一个参数。
COALESCE(name,age,pwd) 可跟多个参数,参数中从前向后,返回第一个不为null的参数。
聚合(组)函数:MAX()MIN()AVG()COUNT()SUM()STDDEV()VARIANCE()----------------------------select部分------------------------------去除重复的值,例select distinct department_id,job_id from employees; distinct 关键字后跟多个列时,列的组合总体要维一。
查看表的结构, DESCRIBE ,他是sql plus的命令,可以简写为DESC,后面可以不写分号。
例DESC employees子查询:子查询可以出现在where,having,from 子句中。
子查询中的语句要使用() 括起来。
当子查询返回结果为null时,整个SQL使用了非 "is null"运算符时,查询结果就是0条记录。
注意 **** not in ( 集合[111,222,null])时,整个SQL查询结果就是0条记录。
子查询 -- 在where子句中:= , < , > , <>是单行运算符,使用单行运算时,子查询只能返回一条结果(一行一列)。
in ,not in ,any,all ,聚合函数,是多行运算符,使用多行运算符时,子查询可以返回多条结果(多行一列)。
Sql代码1子查询只返一条结果,并使用了单行运算符,SQL语句可以正常执行2elect last_name ,salary from employees where salary > (select salary from employees where last_name ='Abel');Sql代码3子查询只返多条结果,并使用了单行运算符,SQL语句不可以正常执行4select last_name ,salary from employees where salary > (select salary from employees where last_name like 'K%');56第 1 行出现错误:7ORA-01427: 单行子查询返回多个行子查询 -- 在having子句中:Sql代码8SELECT department_id ,MIN(salary)9FROM employees10GROUPBY department_id11HAVINGMIN(salary) >12(SELECTMIN(salary)13FROM employees14WHERE department_id=50);子查询 -- 在from子句中:略。
--------------------select多张表 join部分------------------------- 内外连接说明表内连接外连接连接字段为null值或不能实现“拉手”连接的行,不会出现在连接结果集合中连接字段为null值或不能实现“拉手”连接的行,会现在连接结果集合中Inner Joins 内连接Self join 自己连接自己Nonequijoins 不等连接left outer join 左外连接right outer join 右外连接full outer join 全连接Inner Joins 内连接(是内连接,连接字段为null值或不能实现“拉手”连接的行,不会出现在连接结果集合中)--使用join on 方式(SQL标准),实现表的内连接:(经常用)两张表中可连接的字段名称不相同Sql代码15select employee_id,last_name,location_id,e.department_id16from employees e <STRONG>join</STRONG> departments d <STRONG>on</STRONG>e.department_id=d.department_id;e.department_id字段两个表都有,要加前缀或表别名。