Oracle基本操作总结

合集下载

oracle基础知识总结

oracle基础知识总结

oracle基础知识总结Oracle是一种关系型数据库管理系统(RDBMS),常用于企业级应用程序的开发和部署。

它具有强大的数据存储和管理能力,以及高度可靠和安全的特性。

以下是对Oracle基础知识的总结。

1. Oracle架构:Oracle数据库由多个组件构成,包括实例、进程、内存结构和物理存储结构。

实例是数据库运行的一个副本,它由后台进程和共享内存所组成。

进程是用来执行具体任务的实例的子进程。

内存结构包括SGA(System Global Area)和PGA(Process Global Area),用于存储数据和共享信息。

物理存储结构包括数据文件、控制文件和重做日志文件。

2. 数据库对象:数据库对象是存储在数据库中的数据或程序的结构。

常见的数据库对象包括表、视图、索引、序列和存储过程。

表是存储数据的基本单位,由列和行组成。

视图是基于一个或多个表的查询结果的虚拟表。

索引是提高查询性能的数据结构,基于某一列或多列的值创建。

序列是用于产生唯一序号的对象。

存储过程是存储在数据库中的一组SQL语句。

3. SQL语言:SQL(Structured Query Language)是用于操作数据库的标准语言。

它包括数据定义语言(DDL)、数据操作语言(DML)和数据控制语言(DCL)。

DDL用于创建、修改和删除数据库对象,如CREATE TABLE、ALTERTABLE和DROP TABLE。

DML用于查询和操作数据,如SELECT、INSERT、UPDATE和DELETE。

DCL用于控制数据库访问权限,如GRANT和REVOKE。

4. 数据类型:Oracle支持多种数据类型,包括字符型、数值型、日期型、布尔型和大型对象型。

常见的字符型数据类型包括CHAR和VARCHAR2,用于存储字符数据。

数值型数据类型包括NUMBER、INTEGER和FLOAT,用于存储数值数据。

日期型数据类型包括DATE和TIMESTAMP,用于存储日期和时间数据。

超详细oracle教程菜鸟入门手册

超详细oracle教程菜鸟入门手册

超详细oracle教程菜鸟入门手册1. 什么是Oracle数据库Oracle数据库是全球领先的关系型数据库管理系统之一,被广泛应用于数据存储、数据处理和数据分析领域。

Oracle数据库可以在多种操作系统上运行,包括Windows、Linux、UNIX等。

Oracle数据库提供了丰富的功能和工具,支持高并发、高可用、高安全的数据存储和处理。

2. Oracle数据库的安装## 2.1 下载Oracle数据库安装包在Oracle官网下载对应版本的Oracle数据库安装包,根据操作系统选择对应的版本。

## 2.2 安装Oracle数据库双击安装包,按照提示进行安装。

需要注意的是,在安装过程中需要设置管理员账号和密码,以及数据库实例名称等信息。

## 2.3 配置Oracle数据库安装完成后,需要进行一些配置工作,包括设置环境变量、创建监听器等。

具体步骤可以参考Oracle官方文档。

3. Oracle数据库的基本操作## 3.1 登录Oracle数据库使用SQL*Plus或其他数据库管理工具登录Oracle数据库,输入管理员账号和密码即可。

## 3.2 创建表使用CREATE TABLE语句创建表,指定表名、字段名、数据类型等信息。

## 3.3 插入数据使用INSERT INTO语句插入数据,指定表名和插入的数据内容。

## 3.4 查询数据使用SELECT语句查询数据,可以指定查询条件、排序方式等。

## 3.5 更新数据使用UPDATE语句更新数据,可以指定更新条件和更新的数据内容。

## 3.6 删除数据使用DELETE语句删除数据,可以指定删除条件。

4. Oracle数据库的高级功能## 4.1 数据库备份和恢复Oracle数据库支持多种备份和恢复方式,包括数据文件备份、在线备份、冷备份等。

在数据库出现故障或数据丢失的情况下,可以通过备份文件进行恢复。

## 4.2 数据库性能优化Oracle数据库提供了多种性能优化工具,包括AWR报告、SQL调优等。

oracle数据库菜鸟教程

oracle数据库菜鸟教程

oracle数据库菜鸟教程Oracle数据库是一种关系型数据库管理系统,被广泛应用于企业级数据管理和处理领域。

对于初学者而言,了解Oracle数据库以及如何使用它可能会感到有些困惑。

