2.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的四个主要用户1.超级管理员sys/change_on_install2.普通管理员system/manager3.普通用户scott/tiger4.大数据用户sh/sh简单查询1.查询表结构 DESC 表名2.简单查询SELECT [DISTINCT] *|[字段 [别名]] [,字段 [别名]] …FROM 表名 [别名](1)查询时也可以使用四则运算,如:SELECT (字段*x)+y FROM 表名(2)可以使用“||”连接字段与字符串,如:select '工作与工资:' || job || sal 工作工资 from emp执行结果:3.限定查询SELECT [DISTINCT] *|[字段 [别名]] [,字段 [别名]] …FROM 表名 [别名][WHERE 条件(s)](1)Where字句后可以增加多个条件,最常见的条件就是最基本关系运算:>、<、>=、<=、!=(<>)、BE TWEEN…AND、LIKE、IN(指定范围)、IS NULL(为空)、AND(且)、OR(或)、NOT(非)。
(2)多个条件可以使用AND与OR连接。
例如:select * from emp where sal>1300 and sal<4000(3)范围判断BE TWEEN…AND:BETWEEN 最小值 AND 最大值(大于等于最小值,小于等于最大值),BE TWEEN…AND 对数字、日期都可以使用!!!例如:select * from emp where sal between 1300 and 4000例如:select * from emp where hiredate between '01-1月-1981' and '31-12月-1981'(4)判断为空IS (NOT) NULL例如:select * from emp where comm is null例如:select * from emp where comm is not null例如:select * from emp where not comm is null(5)指定范围的判断(NOT) IN例如:select * from emp where empno in(7369,7566,7799)例如:select * from emp where empno not in(7369,7566,7799)注意:如果NOT IN 范围里出现了NULL则查询不到任何结果!!!(6)模糊查询LIKE,‘_’匹配一个字符。
Oracle数据库学习笔记_Oracle添加主键primarykey的四种方法
Oracle数据库学习笔记_Oracle添加主键primarykey的四种⽅法创建主键oracle主键添加语句通常紧跟在建表语句之后,也可以直接嵌在列声明⾥创建,oracle创建主键时会⾃动在该列上创建索引。
常见⽅法⼤概有以下5种:⽅法⼀、使⽤add constraint ⽅法添加主键约束alter table 表名 add constraint 主键名 primary key (列名1,列名2,...)⽅法⼆、使⽤索引创建主键(和⽅法⼀没有区别,可以将⽅法⼀理解为省略了using index)alter table 表名 add constraint 主键名 primary key (列名1,列名2,...)using index [index_name];当省略using index后⾯的index_name时,创建主键的同时创建同名索引;当使⽤已有索引index_name创建主键时,注意索引列和主键列应该相同才能创建成功。
⽅法三、直接添加主键alter table 表名 add primary key (列名1,列名2,...) ;同样,创建主键的同时创建同名索引。
⽅法四、参数列内添加主键create table ALERT_RESULT_EVENT_C(data_date VARCHAR2(8) not null,object_id VARCHAR2(600) not null,event_id VARCHAR2(20) not null,ratio NUMBER(22,4),pairing_object_id VARCHAR2(128),index_value_1 VARCHAR2(128),index_value_2 VARCHAR2(128),constraint PK_ALERT_RESULT_EVENT_C primary key (DATA_DATE, OBJECT_ID, EVENT_ID));删除主键alter table 表名 drop primary key ;采⽤该语句删除主键时,同名索引也会被删掉。
Oracle数据库学习笔记_CREATETABLE和INSERTINTO的高级用法
Oracle数据库学习笔记 _CREATETABLE和 INSERTINTO的高级用 法
1、新建表 create table ACCT_LOAN (
data_date INTEGER not null, --整数,也可以约束数字最大位数,不可为空 acct_num VARCHAR2(35) not null, --可变长度的字符串(包含数字。字母及特殊字符) curr_cd CHAR(3), --固定长度为3的字符串(可包含数字,字母及特殊字符) drawdown_dt DATE, --日期 loan_amt decimal(8,2) --小数,小数最大长度为8位,小数位固定为2位 ) 2、建备份表 create table 备份表名 as select * from 表名; 3、将两张相同结构的表合并在一起 insert into 表1 select * from 表2 where ...; commit; 4、更新表:merge into merge into 表1 using 表2 on (表1.字段=表2.字段) when matched then update set ... when not matched then insert values(表2.xx, 表2.xx,...); commit; 5、给变量赋值 select into 变量名 from
【Oracle学习笔记】定时任务(dbms_job)
【Oracle学习笔记】定时任务(dbms_job)⼀、概述Oralce中的任务有2种:Job和Dbms_job,两者的区别有:1. jobs是oracle数据库的对象, dbms_jobs只是jobs对象的⼀个实例,就像对于tables, emp和dept都是表的实例。
2.创建⽅式也有差异,Job是通过调⽤dbms_scheduler.create_job包创建的,Dbms_job则是通过调⽤dbms_job.submit包创建的。
3.两种任务的查询视图都分为dba和普通⽤户的,Job对应的查询视图是dba_scheduler_jobs和user_scheduler_jobs,dbms_jobs对应的查询视图为dba_jobs和user_jobs。
这⾥主要是介绍Dbms_job。
⼆、使⽤1、创建job:1BEGIN2 DBMS_JOB.SUBMIT(3 JOB OUT BINARY_INTERGER,--输出变量,是此任务在任务队列中的编号,也可以⾃定义,⼀般不传4 WHAT IN VARCHAR2,--执⾏的任务的名称及其输⼊参数5 NEXT_DATE IN DATE DEFAULT SYSDATE,--任务执⾏的时间6 INTERVAL IN VARCHAR2DEFAULT NULL,--任务执⾏的时间间隔7 NO_PARSE IN BOOLEAN DEFAULT FALSE,--⽤于指定是否需要解析与作业相关的过程8 INSTANCE IN BINARY_INTEGER DEFAULT ANY_INSTANCE,--⽤于指定哪个例程可以运⾏作业9 FORCE IN BOOLEAN DEFAULT FALSE--⽤于指定是否强制运⾏与作业相关的例程10 );11END新⼿可以使⽤窗⼝创建:2、删除job: dbms_job.remove(jobno); -- jobno任务号3、修改要执⾏的操作: job:dbms_job.what(jobno, what); --指定任务号以及存储过程4、修改下次执⾏时间:dbms_job.next_date(jobno, next_date); --指定任务号的时间5、修改间隔时间:dbms_job.interval(jobno, interval); --指定任务号的间隔时间6、改变与作业相关的所有信息,包括作业操作,作业运⾏⽇期以及运⾏时间间隔等.1 dbms_job.change(2 job in binary_integer,3 what in varchar2,4 next_date in date,5 interval in varchar2,6 instance in binary_integer default null,7 force in boolean default false8 );例⼦:dbms_job.change(2,null,null,'sysdate+2');6、启动job: dbms_job.run(jobno); --指定任务号启动7、停⽌job: dbms.broken(jobno, broken, nextdate); –broken为boolean值 N代表启动,Y代表没启动(STOP)三、Interval 说明间隔/interval是指上⼀次执⾏结束到下⼀次开始执⾏的时间间隔,当interval设置为null时,该job执⾏结束后,就被从队列中删除。
韩顺平oracle学习笔记
韩顺平oracle学习笔记第0讲:如何学习oracle一、如何学习oracleOracle目前最流行的数据库之一,功能强大,性能卓越。
学习oracle需要具备一定基础:1.学习过一门编程语言(如:java ,c)2.最好学习过一门别的数据库(sql server,mysql , access)教程推荐:oracle使用教程,深入浅出oracle记住:欲速则不达,做任何事情要遵循他的规律,循序渐进,信心很重要成为一个oracle高手过程:理解小知识点->做小练习->把小的只是点连成线->做oracle项目->形成只是面->深刻理解Oracle基础部分:oracle基础使用; oracle用户管理; oracle表管理Oracle高级部分:oracle表的查询; oracle的函数; oracle数据库管理;oracle 的权角色; pl/sql 编程;索引,约束和事物。
期望目标:1 学会安装、启动、卸载oracle2 使用sql *plus工具3 掌握oracle用户管理4 学会在oracle中编写简单的select语句第1讲:基础语法内容介绍:1.为什么学习oracle2.介绍oracle及其公司的背景3.学会安装、启动、卸载oracle4.oracle开发工具5.Sql*plus的常用命令6.oracle用户管理一、主流数据库包括:●微软:sql server 和 access●瑞典:mysql AB公司●IBM公司:DB2●美国sybase公司:sybase●IBM公司:infromix●美国oracle公司:oracle(目前最流行的之一)二、oracle安装,启动及卸载1.系统要求:操作系统最好为windows2000内存最好在256M以上硬盘空间需要2G以上2.oracle安装会自动的生成sys和system两个用户说明:○1Sys用户是超级用户,具有最高权限,具有sysdba角色,create database 的权限,默认密码是manager○2System 用户是管理操作员,权限也很大,具有sysoper角色,没有create database权限,默认密码是 change_on_install○3一般讲,对数据库维护,使用system用户登录就可以了3.启动oracle右键单击我的电脑->服务和应用程序:服务->启动OracleServiceMYORA1(MYORA1是安装oracle时起的名字各有不同)和OracleOracleHome90TNSLlistener4.卸载oracle1、先关掉oralce,net stop OracleServiceORCL(ORCL是我的实例名字,换成你的),或者去我的电脑服务中关闭2、开始->程序->Oracle - oracle的版本号,我的是10ghome->Oracle Installation Products->Universal Installer 卸载oracle3、进注册表,regedit,删除选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE下所有的key。
Oracle数据库学习笔记
Oracle数据库学习笔记Oracle数据库基础 orcale属于关系型数据库,适⽤于各类⼤,中,⼩,微机环境,是⼀种⾼效率、可靠性好的、适应⾼吞吐量的数据库⽅案。
学习,实验完全免费,商⽤需要⽀付相应费⽤。
Oracle 数据库包括数据库实例,和数据库,⼆者脱离谁都没有存在的价值。
实例是⽤来操作数据库的对象,数据库是⽤来存储数据使⽤的。
Oracle主要组件包含实例组件,数据库组件。
SGA(System Global Area)是Oracle Instance的基本组成部分,PGA(Process Global Area)是为每个连接到Oracle database的⽤户进程保留的内存。
每个实例只有⼀个SGA,所有的进程都能访SGA。
PGA是程序全局区,每个⼀个进程都⼀个PGA,PGA是私有的,只有对应进程才能访问对应的PGA。
数据库中包含:参数⽂件,⼝令⽂件,数据库⽂件,控制⽂件,⽇志⽂件以及归档⽇志⽂件。
Oracle实例进场包含⽤户进程,服务器进程和后台进程。
SGA:系统全局区 系统全局区包含共享池,数据缓冲区,⽇志缓冲区。
“共享池”:是对SQL,PL/SQL程序进⾏语法分析,编译,执⾏的内存区;由库缓存和数据字典缓存组成;其⼤⼩直接影响数据库性能。
“数据缓冲区”:临时存储从数据库读⼊的数据,所有⽤户共享,数据缓存区的⽬的是加快数据读写。
“⽇志缓冲区”:⽇志记录数据库所有修改信息,其先产⽣于⽇志缓冲区,当达到⼀定数量时,由后台进程将⽇志数据写到⽇志⽂件中。
PGA:程序全局区 PGA包含单个服务器进程所需要的数据和控制信息,在⽤户进程连接到数据库并创建⼀个会话时⾃动分配的,保存每个与数据库连接的⽤户进程所需要的信息。
PGA为⾮共享区,只能单个进程使⽤,当⼀个⽤户会话结束,PGA释放。
后台进程 后台进程中包含PMON(进程监视器(Process Monitor)),SMON(系统监视器(System Monitor)),DBWR(数据库书写器(Database Write)),LGWR(⽇志书写器(Log Write)),CKPT(检查点(Checkpoint)),以及其他。
oracle的知识点总结
oracle的知识点总结Oracle是一种关系型数据库管理系统,它提供了一套完整的数据库管理和开发工具。
本文将总结一些Oracle的知识点,希望能够帮助读者更好地理解和应用Oracle。
1. 数据库基础知识在Oracle中,数据库是由表组成的,每个表由多个列组成。
表中的数据以行的形式存储。
在创建表时,需要指定列的名称和数据类型。
常见的数据类型包括整数、字符、日期等。
此外,还可以创建索引来加速数据检索。
2. SQL语言SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。
Oracle支持标准的SQL语法,并提供了一些扩展功能。
通过SQL语句,可以实现数据的查询、插入、更新和删除等操作。
常见的SQL语句包括SELECT、INSERT、UPDATE和DELETE。
3. 数据库事务事务是一组数据库操作的逻辑单位,要么全部执行成功,要么全部回滚。
Oracle使用ACID(原子性、一致性、隔离性和持久性)特性来确保事务的正确执行。
可以使用BEGIN、COMMIT和ROLLBACK语句来管理事务。
4. 数据库连接与用户管理在Oracle中,可以通过用户名和密码来连接数据库。
每个用户都有自己的数据库对象(如表、视图、索引等),并且可以授予不同的权限。
可以使用CREATE USER语句创建用户,并使用GRANT语句授予权限。
5. 视图和存储过程视图是数据库中的虚拟表,可以从一个或多个表中检索数据。
视图可以简化数据的查询,隐藏底层表的细节。
存储过程是一段预先编译的代码,可以在数据库中执行。
存储过程可以接受输入参数,并返回结果。
6. 数据库安全性Oracle提供了多种安全功能,用于保护数据库的机密性和完整性。
可以使用角色和权限来限制对数据库对象的访问。
此外,还可以使用透明数据加密来加密敏感数据。
7. 数据库备份与恢复数据库备份是一种重要的数据保护手段,可以防止数据丢失。
Oracle提供了多种备份和恢复工具,如RMAN(Recovery Manager)和Data Pump。
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课堂笔记
9.数据库的备份和恢复
exp命令可以把数据从远程数据库服务器导出到本地的dmp文件
imp命令可以把dmp文件从本地导入到远处的数据库服务器中
10.表的创建
语法:
create table 表名(列名 数据类型 [default 默认值],列名2 数据类型,...);
修改表结构:
SERIALIZABLE:串行化。不允许任何并发事务问题。最严格的事务隔离性。
Oracle只支持READ COMMITTED和SERIALIZABLE。
默认为READ COMMITTED
设置一个事务的隔离级别
set transaction isolation level serializable
自动隐式提交事务:
执行一个DDL语句、执行一个DCL语句、从SQL*Plus正常退出(exit,quit)
自动隐式回滚事务:
强行退出SQL*Plus、客户端到服务器的连接异常中断MMIT;
回滚事务:ROLLBACK [TO 回滚点];
ALTER TABLE 表名
ADD [CONSTRAINT 约束名] 约束类型(要约束的列名);
ALTER TABLE 表名
ADD [CONSTRAINT 约束名]
FOREIGN KEY (要添加外键的列名)
REFERENCES 主表名(主表的某一列名);
设置事务回滚点:SAVEPOINT 回滚点;
5.事务的隔离级别
SQL标准定义了四种隔离级别:
READ UNCOMMITTED: 读未提交数据。脏读、不可重复读、幻读都可能发生。它的事务隔离性最低。
READ COMMITTED:读已提交数据。不允许脏读。
Oracle数据库学习笔记_oracle之addconstraint方法添加约束
Oracle数据库学习笔记_oracle之addconstraint⽅法添加约束add constraint ⽅法在已经存在的列名添加约束,语法格式如下:alter table 表名 add constraint 约束名称约束类型(列名)具体⽤法如下:1.主键约束:列被约束为(⾮空、不重复)格式:alter table 表格名称 add constraint 约束名称 primary key (列名)例⼦:alter table emp add constraint ppp primary key (id);2.外键约束:列被约束为引⽤其他表的主键格式:alter table 表名 add constraint 约束名称 foreign key (列名) references 被引⽤的表名称(列名)例⼦:alter table emp add constraint jfkdsj foreign key (did) references dept (id);3.unique约束:列被约束为(不重复)格式:alter table 表名 add constraint 约束名称 unique(列名)例⼦:alter table emp add constraint qwe unique(ename);4.默认约束:让此列的数据默认为⼀定的数据格式:alter table 表名称 add constraint 约束名称 default 默认值 for 列名例⼦:alter table emp add constraint jfsd default 10000 for gongzi;5.check约束:列的数据范围被限制格式:alter table 表名称 add constraint 约束名称 check (列名)例⼦:alter table emp add constraint abcd check(age>20); --例如,年龄列的数据都要⼤于20的。
oracle学习笔记之二:数据类型之DATETIME收藏
oracle学习笔记之⼆:数据类型之DATETIME收藏在1z0-007题库中有⼀道关于DATETIME数据类型的题⽬:Which three are DATETIME data types that can be used when specifying column definitions? (Choose three)A. TIMESTAMPB. INTERVAL MONTH TO DAYC. INTERVAL DAY TO SECONDD. INTERVAL YEAR TO MONTHE. TIMESTAMP WITH DATABASE TIMEZONE这道题,因为要选三个答案,因此应该就是A, C, D。
不过在Oracle9i Reference中,好像并没有把INTERVAL归到datetime datatypes ⾥⾯,原⽂是如此描述的:The datetime datatypes are DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE and TIMESTAMP WITH LOCAL TIME ZONE. Values of datetime datatypes are sometimes called "datetimes". The interval datatypes are INTERVAL YEAR TO MONTH and INTERVAL DAY TO SECOND. Values of interval datatypes are sometimes called intervals.因此如果上⾯的题⽬中没有指定选择三个,那很有可能就做错了。
DATE数据类型在⼯作中⽤的最多,⼀般就是包含年⽉⽇时分秒。
不过以前从来没⽤过⽇期常量,格式为DATE'2009-07-28',不能包含时间部分,且必须是'YYYY-MM-DD'格式,如果要包含时间部分,只能⽤to_date来转化了。
Oracle学习笔记:判断表是否存在函数is_table_exists
Oracle学习笔记:判断表是否存在函数is_table_exists在 Oracle 中可以利⽤系统表 user_tables 和 all_talbes 判断表是否存在,但有时在存储过程中确认表是否存在并不⽅便,因此有必要封装⼀个函数,进⾏调⽤。
下⾯是函数的内容:-- 判断表是否存在create or replace function temp_is_table_exists(is_table_name varchar2, is_owner_name varchar2 default null)return boolean isvcproc_name varchar2(100) := 'TEMP_IS_TABLE_EXISTS';vncount number(10);vnerr_code number;vcerr_text varchar2(2000);vcowner_name varchar2(1000);vctable_name varchar2(1000);beginvncount := 0;vcowner_name := is_owner_name;vctable_name := is_table_name;if vcowner_name is null thenselect count(1) into vncountfrom user_tableswhere table_name = upper(vctable_name);elseselect count(1) into vncountfrom all_tableswhere owner = upper(vcowner_name)and table_name = upper(vctable_name);end if;if vncount > 0 thenreturn true;elsereturn false;end if;exceptionwhen others thenvnerr_code := sqlcode;vcerr_text := sqlerrm;-- 记录异常以备查pro_cwh_test(vcproc_name, vctable_name, vnerr_code, vcerr_text);rollback;commit;end temp_is_table_exists;其中,⼊参为:表名 + ⽤户名,⽤户名可缺省。
Oracle数据库学习笔记_常用分区partition操作语句
alter table TB_TABLE modify default attributes tablespace TBS_TABLE_01;
修改该表上某个索引的默认表空间:
alter index ind_table modify default attributes tablespace tbs_table_01;
请求出错错误代码400请尝试刷新页面重试
Oracle数据库学习笔记 _常用分区 partition操作语句 Nhomakorabea添加分区
ALTER TABLE TB_table add PARTITION TB_table_201302 values 或split分区的时候,如果分区表或者分区索引的默认表空间不存在(即使新分区的表空间都指定了),会报错(该表空间不存在); ALTER TABLE TB_table SPLIT PARTITION TB_table_201302 at ('20130201') INTO (PARTITION TB_table_201301 tablespace TBS_table_201301_hist, PARTITION TB_table_201302);
查看该分区表的默认表空间:
select table_name,def_tablespace_name from dba_part_tables where table_name='TB_TABLE';
查看该表上的分区索引的默认表空间:
select index_name,def_tablespace_name from dba_part_indexes where table_name='TB_TABLE'; 或者直接查看该表的详细创建sql: select dbms_metadata.get_ddl('TABLE','TB_TABLE','TABLE_OWNER') from dual;
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数据库⽇期格式转换select sysdate from dual;select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') as mydate from dual;select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as mydate from dual;select to_number(to_char(sysdate,'yyyymmddhh24miss')) as mydate from dual;转换函数与date操作关系最⼤的就是两个转换函数:to_date(),to_char() to_date():作⽤将字符类型按⼀定格式转化为⽇期类型。
具体⽤法:to_date('2004-11-27','yyyy-mm-dd'),前者为字符串,后者为转换⽇期格式。
【注意,前后两者要以⼀对应】如;to_date('2004-11-27 13:34:43', 'yyyy-mm-dd hh24:mi:ss')多种⽇期格式:YYYY:四位表⽰的年份 YYY,YY,Y:年份的最后三位、两位或⼀位,缺省为当前世纪 MM:01~12的⽉份编号 MONTH:九个字符表⽰的⽉份,右边⽤空格填补 MON:三位字符的⽉份缩写 WW:⼀年中的星期 D 的第⼏个⼩时,取值为00~23 MI:⼀⼩时中的分钟 SS:⼀分钟中的秒 SSSS:从午夜开始过去的秒数to_char():将⽇期转按⼀定格式换成字符类型即把当前时间按yyyy-mm-dd hh24:mi:ss格式转换成字符类型在oracle中处理⽇期⼤全 TO_DATE格式 Day:dd number 12dy abbreviated friday spelled out fridayddspth sp 12⼩时格式下时间范围为: 1:00:00 - 12:59:59 ....⽇期和时间函数汇总1.⽇期和字符转换函数⽤法(to_date,to_char)select to_char(to_date(222,'J'),'Jsp') from dual; --Two Hundred Twenty-Two2.求某天是星期⼏select to_char(to_date('2018-01-09','yyyy-mm-dd'),'day') from dual; --星期⼆select to_char(to_date('2018-01-09','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual; --tuesday设置⽇期语⾔ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';也可以这样 TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')3.两⽇期间的天数select floor(sysdate - to_date('19921123','yyyymmdd')) from dual; --91794. 时间为null的⽤法select p.claimno, p.endcasedate from prplclaim pUNIONselect '1', TO_DATE(null) from dual;注意要⽤TO_DATE(null)5.取⽇期范围a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')这样12⽉31号中午12点之后和12⽉1号的12点之前是不包含在这个范围之内的。
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数据库→表空间→用户→表表空间:包含表、视图、索引段:包含数据段、索引段、回退段、临时段数据块:是Oracle中最小的逻辑存储单元创建表空间:create tablespace rootspacedatafile 'rootfile' size 1000mautoextend on创建用户:create user root用户名rootidentified by root 密码rootdefault tablespace rootspace 默认表空间rootspacetemporary tablespace temp 临时表空间tempCREATE USER usernameIDENTIFIED BY password[DEFAULT TABLESPACE tablespace][TEMPORARY TABLESPACE tablespace];授予用户username【用户名】权限:·grant connect to username; CONNECT角色允许用户连接至数据库,并创建数据库对象·grant resource to username; RESOURCE角色允许用户使用数据库中的存储空间·grant create sequence to username; 此系统权限允许用户在当前模式中创建序列,此权限包含在CONNECT角色中·grant select on test to username; 允许用户查询 TEST 表的记录·grant update on test to username; 允许用户更新 TEST 表中的记录·grant all on test to username; 允许用户插入、删除、更新和查询TEST 表中的记录·alter user username identified by newpassword;用于修改用户口令·drop user username cascade; 删除用户撤销用户权限:Revoke connect from username;设置显示行长度:Set linesize 12;伪列rownum:Select rownum,name from table;………………………………>Rownum name1 haha2 xxxx--创建表tb_stucreate table tb_stu(stu_id char(12) primary key,stu_name varchar(50) not null,sex varchar(5),birthday date)--查询表tb_stuselect * from tb_stu;--在表中插入tb_stu记录insert into tb_stu(stu_id,stu_name,sex,birthday) values('123456789012','李四','男',to_date('2009-9-9','yyyy-mm-dd'));--事务提交commit;--事务回滚rollback;--根据stu_name查询所有信息select * from tb_stu where stu_name='田七'--根据stu_id删除一条记录delete from tb_stu where stu_id=123456789015--根据stu_id修改一条记录update tb_stu set sex='女',stu_name='梁朝伟'where stu_id='123456789013';--to_date 修改存入数据库中日期的格式update tb_stu set birthday=to_date('2009-10-5','yyyy-mm-dd') wherestu_id='123456789014'--to_date 查询数据库中日期按指定格式输出select* from tb_stu where birthday between(to_date('2009-10-1','yyyy-mm-dd')) and (to_date('2009-12-1','yyyy-mm-dd'))--虚列 rownum 数据库中实际并不存在对符合条件的查询结果的编号select rownum,stu_id,stu_name,sex,birthday from tb_stu where sex='男';--在查询结果中进行查询select * from (select rownum rn,stu_id,stu_name,sex,birthday from tb_stu where sex='男') where rn<3;--创建表tb_employeecreate table tb_employee(em_id number primary key,em_name varchar(50) not null,sex varchar(2),birthday date,sal number(20,2))--向表tb_employee中插入数据insert into tb_employee values(1,'梁朝伟','男',sysdate,11000000);--按字段升序排列(默认的为升序)select * from tb_employee where sal>200order by sal asc--按字段升序排列select * from tb_employee where sal>200order by sal desc--取别名:将查询的字段按一个特定的字段名输出select em_name,((sal-2000)*0.2) 税收from tb_employee where sal>2000;--联合字段,将查询出的多个字段或者是字符串连接在一起,以一个字段输出,用“||”连接select em_name||'的应该缴税: '||((sal-2000)*0.2) as税收from tb_employee where sal>2000order by税收desc;--将em_name为“梁朝伟”的记录的birthday字段,按指定的日期格式进行修改update tb_employee set birthday=to_date('1969-1-1','yyyy-dd-mm') where em_name='梁朝伟';--查询birthday字段不为当前系统时间并且不为空的值--不等于的三种书写方式(!=,^=,<>)select * from tb_employee whereto_char(birthday,'yyyy')^=to_char(sysdate,'yyyy');-- or 连接的多条件“或”查询select * from tb_employee where birthday is null or em_id=1;--between 3 and 5 查询条件为:大于等于3同时小于等于5select * from tb_employee where em_id not between3and5;--查询条件为:大于其中任意一个(只要大于其中的某一个就为满足条件)select * from tb_employee where em_id > any(1,3,5);--查询条件为:小于其中所有的(只有比括号中所有的数字都小才为满足条件)select * from tb_employee where em_id < all(3,5);--下划线表示任意的以个字符select * from tb_employee where em_name like'周__';-- % 表示任意多个字符select * from tb_employee where birthday like'%';--快速创建和tb_stu相同的表结构的表tb_stu_temp1create table tb_stu_temp1as select * from tb_stu where1=2;--将表tb_stu按条件查询的结果插入表tb_stu_temp1中insert into tb_stu_temp1(select * from tb_stu);--查询所有的表select * from tab ;--根据表名查询表select * from tab where tname='tb_stu';如果2个表达式主键管理的:主表——子表先插入主表的数据,然后子表删除:先删从表数据,然后主表。
Oracle经典自学笔记
一.验证Oracle差不多安装完成了,首先得确认程序里有这些个选项,有四个选项:Oracle Installation Products、集成治理工具、配置和移植工具(治理员用得比较多)、应用程序开发。
Oracle也能够形成一种层次性的链接(Directory Manager),关于我们来讲用得最多是sqlplus,而OLE 是一种面向对象的技术,利用这种技术可开发可重复使用的软件组件(COM),他是微软提出的,在用VB开发时可能要用,关于我们来讲不须管。
当启动sqlplus时会提示输入用户名和口令,所谓的sqlplus 是Oracle的一个客户端。
Oracle大多数命令都用命令来实现,因此比较难使,就如同unix比windows难使。
口令你输入tiger,建议就用它,因为以后去企业里Oracle 9i确实是用的那个口令。
当你看到SQL>命令符时讲明差不多进入到了Oracle的命令行了。
图形版的sqlplus,命令行的sqlplus,还有一个确实是通过网页访问Oracle的服务,启动sqlplus,端口号是5560,URL 是http://127.0.0.1:5560/isqlplus。
isqlplus特不有用,比如讲你的机器上没有装上Oracle,就能够通过键入不人的IP,然后登陆到他的机器上来做实验,因此也能够安装特定的客户端软件实现。
讲实在的Oracle的那个客户端太难看了,同时要记好多好多的命令,因此专门有一类公司专门为Oracle开发客户端。
有一个比较闻名的客户端叫Toad,因此Oracle还有一个客户端PL/SQL Develplor,那个用的也特不多。
数据库治理时常用Toad (英文蛤蟆的意思),假如有声卡的话,你启动一次它就叫一次。
对我们来讲sqlplus足够使了。
以后有机会我使用一下PL/SQL Develplor,只是那个也不行使,因为你同时必须装上Oracle,还不如isqlplus好呢。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle学习笔记Java相关课程系列笔记之二目录一、数据库介绍 (1)1.1表是数据库中存储数据的基本单位 (1)1.2数据库标准语言 (1)1.3数据库(DB) (1)1.4数据库种类 (1)1.5数据库中如何定义表 (1)1.6 create database dbname的含义 (1)1.7安装DBMS (1)1.8宏观上是数据-->database (1)1.9远程登录:telnet IP地址 (1)1.10 TCP/IP通信协议 (2)1.11数据库建连接必须提供以下信息 (2)1.12一台机器可跑几个数据库,主要受内存大小影响 (2)1.13源表和结果集 (2)1.14几个简单命令 (2)1.15 tarena给jsd1304授权 (2)1.16课程中使用的5个表 (3)二、select from语句 (5)2.1 select语句功能 (5)2.2 select语句基本语法 (5)2.3列别名 (5)2.4算术表达式 (5)2.5空值null的处理 (5)2.6 nvl(p1,p2)函数 (5)2.7拼接运算符|| (6)2.8文字字符串 (6)2.9消除重复行 (6)2.10其他注意事项 (6)三、SQL语句的处理过程 (7)3.1 SQL语句处理过程 (7)3.2处理一条select语句 (7)四、where子句 (8)4.1 where子句后面可以跟什么 (8)4.2语法和执行顺序 (8)4.3字符串是大小写敏感的,在比较时严格区分大小写 (8)4.4 where子句后面可以跟多个条件表达式 (8)4.5 between and运算符 (8)4.6 in运算符(多值运算符) (8)4.7 like运算符 (9)4.8 is null运算符 (9)4.9比较和逻辑运算符(单值运算符) (9)4.10多值运算符all、any (9)14.11运算符的否定形式 (9)五、order by子句 (10)5.1语法和执行顺序 (10)5.2升降序 (10)5.3 null值在排序中显示 (10)5.4 order by后面可以跟什么 (10)5.5多列排序 (10)六、单行函数的使用 (11)6.1数值类型 (11)6.2日期类型 (11)6.3字符类型 (13)6.4转换函数 (14)6.5其他注意事项 (14)七、SQL语句中的分支 (15)7.1分支表达式 (15)7.2分支函数 (15)八、组函数 (16)8.1报表统计常用 (16)8.2缺省情况组函数处理什么值 (16)8.3当组函数要处理的所有值都为null时 (16)8.4行级信息和组级信息 (16)九、group by子句 (17)9.1语法和执行顺序 (17)9.2分组过程 (17)9.3常见错误 (17)9.4多列分组 (17)十、having子句 (18)10.1语法和执行顺序 (18)10.2执行过程 (18)10.3 where和having区别 (18)十一、非关联子查询 (19)11.1语法 (19)11.2子查询的执行过程 (19)11.3常见错误 (19)11.4子查询与空值 (19)11.5多列子查询 (20)十二、关联子查询 (21)12.1语法 (21)12.2执行过程 (21)12.3 exists (21)12.4 exists执行过程 (21)12.5 not exists (22)12.6 not exists执行过程 (22)12.7 in和exists比较 (22)2十三、多表查询 (23)13.1按范式要求设计表结构 (23)13.2多表连接的种类 (23)13.3交叉连接 (23)13.4内连接 (23)13.5外连接 (25)13.6非等值连接 (27)13.7表连接总结 (27)十四、集合 (28)14.1表连接主要解决的问题 (28)14.2集合运算 (28)14.3集合运算符 (28)14.4子查询、连接、集合总结 (29)十五、排名分页问题 (30)15.1什么是rownum (30)15.2 where rownum<=5的执行过程 (30)15.3 where rownum=5的执行过程 (30)十六、约束constraint (31)16.1约束的类型 (31)16.2 primary key:主键约束 (31)16.3 not null:非空约束 (31)16.4 unique key:唯一建约束 (31)16.5 references foreign key:外键约束 (32)16.6 check:检查约束 (34)十七、事务 (35)17.1 transaction (35)17.2定义 (35)17.3事务的特性:ACID (35)17.4事务的隔离级别 (35)17.5数据库开发的关键挑战 (35)17.6锁的概念 (36)17.7 Oracle的锁机制 (36)17.8事务不提交的后果 (36)17.9回滚事务rollback (36)17.10保留点savepoint (36)十八、数据库对象:视图view (37)18.1带子查询的create table (37)18.2带子查询的insert (37)18.3定义缺省值:default (37)18.4 视图view (38)18.5视图的应用场景 (38)18.6视图的分类 (39)18.7视图的维护 (39)十九、数据库对象:索引index (41)319.1创建index (41)19.2扫描表的方式 (41)19.3索引的结构 (41)19.4为什么要使用索引 (42)19.5哪些列适合建索引 (42)19.6索引的类型 (42)19.7哪些写法会导致索引用不了 (43)二十、数据库对象:序列号sequence (44)20.1什么是sequence (44)20.2创建sequence (44)20.3缺省是nocycle(不循环) (44)20.4缺省cache 20 (44)二十一、其他注意事项 (46)21.1删除表,删除列,删除列中的值 (46)21.2多对多关系的实现 (46)21.3一对多(两张表) (46)21.4一对一 (46)21.5数据库对象 (46)12.6缺省(默认)总结: (46)4一、数据库介绍1.1表是数据库中存储数据的基本单位1.2数据库标准语言结构化查询语言SQL:Structureed Query Language1)数据定义语言DDL:Data Definition Languagecreate table列表结构、alter table修改列、drop table删除列2)数据操作语言DML:Data Manipulation Languageinsert增加一行,某些列插入值、update修改一行,这一行的某些列、delete删除一行,跟列无关3)事务控制语言TCL:Transaction Conrtol Languagecommit确认,提交(入库)、rollback取消,回滚,撤销4)数据查询语言DQL:Data Query Languageselect语句5)数据控制语言DCL:Data Control Language系统为多用户系统因此有隐私权限问题:grant 授权、revoke回收权限1.3数据库(DB)DA TABASE 关系数据库使用关系或二维表存储信息。
关系型数据库管理系统(EDBMS):Relationship Database Management System是一套软件,用于在数据库中存储数据、维护数据、查询数据等。
1.4数据库种类Oracle 10g(Oracle)、DB2(IBM)、SQL SERVER(MS)1.5数据库中如何定义表先画列即表头(列名,数据类型及长度,约束);数据类型有字符、数值number、日期date。
1.6 create database dbname的含义创建数据库即创建可用空间,创建出一堆数据文件data file1.7安装DBMS职位:DBA 数据库管理员(DataBase Administrator)1.8宏观上是数据-->database开发流程:create tabale DML TCL -> DQL select1.9远程登录:telnet IP地址sql developer在linux系统--->连接--->database在solaris系统11.10 TCP/IP通信协议两台机器上的两个应用程序要通信,必须依赖网络,依赖TCP/IP通信协议。
IP:IP协议包中提供要连接机器的IP地址,用于标识机器。
TCP:TCP协议包中提供与机器上的哪个具体应用程序通信,通过端口号实现,oracle 数据库服务缺省端口为1521,用于标识Oracle此数据库应用。
1.11数据库建连接必须提供以下信息ip地址(确认机器)、port号(确认进程(程序)确认Oracle)SID:一个端口可以为多个oracle数据库提供监听,因此还需要提供具体的数据库名。
(确认数据库里的哪个数据库)username、password:要想访问数据库,必须是该数据库上一个有效的用户。
(确认身份)1.12一台机器可跑几个数据库,主要受内存大小影响1.13源表和结果集源表:被查询的表结果集:select语句的查询结果1.14几个简单命令show user:查看当前用户desc 表名:查看表结构drop table 表名purge;删除表,Oracle中删除表不是真正的删除,而是占空间的移动到别的地方,因为为了不占空间,真正的删除需要用purge。
delete from 表名:删除表中所有值;若加上where 列名=value则删除某列中的值1.15 tarena给jsd1304授权21.16课程中使用的5个表34二、select from语句2.1 select语句功能1)投影操作:结果集是源表中的部分“列”2)选择操作:结果集是源表中的部分“行”3)选择操作+投影操作:结果集是源表中的部分“行”部分“列”4)连接操作join:多表查询,结果集来自多张表,把多张的记录按一定条件组合起来2.2 select语句基本语法1)select colname(列名) from tabname(表名)2)select中指定多个列名,则用“逗号”分隔:select colname1,colname2 from tabname 3)* 号表示所有列:select * from tabname4)select语句:可有多个子句5)select子句:投影操作(列名)、列表达式、函数、from子句等2.3列别名1)给列起一个别名,能够改变一个列、表达式的标识。