Oracle个人笔记
oracle 笔记
oracle 笔记Oracle是一种关系数据库管理系统,由Oracle Corporation开发。
以下是关于Oracle的一些笔记:1. 数据库架构:Oracle数据库有两个主要的架构:逻辑架构和物理架构。
逻辑架构包括了数据库对象(表、索引、视图等)以及用户和角色的定义。
物理架构指的是数据在磁盘上的存储方式。
2. 数据库对象:Oracle数据库中的主要对象包括表、索引、视图、触发器、存储过程等。
表是最基本的对象,用于存储数据。
索引用于加快表的查询速度。
视图是一种虚拟表,通过查询一个或多个表返回结果。
触发器是一种在表上定义的操作,当满足某些条件时触发。
存储过程是一段可重复使用的程序代码,用于完成特定的任务。
3. SQL语言:Oracle数据库使用SQL(Structured Query Language)进行数据库操作。
SQL语言包括数据查询语句(SELECT)、数据操作语句(INSERT、UPDATE、DELETE)以及数据定义语句(CREATE、ALTER、DROP)等。
4. 数据库管理:Oracle提供了一套完整的数据库管理工具,包括创建数据库、备份和恢复数据库、监控数据库性能等。
其中,Oracle Enterprise Manager是一个图形化界面的管理工具,可以通过它来管理和监控整个数据库系统。
5. 数据完整性:Oracle数据库通过约束条件来确保数据的完整性。
主键、外键、唯一约束、非空约束等都可以用于限制数据的输入。
此外,还可以使用触发器和存储过程来定义自定义的数据完整性规则。
6. 事务管理:Oracle数据库使用ACID(原子性、一致性、隔离性、持久性)模型来管理事务。
事务是一系列数据库操作的逻辑执行单元,要么全部执行成功,要么全部回滚。
这些只是Oracle数据库的一些基本概念和特点,还有很多其他的内容,如高可用性、性能优化、安全性等。
如果想要深入了解Oracle数据库,可以参考相关的文档和教程。
Oracle基础学习笔记(导航版)
Oracle基础学习笔记主要是9i,部分会涉及10g的东西。
有点乱,大家慢慢看吧,对入门的学习还是挺基础的。
一、结构一个Oracle服务由实例(instance)和数据库(database)组成,数据库和实例是一对多的关系,即一个实例只可以管理一个数据库,而一个数据库可以被多个实例同时管理着,如在RAC环境中。
(1)实例1、由一组进程和内存结构组成2、5个基本进程:dbwr(数据文件写), lgwr(日志文件写),smon(系统恢复和控制),pmon(服务进程监控),chk(检查点),3、其他进程:arch(归档日志写),job作业进程等4、内存:SGA和PGA5、SGA包括share pool-lib cache: sql, pl/sql,-dictionary cache: 数据字典缓存db buffer:-nk_cache block 是nk的表空间使用的buffer-recycle_cache:经常不驻留内存的对象缓冲区-keep_cache:经常驻留内存的对象缓冲区relog buffer: redo log 文件缓存large buffer:share模式下为uga所使用java buffer:jvm使用streem buffer( 10g)最大比例的是db_cache_size,上面没有列出db_cache_size,是因为其被nk_cache包含了,若db_block_size =8k,则db_cache_size就是8k_cache。
6、参数SGA_MAX_SIZE : SGA最大内存SHARED_POOL_SIZE : share pool 的大小DB_CACHE_SIZE : db cache 的大小DB_RECYCLE_CACHE_SIZE: 经常不驻留内存的对象缓冲区DB_KEEP_CACHE_SIZE: 经常驻留内存的对象缓冲区LOG_BUFFER : log buffer 的大小LARGER_POOL_SIZE : large buffer的大小JAVA_POOL_SIZE : java buffer的大小Db_2K_cache_size : block size 为2k的表空间的数据缓冲Db_4K_cache_size : block size 为4k的表空间的数据缓冲Db_8K_cache_size : block size 为8k的表空间的数据缓冲Db_16k_cache_size : block size 为16k的表空间的数据缓冲Db_32K_cache_size : block size 为32k的表空间的数据缓冲若db_block_size为nk,则参数db_nk_cache_size无意义,nk的cache size由db_cache_size确定。
Oracle超详细学习笔记
Oracle超详细学习笔记-----员⼯培训------1.最简单的查询--例SELECT *FROM employees;DESC employees;SET linesize 600;SET PAGESIZE 50;--例2SELECT table_name FROM user_tables;--查询数据库中所有表名--2.查询特定的列--例SELECT employee_id,fisrt_name,last_name.salaryFROM employees;--3.在SELECT⼦句中使⽤直接量--例SELECT 5FROM employees;-----------------------SELECT 5FROM dual;--这是Oracle提供的伪表--例2:SELECT 'Hello Oracle SQL'--在Oracle中如何表⽰字符串常量FROM employees;SELECT 'Hello Oracle SQL'--在Oracle中如何表⽰字符串常量FROM dual;--例3:SELECT 'Hello Oracle''s SQL'--⽤两个连续单引号进⾏单引号转义FROM employees;--4在SELECT⼦句中使⽤算术表达式--例1:查询员⼯的编号、姓名和年薪SELECT employee_id,fist_name,last_name,salry,salary*12FROM employees;--例2:SELECT 5/2FROM dual;--5.给例定义别名--例1:SELECT employee_id AS idFROM employees;--例2:SELECT employee_id AS "Id"--双引号中的字符原样显⽰FROM employees;--例3:SELECT employee_id,fist_name,last_name,salry,salary*12 AS annual_salary FROM employees;--例4:SELECT employee_id,fist_name,last_name,salry,salary*12 AS "annual salary" FROM employees;--如果别名有特殊字符必须使⽤双引号--6.字符串的链接运算符--例:SELECT employee_id||''||fist_name,last_name,salry,salary*12 AS annual_salary FROM employees;--7.过滤重复记录--例1:SELECT DISTINCT department_idFROM employees;--例2:SELECT DISTINCT department_id,job_idFROM employees;--第⼆章过滤查询和结果集排序--1.使⽤WHERE⼦句过滤记录--例1:SELECT *FROM employeesWHERE salary > 8000;--例2:SELECT employee_id,first_name,last_name,salary FROM employeesWHERE salary = 17000;--例3:SELECT employee_id,first_name,last_name,salary FROM employeesWHERE salary <> 17000;-- !=--⽐较运算符号:>,>=,<,<=,=,!=或<>--例4SELECT employee_id,first_name,last_name,salary FROM employeesWHERE salary >=2500 AND salary <= 17000;--逻辑运算符:AND,OR,NOT--2.在WHERE⼦句中使⽤字符串和⽇期--例1:查询职位ID为st_clerk的员⼯信息SELECT employee_id,job_id,first_name,FROM employeesWHERE job_id = 'ST_CLERK';--表中字段的值是区分⼤⼩写的--例2:查询1998年7⽉9⽇⼊职的员⼯信息SELECT employee_id,job_id,first_nameFROM employeesWHERE hire_date = '09-7⽉-1998';--⽇期直接量必须以字符串的形式来体现--Oracle的⽇期是格式敏感的--标准⽇期表⽰DD-MM-RR--3.其他⽐较运算符--1)BETWEEN AND--例1:查询⼯资在【2500,7000】上的员⼯信息SELECT employee_id,job_id,first_name,salaryFROM employeesWHERE salary BETWEEN 2500 AND 7000;--包含边界值--第⼀个值要⼩于第⼆个值--练习:查询1998年⼊职的员⼯信息SELECT employee_id,job_id,first_name,salary,hire_dateFROM employeesWHERE hire_date BETWEEN '01-1⽉-1998' AND '31-12⽉-1998';--2) IN--例1:查询职位ID是ST_CLERK或者ST_MAN的员⼯SELECT employee_id,job_id,first_name,salary,hire_dateFROM employeesWHERE job_id IN ('ST_CLERK','ST_MAN');--例2SELECT employee_id,job_id,first_name,salary,hire_dateFROM employeesWHERE NOT job_id IN ('ST_CLERK','ST_MAN');----------------------------------------------------------------------------SELECT employee_id,job_id,first_name,salary,hire_dateFROM employeesWHERE job_id NOT IN ('ST_CLERK','ST_MAN');--3)LIKE--例1:模糊查询SELECT employee_id,job_id,first_name,salary,hire_dateFROM employeesWHERE job_id LIKE 'ST%';--通配符:%任意多个字符,_⼀个字符。
Oracle数据库学习笔记大全 (1)
为什么要创建其它用户?因为system,sys用户等等是系统用户,系统
用户使用的是系统的表空间。我们应该创建一个非系统用户去使用上面创建的非
系统表空间,以免破坏系统原始数据。
使用SQL语句创建用户使用上述表空间:
CREATE USER 用户名
IDENTIFIED BY 密码
delete from test1 where id=1 and name='jack'; //删除id=1并且name='jack'的那些数据
delete from test1 where id=2 or name='jack'; //删除id=2或者name='jack'的那些数据
使项目的数据更加的清晰,易于维护.
什么是SQL?结构化查询语言(Structor Query Language)
通过SQL命令去创建表空间:(SQL语句大小写不敏感)
CREATE TABLESPACE
表空间的逻辑名称
DATAFILE
表空间的物理结构文件路径名称
9.安装ORACLE后,oracle数据库会启动很多服务,这些服务占用大量内存,如果不用ORACLE数据库最好把ORACLE相关开启的服务关闭。
如何关闭服务?
我的电脑-->管理-->服务和应用程序-->服务
把Oracle相关的自动启动的服务改成手动启动。
10.数据库的实例名是编程语言连接数据库的标志。
注意:如果敲入的SQL语句执行错误。可以使用edit命令进行编辑
编辑步骤:SQL>edit 回车(edi缩写)
弹出记事本
oracle 笔记
oracle 笔记摘要:一、Oracle 简介1.Oracle 的发展历程2.Oracle 的产品和服务二、Oracle 数据库的基本概念1.数据库管理系统2.关系型数据库3.Oracle 数据库的结构三、Oracle 数据库的安装与配置1.安装Oracle 数据库的前提条件2.安装过程及注意事项3.配置Oracle 数据库四、Oracle 数据库的管理1.数据库的启动与关闭2.数据库的备份与恢复3.用户与权限管理五、SQL 语言基础1.SQL 简介2.SELECT 查询语句3.INSERT、UPDATE 和DELETE 操作语句六、PL/SQL 编程1.PL/SQL简介2.存储过程与函数3.触发器与异常处理七、Oracle 数据库的应用1.Oracle 数据库在企业级应用中的优势2.Oracle 数据库在典型行业的应用案例正文:一、Oracle 简介Oracle(甲骨文)公司成立于1977 年,总部位于美国加州,是全球著名的数据库软件及解决方案供应商。
Oracle 的产品和服务涵盖了数据库、应用软件、中间件、云计算等领域,广泛应用于企业、政府、金融、医疗等各个行业。
二、Oracle 数据库的基本概念1.数据库管理系统:数据库管理系统(DBMS)是一种用于存储、检索和管理数据的计算机软件。
它提供了对数据的高效组织、存储、检索、更新和维护功能。
2.关系型数据库:关系型数据库是基于关系模型的数据库,采用表格形式存储数据,并通过SQL(结构化查询语言)进行操作。
Oracle 数据库是一种关系型数据库,具有强大的数据管理功能和高度的数据安全性。
3.Oracle 数据库的结构:Oracle 数据库由物理结构和逻辑结构组成。
物理结构包括数据库文件、数据块、表空间等;逻辑结构包括表、视图、索引等。
三、Oracle 数据库的安装与配置1.安装Oracle 数据库的前提条件:首先,需要确保计算机硬件满足Oracle 数据库的最低要求;其次,需要获取Oracle 数据库的安装文件,这些文件通常可以从Oracle 官网下载。
oracle笔记详细
oracle笔记详细Taking detailed notes during an Oracle certification course is crucial for success. Not only does it help with retention and understanding, but it also serves as a valuable resource for future reference. When it comes to taking Oracle notes, there are several key points to keep in mind. Firstly, it's important to stay organized and structured in your note-taking approach. This includes using clear headings and subheadings to categorize different topics and concepts. Additionally, incorporating visual aids such as diagrams, charts, and tables can help to enhance comprehension and recall.在Oracle认证课程期间做详细的笔记对于成功非常关键。
它不仅有助于记忆和理解,而且还作为将来参考的宝贵资源。
在做Oracle笔记时,有几个关键要点需要记住。
首先,保持组织和结构化是非常重要的。
这包括使用清晰的标题和副标题来对不同的主题和概念进行分类。
另外,结合视觉辅助工具,如图表、图示和表格,有助于增强理解和记忆。
Furthermore, it's essential to actively engage with the material while taking notes. This means asking questions, seeking clarification, and making connections between different topics. Actively participatingin discussions and group activities can also aid in the retention of information. Moreover, it's advisable to review and revise your notes regularly to reinforce learning and address any gaps in understanding. Developing a personalized shorthand and abbreviations system can also help to speed up the note-taking process and improve efficiency.此外,在做笔记时,积极参与材料也是非常重要的。
Oracle学习笔记
Oracle 入门学习笔记
4.3 分析函数 .................................................................................................... 17 第三章 分区表与锁 ................................................................................................ 17 1. 分区表的分类 ....................................................................................................... 17 2. 分区表的使用 ....................................................................................................... 17 3. 分区表的维护 ....................................................................................................... 20 4. 锁 ........................................................................................................................ 21 第四章 数据对象..............................................................................
oracle表空间总结(个人笔记总结)
表空间含义:表空间是数据库的逻辑组成部分。
从物理上讲,数据库数据存放在数据文件中;从逻辑上讲,数据库则是存放在表空间中,表空间由一个或多个数据文件组成1,oracle 中逻辑结构包括表空间、段、区和块。
说明一下数据库由表空间构成,而表空间又是由段构成,而段又是由区构成,而区又是由oracle 块构成的这样的一种结构,可以提高数据库的效率。
表空间用于从逻辑上组织数据库的数据。
数据库逻辑上是由一个或是多个表空间组成的2,创建表空间:create tablespace data01 datafile 'd:\test\dada01.dbf' size 20m uniform size 128k;或SQL> create tablespace lqb datefile 'e:\lqb.dbf' size 50M autoextend on next 50M maxsize unlimited extend mangement local;-------------extend mangement local;本地管理表空间。
autoextend on next 50M maxsize unlimited 在50M后最大的扩展时没有限制的3,第3步:创建用户并指定表空间*/ create user USERNAME identified by PASSWORD default tablespace USER_DATE temporary tablespace user_temp;-------------temporary 临时的,暂时的4,如何将表移动到指定表空间alter table TABLE_NAME move tablespace TABLESPACE_NAME;如何将索引移动到指定的表空间alter index INDEX_NAME REBUILD tablespace TABLESPACE_NAME;5,改变表空间的状态a,使表空间脱机alter tablespace 表空间名offline; b,使表空间联机alter tablespace 表空间名online; c,只读表空间alter tablespace 表空间名read only; (修改为可写是alter tablespace 表空间名read write;)6, 知道表空间名,显示该表空间包括的所有表select * from all_tables where tablespace_name='表空间名';7,知道表名,查看该表属于那个表空间select tablespace_name, table_name from user_tables where table_name='emp';8,扩展该表空间,为其增加更多的存储空间。
Oracle_Plsql个人学习笔记总结
备注:以下是个人学习笔记总结,其实是本人容易忘记,工作中碰到的一些知识点,记录下来整理成笔记了,序号之间并不是按照某种类型划分的,都是随意的标记一下,希望对大家有所帮助。
昵称:阿杜笑傲江湖(其实就是个名字而已,并不江湖…)name:杜立鸿(不要冒充,万一哪天中奖了呢?)sex:爷们---------------------------废话不多说,GO,GO,Go……1.允许修改分区建(有时候分区键更新不了,需要以下这样处理,当然了分区键本来是不允许更新的,都得根据实际情况)alter table t1 enable row movement;2. 获取某一时间最近的时间sqlselect *from t_datetime twhere t.f_time - to_date('2018-09-06 10:10:00','yyyy-mm-ddhh24:mi:ss') =(select min(t.f_time - to_date('2018-09-06 10:10:00','yyyy-mm-ddhh24:mi:ss'))from t_datetime t);3. 1.创建一个object类型的数据库类型对象。
表示学生实体类型。
(注意:此类型必须定义为数据库对象级别的类型,而不能定义成包、函数级别的类型。
否则,函数外部代码是无法识别该类型的)。
CREATE OR REPLACE TYPE student_obj_type AS OBJECT(stu_no NUMBER, --学号stu_name VARCHAR2(255), --姓名stu_sex VARCHAR2(2),--性别score NUMBER--成绩);4.创建一个嵌套表类型的数据库类型对象。
表示学生实体集合类型。
该类型也将用作函数中定义的返回类型。
(注意:此类型必须定义为数据库对象级别的类型,而不能定义成包、函数级别的类型。
oracle 笔记
关于Oracle的学习笔记,可能包括以下几个重要部分:数据库创建和管理:创建用户和表空间。
以超级管理员的身份登录,创建表空间,创建用户,给用户授权,使用新用户进行查询测试。
数据定义语言(DDL)用于建立、修改、删除数据库对象,包括创建语句(CREATE)、修改语句(ALTER)、删除语句(DROP)。
例如,使用CREATE TABLE创建表,使用ALTER TABLE修改表,使用DROP TABLE删除表等。
数据库查询:数据查询语言(DQL)用于查询所需要的数据。
排序查询结果。
例如,使用SELECT语句查询员工信息,并按升序排序。
排序可使用NULLS FIRST和NULLS LAST来选择空的信息的位置。
字符串拼接。
通过“||”实现字符串的拼接。
例如,查询所有员工姓名并在后面加一个“a”。
当字符串拼接遇到空的时候,空会自动变成一个空字符串。
数据库数据操作:数据操作语言(DML)用于改变数据库数据,包括INSERT、UPDATE、DELETE三条语句。
使用DISTINCT去重。
例如,SELECT DISTINCT name, id FROM A,作用于多列。
数据库高级特性:使用PARTITION BY在保留全部数据的基础上,只对其中某些字段做分组排序。
虚拟表DUAL是一个虚表,虚拟表,是用来构成SELECT的语法规则,Oracle保证DUAL里面永远只有一条记录。
数据库控制和管理:数据控制语言(DCL)用于数据库的控制和管理。
事务控制语言(TCL)用于数据库事务的控制。
以上内容只是Oracle学习笔记的一部分,实际上Oracle数据库系统的学习还包括很多其他的内容,如索引管理、视图、存储过程、触发器等高级数据库对象的管理和使用,以及数据库性能优化、安全性管理等内容。
Oracle基础必学知识点
Oracle基础必学知识点1. 数据库概念:Oracle是一种关系型数据库管理系统(RDBMS),用于存储和管理大量结构化数据。
它支持SQL语言,可以通过SQL语句进行数据查询、插入、更新和删除操作。
2. 数据库对象:Oracle数据库由多个对象组成,包括表、视图、索引、序列、存储过程等。
这些对象用于存储和处理数据,可以通过SQL语句进行操作。
3. 数据类型:Oracle支持多种数据类型,包括数字、字符、日期、大对象(LOB)等。
不同的数据类型用于存储不同类型的数据,可以根据需求选择合适的数据类型。
4. 表操作:在Oracle中,表用于存储数据。
可以使用CREATE TABLE语句创建表,使用INSERT语句插入数据,使用SELECT语句查询数据,使用UPDATE语句更新数据,使用DELETE语句删除数据。
5. 索引:索引是一种用于提高查询性能的数据结构。
在Oracle中,可以使用CREATE INDEX语句创建索引,通过索引可以快速定位到需要查询的数据,提高查询效率。
6. 数据约束:数据约束是用于保证数据的完整性和有效性的规则。
在Oracle中,可以使用约束来限制数据的取值范围、保证数据的唯一性等。
常见的约束类型包括主键约束、外键约束、唯一约束、非空约束等。
7. 视图:视图是一种虚拟表,它是从一个或多个表中获取数据的查询结果。
在Oracle中,可以使用CREATE VIEW语句创建视图,通过视图可以简化复杂的查询操作,提高数据的安全性。
8. 存储过程:存储过程是一组预先编译的SQL语句,存储在数据库中,并可以通过调用来执行。
在Oracle中,可以使用CREATE PROCEDURE语句创建存储过程,通过存储过程可以实现复杂的数据处理逻辑。
9. 事务控制:事务是一组逻辑操作,要么全部执行成功,要么全部回滚。
在Oracle中,可以使用BEGIN/END语句或者显式的事务语句(如COMMIT和ROLLBACK)来控制事务的提交或回滚。
oracle个人学习笔记
第一章Oracle简介和安装:第1节Oracle简介目标通过本章学习,您将可以:●Oracle Database的基本概念。
●安装Oracle Database●Oracle Database客户机Oracle Database的基本概念一个Oracle服务器1 是一个数据管理系统(RDBMS),它提供开放的, 全面的, 近乎完整的信息管理2 由一个Oracle 实例和一个Oracle 数据库组成Oracle Database的基本概念Oracle 数据库和Oracle 实例1 Oracle 服务器由两大部分组成, Oracle 数据库和Oracle 实例。
2 Oracle 数据库: 位于硬盘上实际存放数据的文件, 这些文件组织在一起, 成为一个逻辑整体, 即为Oracle 数据库. 因此在Oracle 看来, “数据库” 是指硬盘上文件的逻辑集合, 必须要与内存里实例合作, 才能对外提供数据管理服务。
3Oracle 实例: 位于物理内存里的数据结构. 它由一个共享的内存池和多个后台进程所组成, 共享的内存池可以被所有进程访问. 用户如果要存取数据库(也就是硬盘上的文件) 里的数据, 必须通过实例才能实现, 不能直接读取硬盘上的文件。
4区别:实例可以操作数据库;在任何时刻一个实例只能与一个数据库关联(在oracle9i 以前,以后加入了集群的概念。
一个数据库可以跟多个实例关联); 大多数情况下, 一个数据库上只有一个实例对其进行操作。
Oracle数据库的结构Oracle的体系结构图详上面提到过一个是Oracle是由Oracle 数据库和Oracle 实例这两个部分组成如果现在你还不明白为什么oracle要这样做的话,那么请结合上图观看。
实例存在于内存中,客户端与数据库建立连接时,实例就在内存中创建一个PGA,PGA可以有多个,不同的客户端与数据库建立连接,实例都会为其提供一个PGA,实例中除了PGA,还有SGA,同样SGA也是存在于内存中,但是SGA只有一个。
Oracle数据库学习笔记
Oracle数据库学习笔记1.oracle的特点?(选择记忆,理解)✓ORACLE7.X以来引入了共享SQL和多线索服务器体系结构。
这减少了ORACL E的资源占用,并增强了ORACLE的能力,使之在低档软硬件平台上用较少的资源就可以支持更多的用户,而在高档平台上可以支持成百上千个用户。
✓提供了基于角色(ROLE)分工的安全保密管理。
在数据库管理功能、完整性检查、安全性、一致性方面都有良好的表现。
✓支持大量多媒体数据,如二进制图形、声音、动画以及多维数据结构等。
✓提供了与第三代高级语言的接口软件PRO*系列,能在C,C++等主语言中嵌入S QL语句及过程化(PL/SQL)语句,对数据库中的数据进行操纵。
加上它有许多优秀的前台开发工具如POWER BUILD、SQL*FORMS、VISIA BASIC 等,可以快速开发生成基于客户端PC 平台的应用程序,并具有良好的移植性。
✓提供了新的分布式数据库能力。
可通过网络较方便地读写远端数据库里的数据,并有对称复制的技术。
支持各种分布式功能,特别是支持Internet应用。
✓功能强大,层次清晰,安全机制好,跨平台,数据操作,系统管理,安全性,集群技术,分布式应用,商业智能✓具有完整的数据管理功能。
✓作为一个应用开发环境,Oracle提供了一套界面友好、功能齐全的数据库开发工具。
✓Oracle使用PL/SQL语言执行各种操作,具有可开放性、可移植性、可伸缩性等功能。
✓可用性强✓可扩展性强✓数据安全性强✓稳定性强✓无范式要求,可根据实际系统需求构造数据库。
✓采用标准的SQL结构化查询语言。
✓具有丰富的开发工具,覆盖开发周期的各阶段。
✓支持大型数据库,数据类型支持数字、字符、大至4GB的二进制数据,为数据库的面向存储提供数据支持。
✓具有第四代语言的开发工具(SQL*formS、SQL*REPORTS、SQL*MENU等)。
✓具有字符界面和图形界面,易于开发。
✓通过SQL*DBA控制用户权限,提供数据保护功能,监控数据库的运行状态,调整数据缓冲区的大小。
oracle笔记总结很全很仔细
玩转oracle视频教程笔记一:Oracle认证,与其它数据库比较,安装连接命令(1)conn[ect]用法:conn 用户名/密码@网络服务名[as sysdba/s ysoper]例如:conn system /manager当用户特权用户连接时,必须带上(例如sys的登录)as sysdba 或是as sysoper显示当前用户show user;(2)disc[onnect]说明:该命令用来断开与当前数据库的连接(3)passw[ord]说明:该命令用于修改用户的密码,如果想修改其他用户的密码,需要用sys/system登录(4)show user说明:显示当前用户名(5)exit说明:该命令会断开与数据库的连接,同时会退出sql*plus文件操作命令(1)start和@说明:运行sql脚本案例:sql>@ d:\a.sql 或者sql>start d:\a.sql(2)edit说明:该命令可以编辑指定的sql脚本案例:sql>edit d:\a.sql(3)spool说明:该命令可以将sql*plus屏幕上的内容输出到指定文件中去案例:sql>spool d:\b.sql 并输入sql>spool off显示和设置环境变量概述:可以用来控制输出的格式,set show如果希望永久的保存相关的设置,可以去修改glogin.sql脚本(1)linesize说明:设置显示行的宽度,默认是80个字符Sql>show linesizeSql>set linesize 90(2)pagesize说明:设置每页显示的行数目,默认是14,用法和linesize一样至于其它环境参数的使用也是大同小异创建用户概述:在oracle中要创建一个新的用户使用create user语句,一般具有dba (数据库管理员)的权限才能使用案例:create user xiaoming identified by m123;给修改用户密码概述:如果给自己修改密码可以直接使用Sql>password 用户名如果给别人修改密码则需要具有dba的权限,或者拥有alter user的系统权限Sql>alter user 用户名identified by 新密码删除用户概述:一般以dba的身份去删除某个用户,如果用其它用户去删除用户则需要具有drop user的权限。
Oracle学习笔记
Oracle学习笔记Oracle学习笔记Oracle学习笔记(1) Oracle数据库编程基础文章分类:数据库这段时间出差,一直在搞需求分析和设计,每天都是写文档画UML,都有好几个月没有写代码了,只怕都快忘记了!这是我用Oracle时学习的Oracle编程做的笔记,今天也发上来与大家分享一下,一共有八章。
现在在有时间就学一下EJB3,因为在项目中会用到,等学完了把EJB3的笔记也发上来和大家分享!通过SqlPlus登录Oracle ,sqlplus 用户名/密码@数据库名建表Sql代码1.create table demo(2. id number(8),3. name varchar2(20)4.)插入数据Sql代码1.insert into demo values(1,'zhangshang');2.insert into demo values(2,'lishi');提交Sql代码/doc/fe11207420.html,mit;查询数据字典(table_name='这里的值要大写')Sql代码1.select * from dba_tab_cols a where a.table_name='DEMO';创建视图create or replace:如果该视图存在就替换,如果不存在就创建1.create or replace view myView as select id 编号,name 姓名 from demo;2.select * from myView;创建同义词(同义词相当于表的别名或逻辑名,可以通过该名称来操作相对应的物理表)在分布式Oracle数据库中,标识一个对象需要四部分:主机名、实例名、模式名、对象名。
例如********************,其中模式名是SYSTEM,对象名是auths,PX.orcl是一个数据库链,它指向服务器PX上的实例orcl,我们可以为其指定一个同义词,使所有的用户都可以通过简单的同义词来访问表********************创建公有的同义词Sql代码1.create public synonym syn1 for demo;创建私有的同义词Sql代码1.create synonym syn2 for demo;创建并使用序列创建序列的完整语法:create sequence 序列名 increment by 增量种子数 start with 起始数字maxvalue 最大值;我们可以使用序列的两个属性nextval和currval,其中nextval 是返回下一个可用的序列值,而currval用于获得当前序列的值创建序列的简单方法Sql代码1.create sequence mySeq;使用创建的序列Sql代码1.insert into demo values(mySeq.nextval,'ddd');获得当前序列的值1.select mySeq.currval from dual;删除一条记录Sql代码1.delete from demo where id=2;查询所有记录Sql代码1.select * from demo;格式化日期时间Sql代码1.select to_char(sysdate,'yyyy-MM-dd hh24:mm:ss') 格式化日期 from dual;Oracle学习笔记(2) PLSQL编程基础文章分类:数据库这是第二章的学习笔记,学习完第一章的基础之后,从现在开始要学习Oracle编程了……,希望大家能多给俺一些支持啊!编程时使用的工具是PLSQL Developer 7.1.4Sql代码1.select * from Employee;2.select * from dba_tab_cols t where t.table_name='EMPLOYEE'; Sql代码1.-- 声明部分,用于定义变量2.declareconstant用于定义常量,当定义常量时必须指定它的初始值,且数据不能改变Sql代码1.n_aaa constant number(4,2) :=5.5;boolean 类型的值只能用于sqlplus语句块中,不能用在表字段的数据类型中not null 用于强制初始化变量不能为空,此时必须为变量指定值default用于指定变量或常量的默认值1.v_valid boolean not null default false;2.v_name varchar2(20);为了确保变量使用合适的数据类型和长度,可以使用%type属性定义变量,它会按照数据库列或其它变量来确定新变量的类型和长度Sql代码1.v_job Employee.Job%type;将v_job2定义为与变量v_job的数据类型和长度完全一致Sql代码1.v_job2 v_job%type;复合变量:处理单行单列数据时,用标量变量;处理单行多列时,用PL/SQL 记录;处理单列多行时,用集合;处理多行多列数据时,可以结合使用PL/SQL记录和集合PL/SQL记录(RECORD):方法一:emp_recode_type 是PL/SQL记录类型并包含有三个成员(name,salary,job)Sql代码1.type emp_recode_type is record(2. name /doc/fe11207420.html,%type,3. salary employee.salary%type,4. job employee.job%type5.);emp_recode是记录变量Sql代码1.emp_recode emp_recode_type;方法二:使用表名的%rowtype 属性定义记录变量注意:用%rowtype 属性定义记录变量时,记录成员个数、名称、类型必须与表或视图的列的个数、名称和类型完全相同Sql代码1.emp_recode2 employee%rowtype;集合类型PL/SQL 表(也称索引表,下标可以为负数,下标没有上限和下限,并且元素的个数无限)Sql代码1.--这里的table 实指集合2.type name_table_type is table of /doc/fe11207420.html,%type index by bi nary_integer;3. name_table name_table_type;嵌套表:嵌套表的下标不能为负值,其元素的个数没有限制并可以使用表列的数据类型在使用嵌套表时必须先用create type 语句建立嵌套表类型嵌套表只是比PL/SQL 表少了 index by binary_integerSql代码1.type num_table_type is table of number(4);2.num_table num_table_type;varray(变长数组):varray的元素个数是有限制的,在使用其之前必须先建立varray 类型在此创建的varray只能存放20个varchar2类型的数据注意:嵌套表列数据需要存储在专门的存储表中,而varray数据则与其它列数据一起存放在表字段中Sql代码1.type v_varray_type is varray(20) of varchar2(10);2.n_empno employee.empno%type;Sql代码1.-- 程序开始2.begin执行部分,执行PL/SQL/和SQL语句可以用into将从表人查询出来的值赋给指定的变量将值赋给变量有两种方法,一是用 := ,二是用 into& 符号用于提示用户输入一个值,& 为sqlplus的替代变量Sql代码1.n_empno := &输入你要查询的员工编号:;2.select Name,Job into v_name,v_job from Employee where empno=n_empno;这里的 || 号与Java中的 + 号类似,表示要将两边的字符串连接起来dbms_output是Oracle所提供的系统包,用于输出数据或消息,而put_line是该包所包含的过程,用于输出字符串信息并换行当在CMD中使用dbms_output包时,必须要先将sqlplus 的环境变量serveroutput 设置为 onSql代码1.dbms_output.put_line('你查询的员工是:' || v_name || ' 他的工作是:' || v_job);引用记录变量的成员并赋值(赋值可以用 := 和 into 两种方法)注意:用sele ct……into 语句给记录变量赋值时,select语句中的列名列表的名称和个数、类型必须与记录变量的成员个数、名称、类型完全相同Sql代码1.dbms_output.put_line('你查询的员工是:' || v_name || ' 他的工作是:' || v_job);2.3.emp_/doc/fe11207420.html, := '钱森';4. dbms_output.put_line('引用记录变量的成员并赋值(Recode):' || emp_/doc/fe11207420.html,);5.6. select name,job into emp_/doc/fe11207420.html,,emp_recode2.jobfrom employee where empno=2;7. dbms_output.put_line('引用记录变量的成员并赋值(RowType):' || emp_/doc/fe11207420.html, || ' 的工作是:' || emp_recode2.job);8. -- 使用PL/SQL表(索引表)9. select name into name_table(-50) from employee where empno=1;10. dbms_output.put_line('雇员名:' || name_table(-50));11. -- 使用嵌套表12. -- 必须先设置嵌套表的下标,然后才能对该集合进行赋值13. num_table := num_table_type(1,2,3,4,5);14. num_table(1) := 10;15. num_table(5) := 100;16. dbms_output.put_line('使用嵌套表:' || num_table(1) || ',' || num_table(5));17.18.exception19. -- 异常处理部分20. when NO_DATA_FOUND then dbms_output.put_line('查询不到员工编号为' || n_empno || '的员工!');21. when TOO_MANY_ROWS then dbms_output.put_line('数据完整性错误,员工编号' || n_empno || '重复!');22. when OTHERS then dbms_output.put_line('PL/SQL执行错误!' || sqlerrm);23.-- 程序结束24.end;25./Oracle学习笔记(3) PLSQL程序控制结构文章分类:数据库这是第三章的学习笔记,学习完第二章的编程基础之后,从现在开始要学习Oracle编程了……,希望大家能多给俺一些支持啊!这周六总算是不用加班,可以好好出去玩一下了!今天去武大看樱花了,哈哈,不错!编程时使用的工具是PLSQL Developer 7.1.4Sql代码1.select * from employee;2.select * from dba_tab_cols t where t.table_name='EMPLOYEE';Sql代码1.declare2. n_empno employee.empno%type;3. v_name /doc/fe11207420.html,%type;4. n_salary employee.salary%type;5. v_temp varchar2(30);6. n_temp number(5) := 1;7. -- 自定义异常8. e_exception exception;exception_init 是一个编译时指令,用于将一个内部错误与异常的名称关联。
oracle 笔记
oracle 笔记Oracle是一种关系型数据库管理系统 (RDBMS),广泛应用于企业级应用程序中。
以下是一些关于Oracle的常见笔记:1. 安装Oracle:Oracle可以在Windows、Linux和Solaris等操作系统上安装。
安装过程中需要指定数据库的相关信息,如数据库名称、端口号和管理员密码等。
2. 数据库实例:Oracle数据库由一个或多个数据库实例组成。
每个数据库实例包含一个或多个数据文件和日志文件。
数据库实例由SGA (System Global Area)和后台进程组成。
3. 数据库对象:Oracle支持多种数据库对象,如表、视图、索引、序列和触发器等。
这些对象可以存储和管理数据。
4. SQL语言:Oracle使用结构化查询语言 (SQL) 进行数据库操作。
SQL语句可以用于创建、修改和查询数据库中的数据。
5. 表空间:表空间是Oracle中逻辑存储空间的单位。
每个表空间包含一个或多个数据文件,用于存储表和索引数据。
6. 数据备份和恢复:Oracle提供了多种备份和恢复机制,如全备份、增量备份和归档日志等。
这些机制可以保护数据库免受数据损坏和丢失的影响。
7. 性能优化:Oracle提供了多种性能优化工具和技术,如索引、分区和查询优化器。
这些工具可以帮助提高数据库的性能和响应时间。
8. 数据库安全:Oracle提供了多种安全功能,如用户认证、访问控制和数据加密等。
这些功能可以保护数据库免受未经授权的访问和数据泄露的威胁。
9. 远程连接:Oracle支持远程连接,可以从远程计算机访问和管理数据库。
远程连接使用Oracle客户端软件进行配置和连接。
10. 高可用性:Oracle支持多种高可用性解决方案,如数据复制、故障转移和备份服务器等。
这些解决方案可以确保在数据库故障时继续提供服务。
Oracle学习笔记
断壁残垣---Oracle学习笔记Emitter第一章关系数据库用户解锁:使用system用户登录Sql语句:SELECT username,account_status FROM dba_users;ALTER USER scott ACCOUNT_UNLOCK;//解锁ALTER UESR scott IDENTIFIED BY tiger;//设定密码CONNECT scott/tiger;SELECT * FROM emp;第二章体系结构概述体系结构Oracle数据库从存储结构上可以分为物理存储结构与逻辑存储结构,从实例结构上可以分为内存结构与进程结构。
Oracle的物理存储结构是由存储在磁盘中的操作系统文件所组成的,Oracle在运行时需要使用这些文件。
一般,Oracle数据库在物理上主要由3种类型的文件组成,分别是数据文件(*.dbf)、控制文件(*.ctl)和重做日志文件(*.log)。
数据文件数据文件(Data File)是指存储数据库数据的文件。
数据库中的所有数据最终都保存在数据文件中,例如,表中的记录和索引等。
如果数据文件中的某些数据被频繁访问,则这些数据会被存储在内存的缓冲区中。
读取数据时,Oracle系统会首先从内存的数据缓冲区中查找相关数据信息,如果找不到,则从数据库文件中把数据读取出来,存放到内存的数据缓冲区中,供查询使用;存储数据时,修改后的数据信息,也是先存放在内存的数据缓冲区中,在满足写入条件(例如执行提交操作)时,由Oracle的后台进程DBWn将数据写入数据文件。
SELECT file_name FROM dba_data_files;控制文件控制文件(Control File)是一个很小的二进制文件,用于描述和维护数据库的物理结构。
在Oracle数据库中,控制文件相当重要,它存放有数据库中数据文件和日志文件的信息。
Oracle数据库在启动时需要访问控制文件,在数据库的使用过程中,数据库需要不断更新控制文件,由此可见,一旦控制文件受损,那么数据库将无法正常工作。
Oracle 个人学习的一些笔记
('HARPER LEE','AMERICAN NOVELIST, PUBLISHED ONLY ONE NOVEL');
Insert into AUTHOR values
('LUCY MAUD MONTGOMERY','CANADIAN NOVELIST');
('BERYL MARKHAM', 'AVIATOR AND ADVENTURESS');
Insert into AUTHOR values
('PETER GOMES', 'HARVARD THEOLOGIAN');
Insert into AUTHOR values
('THOMAS SWEARS', 'PASTOR AND AUTHOR');
insert into ADDRESS values ('DE MEDICI', 'LEFTY',
null,null,null,null,'312-555-1166',null);
insert into ADDRESS values ('DEMIURGE', 'FRANK',
null,null,null,null,'707-555-8900',null);
Insert into AUTHOR values
('STEPHEN AMBROSE',NULL);
Insert into AUTHOR values
Oracle基础知识学习笔记(自己整理的)
基本概念:数据:描述事物的符号;数据库:数据存放的地方,数据库是由数据和数据库对象组成的;数据库管理系统(DBMS):用于管理数据的计算机软件,使用户能方便的定义和操纵数据,维护数据的安全性和完整性,以及进行多用户下的并发控制和数据库恢复。
关系数据库(RDB):基于关系模型的数据库。
ORACLE数据库的体系结构是由一个实例和若干个数据库文件组成。
SQL语句分为:数据定义语句(DDL):create、drop、alter、truncate(不能回滚)数据操作语句(DML):insert、select、update、delete、merge数据控制语句(DCL):grant、revoke事物控制语句:commit、rollback、savepointORACLE数据库的核心组件:数据字典(DD)动态性能表(DPT)触发器PL/SQL包用户与角色:角色是一些权限的集合,分为dba、connect、resource、exp_full_database、imp_full_database。
用户分为sys、system。
用户权限包括两种:是指执行某一SQL语句或访问另一用户对象的权限。
它分为系统权限和对象权限。
(Dba_roles/dba_roles_privs/dba_sys_privs/dba_tab_pri vs/dba_col_privs/role_role_privs/role_sys_privs/role_ta b_privs)创建用户:Create user username identified by password;修改用户:Alter user username identified by newpassword; 创建角色:Create role rolename identified by password;修改角色:Alter role rolename identified by new password; ORACLE数据库的物理结构:1.数据文件:用于存放所有的数据库数据,若干个数据文件组成表空间;它包括系统数据(数据字典)、用户数据(表、索引、簇等)、undo数据等。
Oracle个人笔记
Cascade 级联连接符恢复数据rollback;Sysdate 系统当前时间Savepoint 名称; 复制备份点replace : 替换(如果存在的话)给表起别名的时候不可以加asSys口令: change_on_installSystem口令: manager小型数据库-------------安全性低负载量小Access , foxbase中型数据库------------负载量较大(5000—15000左右) 较安全Sql Server , My Sql大型数据库------------海量负载成本高安全性高Sybase , Oracle, db2何时使用何种数据库?1.项目规模a.负载量的大小(访问量)b.成本c.安全性2.负载量在百次左右可以考虑小型数据库在万次左右可以考虑中型数据库sys账户( 密码: manager ): 最高权限具有sysdba角色, 有Create DataBase (创建数据库) 的权限system账户( 密码:change_on_install ):: 管理操作员, 权限也很大,具有Sysoper 角色,没有Create DataBase (创建数据)的权限show user : 显示当前用户名称切换用户conn 用户名/密码;当用特殊用户身份连接时必须带上as sysdba或则as sysoper修改密码passw运行Sql脚本start 路径:\文件名称将屏幕上的内容输出到指定文件spool 路径名称----- 你要保存的内容------ spool off创建用户create user 用户名identified by 密码(一般以字母开头)删除用户及其表drop user 用户名cascade授权grant connect(角色) to 用户名把当前用户名的某个表授权给另外一个用户grant select(权限名称) on 表名to 用户名如果希望此用户可以继续把权限往下传递则加上with grant option例如: grant select on emp to xiaoming with grant option查看表结构desc 表名称权限1.系统权限用户对数据库的相关权限( 例如建表….) create session 权限如果给用户赋予此种权限则表示该用户拥有所有权限2.对象权限用户对其他用户的数据对象操作的权限指访问其他方案对象的权利,用户可以直接访问自己方案的对象但是如果要访问别的方案的方案.则必须具有对象的权限.常用的有:Alter 修改delete删除select 查询insert添加update修改Index索引references 引用execute 执行A.selectB.insertC.updateD.deleteE.allF.create index数据对象用户创建的表触发器视图……..角色1、自定义角色2、预定义角色connect角色dba角色resource角色方案:每个用户对应一个方案方案名字和用户名是一样的方案里包括各样的数据对象收回权限( 谁授权谁收回)revoke select(权限名称) on 表名from 用户名对权限的维护(A赋权给B B有赋权给C ) 如果A把B的权限回收那么C的权限也将被收回Grant connect to 用户名with admin option -------------------系统权限Grant select on 表名to 用户名with grant option ---------- 对象权限用户管理Profile 口令限制,资源限制的命令集合当建立数据库时oracle 回自动建立名称为default的profile. 当建立用户没有指定profile 选项那么oracle会将default分配给用户1.账户锁定:Create profile lock_account(规则名称) limit failed_login_attempts 3(最多输入次数) password_lock_time 2(锁定天数); --------------创建profile文件(可以理解为规则)Alter user tea(用户名) profile lock_acconunt(你建立好的规则名称)‘------------------(把上面的规则赋给此用户)2.账户解锁:Alter user 用户名account unlock;3.删除profileDrop profile password 规则名称cascade表名命令规则1.必须以字母开头2.长度不能超过30个字符3.不能使用oracle保留字4.只能使用A-Z a-z 0 – 9 等数据类型1.字符型Char 定长最大2000字符查询速度最快如定义的的内容比添加的字符要长的话则会自动在你添加的字符之后添加空格补全Varchar2 变长最大4000字符Clob 字符型大对象最大4G2.数字类型Number 范围-10的- 38次方````````10的38次方可以表示整数也可以表示小数例如:Number ( 5,2 ) 表示一个小数有5位数2位小数如555.55Number ( 5 ) 表示一个5位整数555553.日期类型Date 包含年月日和时分秒Timestamp ( 时间戳准确到毫秒) 是对date数据类型的扩展默认是: 日月年修改日期的默认格式Alter session set nls_date_format = ‗yyyy-mm-dd‘4.图片类型Blob 二进制数据可以存放图片声音最大4G表空间存放表的空间便于管理创建表create table student ( xh number(4) , xm varchar2(20) , sex char(2), birthday date , sal number(7,2));添加一个字段Alter table 表名add ( 字段名字段类型)例: alter table student add ( classid number(2))修改字段长度Alter table 表名modify ( 要修改的字段要修改成的类型)例如: alter table student modify ( xm varchar2(30) )修改字段的类型或则名字( 不能有数据)Alter table 表名modify ( 字段名字段类型)例如: alter table student modify ( xm char(20) )删除一个字段Alter table 表名drop column 要删除的字段名例如alter table student drop column sal修改表的名字Rename 表名to 要修改成的名字例如rename student to stu删除表Drop table 表名例如drop table student添加数据Insert into 表名values (‗数据a‘ , ‗数据b‘ )插入部分字段Insert into 表名( 字段A , 字段B , 字段C ) values (数据A ,数据B , 数据C )插入空值Insert into 表名( 字段A , 字段B , 字段C ) values (数据A ,数据B , null )如果要查询空字段的话Select * from 表名where 字段is null例如select * from student where birthday is null ;修改一个字段Update 表名set 字段A where 字段B= 条件;例如update student set sex=‘女‘ where xh=‘1‘;删除数据( 可恢复数据)Delete from 表名;表结构还在写日志可以恢复速度慢恢复数据rollbaclk to: 备份点名称;Savepoint 名称; 保存备份点删除表的结构和数据drop table 表名;truncate table 表名; ----------- 删除所有记录表结构还在不写日志无法找回删除的记录速度快删除一条记录Delete from 表名where 字段=‘条件‘;表的查询查看表结构:Desc 表名;查询所有列:Select * from 表名;查询指定列:Select 字段A , 字段B from 表名取消重复行Select distinct 字段A , 字段B from 表名;Set timing on -------------打开执行时间取别名Select 字段A ―别名名称‖ from 表名;如何处理null值Nvl ( 字段A , 条件一)例如: nvl ( comm. ,0 ) 如果comm为null 则使用0 来表示如果不为null则使用comm.本身Like 操作符% 表示0到多个字符_ 表示单个字符例如查询姓名第三个字符为W人的所有信息Select * from 表名where 字段A like ‗__W%‘;Select * from emp where ename like ‗__W%‘;In 操作符( 速度快)In (条件1,条件2 , …….)Or 或则多用在条件之后条件一or 条件二Is null 为空Is not null 不为空Order by 排序默认什么都不写为升序加上desc 则为降序例如:Select * from 表名order by 字段A ;查询按照部门编号升序而雇员工资降序排列Select * from emp order by deptno , sal desc ;------- 如果一个查询语句多个字段排序的话则用逗号分开每个字段分组函数如果有一个列里有一个分组函数则其他字段也必须是分组函数例如select ename, max(sal) from emp 这是错误的因为ename不是一个分组函数而max(sal) 是个分组函数正确的应该是Select min(sal) , max(sal) from emp ; 或则Select ename, sal from emp where sal = ( select max(sal) from emp )1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle个人笔记一、创建表create table USER(UID VARCHAR2(16) not null,USERNAME VARCHAR2(32),PASSWORD VARCHAR2(32),AGE NUMBER(12,3))主键设置:Alter table USER Add Constraint PrimaryKey Primary Key (UID)二、基本查询命令解释cmd>sqlplus scott/tiger 开启Oracle数据库scott,密码:tiger SQL>spool c:\1.txt 把cmd操作保存到1.txt文件里SQL>show user 显示当前用户SQL>select * from tab; 查询当前用户下的表SQL> host cls 清屏SQL> desc emp 查询员工表结构SQL> select * from emp; 查询员工的所有信息SQL> select empno,ename,job from emp; 查询员工某些列的信息SQL> show linesize 显示cmd窗口的显示行宽SQL> set linesize 150 设置cmd窗口的显示行宽SQL> col ename for a8 设置某一列的列宽为8个字符串长SQL> col sal for 9999 设置某一列的列宽4位数字长SQL> /再次执行上一次sql语句SQL> select ename,job,sal,sal*122 form emp;第 2 行出现错误:ORA-00923: 未找到要求的FROM 关键字SQL> 22* form empSQL> c /form/from2* from empSQL> /c命令( change )如果sql语句很长再次修改很麻烦,所以可以通过定位到第2行修改某一行就行了SQL> select distinct deptno from emp;去除重复,distinct作用于后面所有的列SQL> select 'Hello'||' World' from dual; || 为连接字符串,输出为:HelloWorld SQL>set timing on;开始计时SQL>set timing off 结束计时SQL>@c:\1.sql oracl执行c盘下1.sql脚本mysql执行脚本source c:\1.sqlSQL>--行注释/*块注释*/ 在Oracle中-- 和/**/就是注释Cmd>lsnrctl status 查看监听器Cmd>tnsping 服务名查看该服务名是否配置正确1.1、Rownum使用案例Rownum必须嵌套使用select u.*from(select rownum a,t.*from uap_sb t)u where a> 11.2、Insert into批量插入数据创建与student表结构一样的表stu123,并导入student的所有表数据create table stu123as(select*from STUDENT);已经创建结构相同的表stu123导入全部数据insert into stu123(select*from STUDENT);提交事务1.3、SQL优化1.尽量使用列名代替* ( Oracle9i之后,一样)2.理论上,尽量使用多表查询3.where 解析执行顺序右--> 左4.尽量不要使用集合运算1.4、SQL中的null值1.包含null值的表达式都为null2.null永远!= null,要判断是否为null用is null、is not null,null进行的算术运算=、!=后结果都为false3.组函数会自动滤空null1.5、Oracle提供了一个默认数据库dual方便用于查询没有指定哪个数据库用例:SQL> select 'Hello'||' World' 列from dual;测试连接数据库时,因为select的格式必须为select *** from 表名,为了满足这个条件,所以用dual1.6、创建用户与授权1,创建用户:创建admin用户,密码为admincreate user admin identified by admin;2,授权:给admin用户授予数据库最高权限dbagrant dba to admin;3,oracle用户查看当前自己的权限和角色select*from user_tab_privs;select*from user_role_privs;4,sys用户查看所有用户的权限和角色select*from dba_tab_privs;select*from dba_role_privs;二、过滤和排序2.1、where的使用,where 解析顺序右--> 左SQL> select * from emp where empno=7902 or empno=7900;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- -------- --------- ---------- -------------- ----- ---------- ----------7900 JAMES CLERK 7698 03-12月-81 950 30 7902 FORD ANALYST 7566 03-12月-81 3000 20 2.2、sysdate关键字,表示查询当前时间查询当前时间SQL> select sysdate from dual;修改日期的格式SQL> alter session set NLS_DATE_FORMAT='yyyy-mm-dd';获取年月日时分秒:to_char(a,b)把a转换成字符串bSQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')现在时间from dual;现在时间-------------------2014-02-11 15:21:262.3、通过查询Oracle系统参数设置SQL> select * from v$nls_parameters;PARAMETER V ALUE------------------------- ----------NLS_CURRENCY ¥NLS_TIME_FORMAT HH . MI . SSXFF AM2.4、[ not ]between ** and **使用,表示[ 不]在多少到多少之间select * from emp where sal between 2000 and 10002.5、[ not ] in (a,b)使用,表示是a或是b [ 不是a和b ]注意:not in (a,b) 中如果a或b为null表示判断条件都为null,返回结果为空SQL> select * from emp where empno not in (7369,7566,7788,null);未选定行SQL> select * from emp where deptno not in (10,20)7698 BLAKE MANAGER 7839 01-5月-81 2850 302.6、模糊查询like: % _select * from emp where ename like '%S%';7369 S MITH CLERK 7902 17-12月-80 4000 202.7、排序order by,默认升序以sal升序select * from emp order by sal;以deptno默认升序,以sal降序select * from emp order by deptno,sal desc以deptno降序,以sal降序select * from emp order by deptno desc , sal desc2.8、a命令追加(append)SQL>select * from emp order by sal;SQL>a desc //注意中间空两个字符,否则拼接不正常1* select * from emp order by sal desc;三、单行函数3.1、转换字符串大小写lower(a)、upper(b)、initcap(a)1、lower(a):把字符串a全都转成小写2、upper(a):把字符串a全都转成大写3、initcap(a):把字符串a首字母转成大写SQL>select lower('Hello World') 转小写, upper('Hello World') 转大写,initcap('hello world') 首字母大写from dual;转小写转大写首字母大写hello world HELLO WORLD Hello World3.2、substr(a,b) 从a中,第b位开始取取右边所有字符,下标从1开始SQL> select substr('Hello World',3) from dual;llo World3.3、substr(a,b,c) 从a中,第b位开始取取c位SQL> select substr('Hello World',3,,5) from dual;llo W3.4、length 字符数lengthb 字节数SQL> select length('中国') 字符,lengthb('中国') 字节from dual字符字节2 43.5、instr(a,b): 在a中,查找b;找到返回下标;否则返回0SQL> select instr('Hello World','ll') from dual;INSTR('HELLOWORLD','LL')------------------------------------------33.6、LPAD(a,b,c) 左填充rpad(a,b,c)右填充lpad:如果a的字符长度小于b就截取b长度的字符作为返回值;如果a的字符长度大于b 就在左边补充c;rpad一样SQL> select lpad('abcd',10,'*') 左,rpad('abcd',10,'*') 右from dual;左右---------- ----------******abcd abcd******3.7、trim(a from b) 去掉b字符串前后指定的a字符SQL> select trim('H' from 'Hello HWorldH') from dual;TRIM('H'FR----------ello HWorld3.8、replace(a,b,c) 把a中的b替换cSQL> select replace('Hello World','l','*') from dual;REPLACE('HE-----------He**o Wor*d3.9、round(a,b)数字运算函数----四舍五入SQL> select round(45.926,2) 一,round(45.926,1) 二,round(45.926,0) 三, round(45.926,-1) 四, round(45.926,-2) 五from dual一二三四五---------- ---------- ---------- ---------- ----------45.93 45.9 46 50 04.0、trunc(a,b) 舍去a数字小数点b位后的所有数SQL>select trunc(45.926,2) 一,trunc(45.926,1) 二,trunc(45.926,0) 三, trunc(45.926,-1) 四, trunc(45.926,-2) 五from dual一二三四五---------- ---------- ---------- ---------- ----------45.92 45.9 45 40 04.1、sysdate当前系统时间SQL> select sysdate from dual;SYSDATE--------------08-2月-14 //默认格式:日月年4.2、to_char(a,b) 把a转化成b格式字符串SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;TO_CHAR-------------------2014-02-08 15:37:524.2、to_number(a,b) 把a数字字符串转化成b数字(有问题)SQL> select to_number(“123”,123) from dual;TO_NUMBER-------------------1234.3、systimestamp当前系统时间戳,精度更高SQL> select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss:ff') from dual;TO_CHAR(SYSTIMESTAMP,'YYYY-MM-----------------------------2014-02-08 15:39:05:6970004.4、时间的加减运算,不支持乘除SQL> select (sysdate-1) 昨天,sysdate 今天,(sysdate+1) 明天from dual;昨天今天明天-------------- -------------- --------------07-2月-14 08-2月-14 09-2月-144.5、months_between(a,b)精确计算a时间到b时间之间有多少个月SQL> select ename,(sysdate-hiredate)/30 一,months_between(sysdate,hiredate) 二from emp;ENAME 一二-------- ---------- ----------SMITH 403.555255 397.7308924.6、add_months(a,b) 计算在a日期的基础上加b个月后的日期SQL> select add_months(sysdate,97) from dual;ADD_MONTHS(SYS--------------08-3月-224.7、last_day(a)表示计算a日期该月的最后一天是几号SQL> select last_day(sysdate) from dual;LAST_DAY(SYSDA--------------28-2月-144.8、next_day(a,b)表示从a时间后星期b是几号系统默认支持星期为:星期一... 星期日SQL> select next_day(sysdate,'星期六') from dual;NEXT_DAY(SYSDA--------------15-2月-144.9、查询员工的薪水:两位小数(.99) 千位符( , ) 本地货币代码( L )SQL> select to_char(sal , ' L9, 999 . 99 ' ) from emp;TO_CHAR(SAL,'L9,999-------------------¥1,600.005.0、nvl(a,b)和nvl2(a,b,c)的使用1、nvl2(a,b) 当a=null时候,返回b;否则返回a2、nvl2(a,b,c) 当a=null时候,返回c;否则返回bSQL> select sal*12+nvl2(comm,comm,0) from emp;5.1、nullif(a,b) 当a=b时候,返回空;否则返回aSQL> select nullif('abc','abc') from dual;NUL---------5.2、coalesce(a,b) 从左往右找到第一个不为null的值SQL> select comm,sal,coalesce(comm,sal) from emp;5.3、case a when b then c else d end相当于if(a==b){ c } else { d };SQL> select ename,job,sal 涨前,2 case job when 'PRESIDENT' then sal+10003 when 'MANAGER' then sal+8004 else sal+4005 end 涨后6 from emp;5.4、decode(a,b,c)等价于caseSQL> select ename,job,sal 涨前,2 decode(job,'PRESIDENT',sal+1000,3 'MANAGER',sal+800,4 sal+400) 涨后5 from emp;四、多行函数(函数)4.1、sum(a)求a的总和SQL> select sum(sal) from emp;4.2、count(a)求a 的除去为null值的个数SQL> select count(*) from emp;4.3、avg(a)求a 的平均数SQL> select sum(sal)/count(*) 一,avg(sal) 二from emp;一二---------- ----------2073.21429 2073.21429SQL> select sum(comm)/count(*) 一, sum(comm)/count(comm) 二, avg(comm) 三from emp;一二三---------- ---------- ----------157.142857 550 550因为count()函数会过滤掉值为null的数,所以count(*)为所有个数,而count(comm)会过滤掉comm=null的数,所以平均值也会过滤掉4.4、group by单列分组SQL> select deptno,avg(sal) from emp group by deptno;DEPTNO A VG(SAL)---------- ----------30 1566.6666720 217510 2916.666674.5、group by多列分组,组函数前的列都要加到group by后SQL> select deptno,job,avg(sal) from emp group by deptno,job order by 1;DEPTNO JOB A VG(SAL)---------- --------- ----------10 CLERK 130010 MANAGER 245010 PRESIDENT 500020 ANALYST 300020 CLERK 95020 MANAGER 297530 CLERK 95030 MANAGER 285030 SALESMAN 14004.6、group by 列名having 条件SQL> select deptno,avg(sal) from emp group by deptno having avg(sal)>2000; having 和where的区别:1、having后面的条件可以是组函数,where后条件不能为组函数4.7、group by rollup(deptno,job)(group by 增强)抽象为:group by rollup(a,b) =group by a,b + group by a + grouo by null SQL>select deptno,job from emp group by rollup(deptno,job);DEPTNO JOB---------- ---------10 CLERK10 MANAGER4.8、break on 列skip 2设置显示格式表示以deptno分组,每组中间空2行SQL> break on deptno skip 2SQL>select deptno,job,sum(sal) from emp group by rollup(deptno,job);DEPTNO JOB SUM(SAL)---------- --------- ----------10 CLERK 1300MANAGER 2450PRESIDENT 5000875020 CLERK 1900ANALYST 6000MANAGER 29751087530 CLERK 950MANAGER 2850SALESMAN 56009400DEPTNO JOB SUM(SAL)---------- --------- ----------29025SQL> break on nullSQL>select deptno,job,sum(sal) from emp group by rollup(deptno,job);DEPTNO JOB SUM(SAL)---------- --------- ----------10 CLERK 130010 MANAGER 245010 PRESIDENT 500010 875020 CLERK 190020 ANALYST 600020 MANAGER 297520 1087530 CLERK 95030 MANAGER 285030 SALESMAN 560030 9400290254.9、concat(a,b)连接字符串(与|| 相同)SQL> select concat('hello','world') from dual;CONCAT('HE----------helloworld5.0、wm_concat(a);以str1,str2...格式连接所有字符串把查询所有的数据以, 连接显示SQL> select wm_concat(ename) from emp;WM_CONCAT(ENAME)------------------------------------------SMITH,ALLEN,WARD,JONES,MARTIN,BLAKE,CLARK,五、多表查询5.1、等值连接SQL> select e.empno,e.ename,e.sal,d.dname2 from emp e,dept d3 where e.deptno=d.deptno;EMPNO ENAME SAL DNAME---------- -------- ----- --------------7369 SMITH 800 RESEARCH. . .5.2、不等值连接SQL> select e.empno,e.ename,e.sal,s.grade2 from emp e,salgrade s3 where e.sal between s.losal and s.hisal;EMPNO ENAME SAL GRADE---------- -------- ----- ----------7369 SMITH 800 15.3、外连接外连接:通过外连接,我们可以把某些不成立的记录,包含在最后的结果中左外连接:当where e.deptno=d.deptno不成立的时候,等号左边的表包含在最后的结果中写法: where e.deptno=d.deptno(+)右外连接:当where e.deptno=d.deptno不成立的时候,等号右边的表包含在最后的结果中写法: where e.deptno(+)=d.deptno右外连接实例:SQL> select d.deptno 部门号, d.dname 部门名称, count(e.empno) 人数2 from emp e,dept d3 where e.deptno(+)=d.deptno4 group by d.deptno,d.dname;部门号部门名称人数---------- -------------- ----------10 ACCOUNTING 340 OPERATIONS 05.4、自连接:通过表的别名,将同一张表视为多张表SQL> select e.ename 员工姓名, b.ename 老板的姓名2 from emp e,emp b3 where e.mgr=b.empno;员工姓名老板的姓名---------- ----------FORD JONES5.5、层次查询connect by prior由于自连接不适合操作大表,所以大表就用层次查询,层次查询也是查询单表,但以树形结构从上到下查SQL>select level,empno,ename,mgr2 from emp3 connect by prior empno=mgr4 start with mgr is null5 order by 1;LEVEL EMPNO ENAME MGR---------- ---------- -------- ----------1 7839 KING2 7566 JONES 78392 7698 BLAKE 78392 7782 CLARK 78393 7902 FORD 75663 7521 WARD 76983 7900 JAMES 76983 7934 MILLER 77823 7499 ALLEN 76983 7788 SCOTT 75663 7654 MARTIN 76983 7844 TURNER 76984 7876 ADAMS 77884 7369 SMITH 7902这里level为伪列,不存在,但系统自动会加上,表示树的深度connect by prior empno=mgr:表示树父节点的empno=子节点的mgr就符合条件start with mgr is null:表示包含mgr为nullorder by 1:表示以level升序。