因此,本文将为初学者提供一个简明扼要的Oracle数据库菜鸟教程,旨在帮助他们快速入门。

第一部分:Oracle数据库概述首先,让我们来了解一下Oracle数据库的基本概念。

Oracle数据库是一种关系数据库管理系统(RDBMS),它基于集中式数据模型,其中数据存储在多个表中,并通过关系连接进行检索和操作。

Oracle数据库具有高度的可扩展性、可靠性和安全性,并可适用于各种规模的应用程序。

Oracle数据库使用结构化查询语言(SQL)作为其主要查询和操纵语言。

SQL是一种标准化的语言,用于在关系数据库中完成各种操作,包括数据检索、插入、更新和删除。

Oracle数据库还提供了一个图形用户界面(GUI)工具,称为Oracle SQL开发人员。

该工具可用于编写、执行SQL语句以及管理数据库对象,如表、视图、索引等。

第二部分:Oracle数据库安装和配置在使用Oracle数据库之前,首先需要安装和配置它。

下面是一些简单的步骤,可以帮助您完成这个过程:1. 下载Oracle数据库软件:您可以从Oracle官方网站上下载适合您操作系统的Oracle数据库软件。

2. 安装Oracle数据库软件:打开下载的软件包,并按照向导中的说明进行安装。

在安装过程中,您需要选择一些配置选项,如数据库实例名称、监听器端口等。

3. 创建Oracle数据库实例:在安装完成后,您需要创建一个数据库实例来存储和管理您的数据。

通过运行配置助手或使用命令行实用程序可以进行此操作。

4. 配置网络连接:如果您希望从远程计算机连接到Oracle数据库,需要配置网络连接设置。

这包括设置监听器以侦听来自客户端的连接请求。

5. 测试连接:最后,您可以使用Oracle SQL开发人员或其他SQL客户端工具来测试您的数据库连接是否正常工作。

Oracle基本操作《DOC命令》

Oracle基本操作《DOC命令》

系统权限在doc命令中启动Oracle(注意下文中<>为不存在只是为了标识)其中的一些权限为系统权限(都是用超级管理员授予的)1:启动SQL*PLUS:在相应盘符下输入:sqlplus / as sysdba;<默认的用户是SYS>2:启动监听器在相应盘符下输入:lsnrctl start(我的电脑默认在D盘下)3:启动实例在相应盘符下输入:oradim -starup -sid sjbitdb(我的电脑默认在D盘下)4:展示当前用户名在SQL语句中输入:show user;5:创建用户在SQL语句中输入:create user <用户名> identified by <用户密码> ;6:为用户创建会话权限在SQL语句中输入:grant create session to <用户名>;7:使用用户登录在相应盘符下语句中输入:sqlplus <用户名>/<密码> 注意后面没有分号。

8:为用户创建表权限在SQL语句中输入:grant create table to <用户名>;9:为用户创建表空间权限在SQL语句中输入:grant unlimited tablespace to <用户名>;(unlimited是没有任何限制的意思)10:创建表在SQL语句中输入:create table <表名称> (<列名> <数据类型>);(举例)11:向表中插入数据在SQL语句中输入:insert into <表名称> values(<值>);(举例)12:查询表中的数据在SQL语句中输入:select * form <表名称>;13:删除表在SQL语句中输入:drop table <表名称>;14:撤销用户的会话权限在SQL语句中输入:revoke create session fr om <用户名>;15:撤销用户的创建表权限在SQL语句中输入:revoke create table from <用户名>;16:撤销用户的创建表空间权限在SQL语句中输入:revoke unlimited tablespace from <用户名>;17:查询当前用户拥有哪些系统权限在SQL语句中输入:select * from user_sys_privs;(实际上展示的是一个视图) 18:删除用户:在SQL语句中输入:drop user <用户名>;19:把某个系统权限权限授权给所有用户:在SQL语句中输入:grant (create session<会话权限也就是允许某管理员登录的权限>) 、(create table<创建表权限>)、(unlimited tablespace<创建表空间权限>) 、(create any table<创建任意表权限>) to public;对象权限简单来说超级管理员拥有的权限叫做系统权限,普通用户拥有的权限叫做对象权限。

OracleDDL语句及基本操作

OracleDDL语句及基本操作

OracleDDL语句及基本操作DDL语句create、alter、drop、truncate数据定义 (DDL) 部分⼀、create语句基本语法:CREATE (创建表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)常⽤的字段类型有CHAR 固定长度的字符串VARCHAR2 可变长度的字符串NUMBER (M,N) 数字型M是位数总长度, N是⼩数的长度DATE ⽇期类型INT 整数型创建表时要把较⼩的不为空的字段放在前⾯, 可能为空的字段放在后⾯,创建表时可以⽤中⽂的字段名, 但最好还是⽤英⽂的字段名,创建表时可以给字段加上默认值, 例如 DEFAULT SYSDATE这样每次插⼊和修改时, 不⽤程序操作这个字段都能得到动作的时间创建表时可以给字段加上约束条件例如:不允许重复 UNIQUE , 主键 PRIMARY KEY ,外键Foreign key⼆、alter语句语法 ALTER (改变表, 索引, 视图等)1.改变表名ALTER TABLE 表名1 TO 表名2;2.增加字段ALTER TABLE表名 ADD 字段名(列)字段名描述;增加⼀列ALTER TABLE table_name ADD column_1 DATE NOT NULL;ALTER TABLE table_name ADD column_2 VARCHAR2(44) DEFAULT '';ALTER TABLE table_name ADD column_3 number(28,10);增加多列ALTER TABLE table_nameADD (column_1 type constraint,--列名类型约束column_2 type constraint,...);3.删除字段删除⼀列ALTER TABLE table_name DROP COLUMN column_name;删除多列ALTER TABLE table_name DROP (column_1,column_2,...);4.修改表⾥字段的定义描述ALTER TABLE表名 MODIFY 字段名字段名描述;5.给表⾥的字段加上约束条件ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY (字段名);ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (字段名);5.把表放在或取出数据库的内存区ALTER TABLE 表名 CACHE;ALTER TABLE 表名 NOCACHE;三、drop语句基本语法:DROP (删除表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)删除表和它所有的约束条件DROP TABLE 表名 CASCADE CONSTRAINTS四、 TRUNCATE (清空表⾥的所有记录, 保留表的结构)TRUNCATE 表名;。

(完整版)OracleERP系统_操作及开发总结—FA测试,推荐文档

(完整版)OracleERP系统_操作及开发总结—FA测试,推荐文档

固定资产模块客户化开发总结一、基本数据库结构和基本功能操作2、最常用的表及表之间的关系:(1)FA_ADDITIONS_B:主键: ASSET_ID, ASSET_NUMBER, TAG_NUMBER;通常都是使用ASSET_ID与其他表进行关联的;主要信息: 资产编号(ASSET_NUMBER)、类别(ASSET_CATEGORY_ID)、Asset(2)FA_BOOKS:主键: TRANSACTION_HEADER_ID_IN;一个帐簿BOOK_TYPE_CODE下的一个资产ASSET_ID可能对应多条记录,但是只有一条是有效的(DATE_EFFECTIVE和DATE_INEFFECTIVE,注意:不同有效期的帐簿信息在有效期首尾时间点是重合的,此处有点迷惑不知道系统为什么这么做,在程序中取数时要考虑清楚);一般业务一个资产只在一个帐簿下;主要信息: 所属帐簿(BOOK_TYPE_CODE)、原始成本(ORIGINAL_COST)、现值(COST)、残值(SALVAGE_VALUE)、启用时间(DATE_PLACED_IN_SERVICE)和按比例分摊日期(3)FA_DISTRIBUTION_HISTORY:主键: DISTRIBUTION_ID;一个帐簿BOOK_TYPE_CODE下的一个资产ASSET_ID可能对应多条分配行;当一条资产不能分配给两个以上的分配行时:只有一条分配行信息是有效的(DATE_EFFECTIVE和DATE_INEFFECTIVE,注意:不同有效期的分配行信息在有效期首尾时间点是重合的,此处存在同上一样的迷惑);当一条资产可以分配给两个以上的分配行时:一个帐簿下的一个资产可能同时有两个有效的分配行,在取数时将会变得复杂,尤其是按照分配行信息来统计数据时,目前还没有深入了解;主要信息: 数量(UNITS_ASSIGNED)、科目(CODE_COMBINATION_ID)、地点(4)FA_TRANSACTION_HEADERS:主键: TRANSACTION_HEADER_ID;一个帐簿BOOK_TYPE_CODE下的一个资产ASSET_ID会有多条事务处理信息;当一个资产发生转移、报废、调整或者新增资产时,都会产生一笔或多笔事务处理;事务处理的发生时间是DATE_EFFECTIVE;根据发生时间所在的该帐簿的哪个资产会计期间中来判断是哪个会计期间发生的事务处理;主要信息: 事务处理类型(TRANSACTION_TYPE_CODE)、发生时间(DATE_EFFECTIVE)等;(5)FA_DEPRN_DETAIL:主键: DISTRIBUTION_ID、BOOK_TYPE_CODE、PERIOD_COUNTER;一个帐簿BOOK_TYPE_CODE下的一个资产ASSET_ID在同一个资产会计期间同一个分配行上只有一笔折旧;当资产发生转移时,资产的折旧费用发生的分配行相应的对应到新的分配行上;当资产发生完全报废时,在报废当月依然提折旧,下月开始将不再提折旧;部分报废时只是折旧费用按报废比例减少而已;主要信息: 折旧运行时间(DEPRN_RUN_DATE)、折旧金额(DEPRN_AMOUNT)、年累计(6)FA_RETIREMENTS:主键: RETIREMENT_ID;TRANSACTION_HEADER_ID_IN;一个帐簿BOOK_TYPE_CODE下的一个资产ASSET_ID可能对应于多笔报废,有可能是完全报废或者部分报废;DATE_EFFECTIVE标志了报废的先后顺序,这个和事务处理记录中的DATE_EFFECTIVE是一致的,也可以用来判断所在的分配行是哪个、在哪个会计期间以及对应的是那笔帐簿信息;主要信息: 报废价值(COST_RETIRED)、报废状态(FR.STATUS)、报废类型(73、基本功能操作:(1)新增资产:新增资产有两种方法,一是从应付发票导入,二是手工新增;从应付发票导入:先在应付模块中运行请求生成Mass Additions的数据,然后在FA的Mass Additions菜单中进行资产的增加操作;手工增加资产:可以在资产工作台的查询界面或者查询结果界面点“新增”按钮或者“快速增加”按钮来增加资产;也可以使用SQL*LOADER和接口程序将资产信息导入到表FA_MASS_ADDITIONS中,然后在FA的Mass Additions菜单中类似应付发票导入的操作来新增资产;(2)修改资产基本信息:资产工作台-> 查询-> 打开,如下图界面中的所示,这里就可以修改资产的基本信息了;这里的修改只是更新了表FA_ADDITIONS_B和FA_ADDITIONS_TL的数据;(3)修改资产的帐簿信息:资产工作台-> 查询-> 帐簿-> 选择帐簿,鼠标点到Depreciation中或者Method中,如下页图界面所示,这样就可以修改资产的帐簿信息了;其中包括了对现值的调整、残值的调整、启用日期和按比例分摊方法的更改以及折旧方法等的修改;这里的没一个更改都会产生一笔事务处理,也就是说这里的每一次修改操作,除了在表FA_BOOKS中增加一笔记录以外,还会在表FA_TRANSACTION_HEADERS生成一笔记录;而且FA_BOOKS表中的记录的TRANSACTION_HEADER_ID_IN等于FA_TRANSACTION_HEADERS表中记录的TRANSACTION_HEADER_ID;而修改之前的帐簿信息的记录会被设置DATE_INEFFECTIVE值以使之失效;修改完成后,对应于修改时所选择的那个帐簿,所修改的资产的最新的帐簿信息就是修改后的信息;可以使用FA_BOOKS中的DATE_EFFECTIVE和DATE_INEFFECTIVE字段来区分新旧帐簿信息;(4)修改资产来源行:资产工作台-> 查询-> 来源行,如下图界面所示,这样就可以修改资产的来源行信息了;其中包括了发票编号、描述、供应商、采购订单号等的修改;也可以新增发票行;这里的操作将新增或者修改表FA_ASSET_INVOICES中的记录,该表与表FA_ADDITIONS_B使用ASSET_ID关联(多对一);(5)修改资产的分配行信息:资产工作台-> 查询-> 分配,如下图界面所示,这样就可以修改资产的分配行信息了;其中包括了数量、人员、科目和地点信息,修改时,在已有一个分配行上填写一个负的数量,然后新增一个分配行填写一个正的数量以及要修改的人员,科目和地点信息,然后保存即可;这里的操作将涉及表FA_DISTRIBUTION_HISTORY和表FA_TRANSACTION_HEADERS,两个表都会新增一条记录;表FA_DISTRIBUTION_HISTORY中的TRANSACTION_HEADER_ID_IN等于FA_TRANSACTION_HEADERS表的TRANSACTION_HEADER_ID;除了新增记录外,系统还会去修改原来的分配行信息:如果是数量全部转移,那么将会更新原来的分配行信息的TRANSACTION_HEADER_ID_OUT字段更新为新增记录的TRANSACTION_HEADER_ID_IN的值,并设置DATE_INEFFECTIVE以便标志这个分配行的有效期;如果数量部分转移,会使得同时有两条有效的分配行,此处暂且不考虑;修改完成后,再次进入分配界面时显示的已经时最新的分配行信息了,可以使用DATE_EFFECTIVE和DATE_INEFFECTIVE字段来区分新旧分配行信息以及标志每个分配行信息的有效期;(6)报废资产:资产工作台-> 查询-> 报废,如下页图界面所示,在这里可以进行资产的报废操作;输入帐簿、报废日期以及Comments,然后填写报废的信息,存盘后就完成了一笔报废;其中可以填写的信息有报废数量、报废类型、报废金额、报废方法以及一些卖出信息;如果报废金额等于现值那么是完全报废,否则为部分报废;这个操作牵涉的表有FA_RETIREMENTS和FA_TRANSACTION_HEADERS,当发生一笔报废时,会在表FA_RETIREMENTS中新增一条记录,在FA_TRANSACTION_HEADERS中新增一条或者多条记录(何时产生一条记录何时产产生多条记录还未完全明了,初步确定和该报废是金额减少或者数量减少有关);表FA_RETIREMENTS的TRANSACTION_HEADER_ID_IN和表FA_TRANSACTION_HEADERS的TRANSACTION_HEADER_ID关联;两个表的新增记录的DATE_EFFECTIVE是相同的;另外,该界面可以做报废的取消的操作,通过按钮“恢复”或“取消报废”来实现(关于这个内容不是很确定);注意:当报废了之后马上进行取消操作时(此时按钮叫“取消报废”),那么两个表中都不会产生新记录(之前创建的记录会被删除);如果报废之后有计算损益(菜单Depreciation中Calculate Gains and Losses),再去取消报废(此时按钮叫“恢复”),那么将在表FA_TRANSACTION_HEADERS中再多增加一条取消报废的事务处理,而表FA_RETIREMENTS原来增加的报废记录的报废金额将被更新为0;取消报废时要先把原来的报废记录查询出来才能操作;报废和取消报废的操作都将直接影响资产的折旧的计提以及原值和净值,想查询一条资产的所有报废信息,可以在这个界面用菜单上的查找所有来实现,或者使用F11和Ctrl+F11实现;(7)查询资产的财务信息:查询-> 财务信息,在这里可以查询到一个资产的所有的财务信息包括帐簿信息,分配信息,来源信息,事务处理信息,折旧信息和成本变更信息;此界面只提供查询功能,不能做任何更新、插入和删除操作;(8)历史事务处理查询:查询-> 事务处理历史,在这里可以查询某资产的所有事务处理信息,包括资产的新增、帐簿信息的变更、分配行的变更、报废等;此处可以查看会计科目信息(菜单Tools-> View Accounting);(9)运行折旧:折旧-> 运行折旧,在这里运行当前资产会计期间的某个帐簿的折旧,选择帐簿后,期间自动带出,可以选择是否关闭该帐簿的当前资产会计期间,注:只能运行某个帐簿当前的会计期间的折旧;(10)回滚折旧:折旧-> 回滚折旧,在这里将提交一个请求以回滚某帐簿的折旧,回滚的折旧是该帐簿的当前的期间的;(11)创建日记帐:日记帐-> 标准,在这里将提交一个请求以创建日记帐到总帐,可以选择要创建的帐簿和期间;(12)其他操作还有待实践;4、附件:参考下面的资产的Trace文件:AssetTrance.sql。

orcal 操作命令

orcal  操作命令

oracle 命令操作内容包括三大项:1.oracle基本操作语句2.SQLServer基本操作语句3.各种数据库连接方法**************************************************oracle基本操作语句********************************************************打开服务器net start oracleservicebinbo打开监听器lsnrctl start关闭服务器net stop oracleservicebinbo关闭监听器lsnrctl stop======================================================== =======清屏clear screen****************************************************************数据字典===========desc user_views(关键词)****************************************************************======================================================== =======查看当前用户的角色SQL>select * from user_role_privs;======================================================== =======查看当前用户的系统权限和表级权限SQL>select * from user_sys_privs;SQL>select * from user_tab_privs;======================================================== =======查看当前用户的缺省表空间SQL>select username,default_tablespace from user_users;======================================================== =======换用户conn as sysdbasystsinghuasqlplus "sys/tsinghua as sysdba"conn sys/zl as sysdba======================================================== =======修改表结构alter table test modify(name not null);alter table test add(name varchar2(20));alter table test drop column sex;alter table test set unused column sex;alter table test drop unused columns;======================================================== =======更改用户密码sql>alter user 管理员identified by 密码;======================================================== =======创建表空间的数据文件sql>create tablespace test datafile 'd:oraclebinbo.dbf' size 10m;======================================================== =======创建用户sql>create user 用户名identified by 用户名;======================================================== =======bfile类型实例创建目录create directory tnpdir as 'c:';删除目录drop directory tnpdir授权grant read on directory tn pdir to scott;建表create table bfiletest(id number(3), fname bfile);添加数据insert into bfiletest values(1,bfilename('TMPDIR','tmptest.java'));======================================================== =======查看用户sql>show user======================================================== =======检查语句是否有错show error======================================================== =======锁定用户sql>alter user 用户名account lock======================================================== =======解除用户sql>alter user 用户名account unlock======================================================== =======删除用户sql>drop user zl;======================================================== =======给用户创建表权限sql>grant create table to 用户名;======================================================== =======授管理员权限sql>grant dba to 用户名;======================================================== =======给用户登录权限sql>grant connect to 用户名======================================================== =======给用户无限表空间权限sql>grant unlinmited tablespace to 用户名;======================================================== =======收回权限sql>revoke dba from 用户名;======================================================== =======查看用户下所有的表SQL>select * from user_tables;======================================================== =======查看名称包含log字符的表SQL>select object_name,object_id from user_objectswhere instr(object_name,'LOG')>0;======================================================== =======查看某表的创建时间SQL>select object_name,created from user_objects whereobject_name=upper('&table_name');======================================================== =======查看某表的大小SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segmentswhere segment_name=upper('&table_name');======================================================== =======查看放在ORACLE的内存区里的表SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;======================================================== =======再添加一个表空间的数据文件sql>alter tablespace test add datafile 'd:oracletest1.dbf' size 10m;======================================================== =======建表 SQL>create table studen(stuno int,stuname varchar(8) not null,stubirth date default to_date('1987-5-9','YYYY-MM-DD'));向表结构中加入一列 SQL>alter table studen add(stuphoto varchar(9));从表结构中删除一列 SQL>alter table studen drop column stuphoto;修改表一列的长度 SQL>alter table studen modify(stuno number(4));隐藏将要删除的一列 SQL>alter table studen set unused column stuphoto;删除隐藏的列 SQL>alter table studen drop unused columns;向表中加入约束 SQL>alter table studen add constraint pk primary key(stuno);删除约束 SQL>alter table studen drop constraint pk;======================================================== =======创建表sql>create table 用户名(name varchar2(20),password varchar(20)) tablespace 空间名;======================================================== =======添加字段sql>alter table test add(column_x char(10) not null);======================================================== =======更改字段sql>alter table emp modify(column_x char (20));======================================================== =======删除字段如待删除域属于某个索引,则不允许删除操作,必须将此域先设置为NULL。

Oracle数据库建表及其基本操作

Oracle数据库建表及其基本操作

1.在对oracle数据操作之前,需要了解oracle的类型,oracle的常用类型有:2.登录创建好的用户,然后在表空间中建立表,以userinfo表为例:--创建表create table userinfo(id number(6,0),usernam varchar2(20),userpwd varchar2(20),email varchar2(30),regdate date);表建立成功之后,查看是否建表成功,有很多方法,列举我常用的两个方法:方法一:在控制台输入desc userinfo 回车, 可以成功查询出新建表字段的类型方法二:使用图形化工具直接查询表select * from userinfo;3.添加字段alter table table_nameadd column_name datatype;table_name是表名称, column_name是列名称, datatype是数据类型eg:添加一个字段remark字段,是varchar2类型,长度为100alter table userinfoadd remarks varchar2(100);查看表结构:给字段添加注释comment on column 表.列 is '列注释';eg:comment on column new_uesrinfo.remarks is '注释';在plsql上面的运行结果:4.修改表字段名称和表名--给字段改名alter table table_namerename column column_name To new_column_name; --修改表的名字rename table_name to new_table_name;5.删除字段alter table table_namedrop column column_name;6.更改字段长度,类型eg:修改remarks字段修改字段的长度alter table userinfomodify remarks varchar2(150);eg:修改字段类型a.如果表中没有数据alter table 表名 modify(字段名1 类型,字段名2 类型,字段名3 类型.....)b.如果表中有数据(分为四步)--修改原字段名ALTER TABLE 表名 RENAME COLUMN 字段名A TO 字段名B;--添加一个和原字段同名的字段"字段名A",添加的字段ALTER TABLE 表名 ADD 字段名目标类型;--将"字段名B"的数据更新到新建字段"字段名A"中UPDATE 表名 SET 字段名A = TIRM(字段名B);--更新完成后,删除原备份字段"字段名B"ALTER TABLE 表名 DROP COLUMN 字段名Beg:例如将上表的remarks字段修改为number(32,2)alter table userinfo rename column remarks to remarks_tmp;alter table userinfo add remarks number(32,2);update userinfo set remarks = trim(remarks_tmp);alter table userinfo drop column remarks_tmp;7.删除数据,删除表--删除表数据truncate table table_name;delete from table_name这里truncate和delete的区别是,truncate是截断了表,它的效率比delete要快--删除表的结构drop table table_name;。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一讲:1、使用sqlplus查看系统日志文件v$logfile,对控制文件select * from v$controlfile,数据文件v$datafile还有参数文件。

通过参数文件寻找控制文件。

2、Oracle的内存结构SGA,由数据库高速缓冲区--频繁访问的数据、大的数据共享区、共享池、Redo日志缓冲池、固定的SGA组成。

3、Oracle的逻辑结构,第二讲:1、sqlplus数据库实例的启动和关闭,sqlplus "sys/test1234 as sysdba";startup启动_启动实例,打开控制文件,打开数据文件,archive log list查看是否归档方式。

startup mount不打开数据文件startup nomount连控制文件也不打开。

2、shutdown关闭,很少用。

shutdown immediate ,使每个用户执行完当前sql语句以后关闭。

shutdown abort强制关闭。

3、支持空各行,set sqlbalanklines on;4、用变量查询,where deptno=&tt,tt为变量,每次只能执行一个计划5、list 查看曾经的sql语句。

list 简写L 。

改写错的字母,c/n/m 把n改成m。

删除del 行号。

在缓冲区命令后面连接a from dept。

保存到文件中save 路径。

@路径表示执行。

读取文件内容get 路径。

6、对列操作,col 。

如重命名,col deptno heaiding “编号”,格式化format 999,999,999的形式输出。

7、Ttitle标题和Btitle尾页。

8、很重要的报表制作工具:break,comp;重复的就显示一条,break on pub,在pub中的重复的就显示一条。

统计命令comp count lable“报表”of 字段名9、保存查询出来的结果集:spool语句。

spool 文件路径,然后执行查询,然后spool off。

第三讲:1、sql语言的分类:数据定义DDL有creaet alter drop 数据控制DCL有grant revoke 数据操纵DML有select insert delete update;2、create 讲解:3、授权:grant,grant select on dept to tt,4、收回权限:revoke select on from tt。

5、数据操纵语言:update abc set b = “ttt”6、Oracle中的系统函数的应用,length 查询字符长度,lengthB 查询字节长度。

Ltrim 去掉左边的空格。

Rtrim右边。

trim去掉两边的。

7、可变长度和定长度的区别,定长的要用空格来补充。

8、取子串,substr(字符串,从哪个位置,取几个位);Oracle没有提供左取串,右取串。

9、对日期的操作:select next_day(sysdate,"星期三") from dual。

显示下一个星期三是几号。

10、字符转换:select to_char(sysdate,"yyyy-mm-dd hh:mi:ss");11、字符转换:select to_char(sysdate,"yyyy-mm-dd hh24:mi:ss");24小时制12、字符转换:select to_date('',"yyyy-mm-dd hh:mi:ss");13、字符转换:select to_number('2222');14、聚集函数:sum、avg、max、min、count;聚集函数不能和where结合使用。

15、user,decode,nvl,select user from dual。

select sum(decode(sex,'男',1,0)) 男人数,sum(decode(sex,'女',1,0)) 女人数from e;Boolean型的判断函数decode,是男就加一,是女人就加一。

单独统计男人数和女人数。

16、对空值进行处理nvl,select a1,nvl(a2,"未输入") from e,对a2值为空的就显示未输入。

17、空值的判断未a1 is null 或者a1 is not null。

18、在单独显示一行的数据的时候,里面有重复的数据的话就用distinct,那么重复的就显示一条。

第四讲:1、分组语句,group by。

select id name from emp group by id,name。

select 后面的字段必须在group by 后面出现,group by 后面的字段可以不在select里面显示。

select name from emp group by id,name。

2、聚合语句不能作为where 条件判断。

where sum(price)>30是错的。

这个时候要用到having 语句了,而且having语句必须在group by 的前面。

3、模糊查询like,select * from aa where a1 like 'a_';显示以a为开头的两个位数的字段。

4、模糊查询like,select * from aa where a1 like 'a%';显示以a为开头的任意位数的字段。

5、模糊查询like,select * from aa where a1 like '_a';显示以a为结束的两个位数的字段。

6、模糊查询like,select * from aa where a1 like '%a';显示以a为结束的任意位数的字段。

7、模糊查询like,select * from aa where a1 like '%a%';显示包含a的任意位数的字段。

8、表的连接:有内连接和外连接。

内连接表示将两个表中的匹配的数据都显示出来,其他多出来的没有对应值的将都不显示。

标准写法是from a表join b表on 判断条件是和(from a,b where a.id = b.id)是一样的效果。

9、外连接:有左外连接和右外连接。

左外连接无条件的将左边表中的数据全部显示出来,一般在条件右面加(+)。

右外连接无条件的将右边表中的数据全部显示出来,一般在条件左面加(+)。

10、子查询:无关子查询,相关子查询;无关子查询表示子查询于外部的查询没有必然的联系,select * from emp where id IN (select id from dept);相关子查询表示子查询于外部的查询有必然的联系,select * from emp where id IN或(not in) (select id from dept where id=emp.id and id="3");在子查询中不能出现select * ;11、子查询中是否存在select * from e where exist(select id from d);是否存在,不存在的话一个都不显示。

select * from e where exist或NOT exist(select id from d where id=e.id),在这里,子查询中可以使用select * .12、表连接的查询操作比子查询的查询操作效率高。

13、把两个表的行相结合的显示,select eid,ename from e union select id,dept from d;合并行数据。

14、运算符Intersect 显示两个sql语句中都出现的行。

是Oracle独具的一个运算符其他数据库不见得会兼容。

就是显示两个select 中都存在的。

相当于内连接查询。

15、批量的插入信息,如insert into e(eid,ename) select id,name from d;类型要兼容,Union 是表面的,但这个是物理的。

16、依据已经存在的表格创建一个新的表,create table ttt as (select * from d);创建一个ttt并且把数据拷贝过去。

也是Oracle独具的功能。

第五讲:1、PL/sql的讲解,就可以和前端和后台相结合调用的功能。

结构化查询设计语言。

Oracle的块结构有如下:PL/sql块结构,1 声明declare ... 变量有标准的变量和复合变量又称记录。

必须以字符开头,长度一般不超过30个字符,不区分大小写。

不可以是保留字。

2 开始begin ...3 异常exception ...4 结束end ...2、第一个PL/sql块DECLAREx varchar2(10); 定义变量x varchar2(10):='ABDCS'; 定义变量并赋值BEGINx:= 'this is ..' 给变量赋值DBMS_OUTPUT.PUT_LINE('X的值为:' || x); 打印变量的值,拼接字符串要用||操作符。

Oracle提供了很多和外界交互的包,DBMS_OUTPUT就是其中的一个。

end; 结束/ 执行set serveroutput on size 10000,打开显示的开关。

DBMS_OUTPUT.PUT_LINE('X的值为:' || x);行注释--块注释/* */3、分支语句if 和case(9i之后开始支持的)if ...then ...end if;if 实例:declarea number;b varchar2(10);begina:= 2;if a=1 thenb:='A';elsif a=2 thenb:='B';elseb:='C';end if;DBMS_OUTPUT.PUT_LINE('B的值是:' || b);end/Case 实例:declarea number;b varchar2(10);begina:= 2;casewhen a=1 then b:='A';when a=2 then b:='B';when a=3 then b:='C';elseb:='others'end case;DBMS_OUTPUT.PUT_LINE('B的值是:' || b);end/第六讲:1、循环基本循环Loop while 循环、for 循环。

相关文档
最新文档