`

Oracle数据库相关操作

阅读更多
因为关于数据库的操作少用,所以很容易忘记一下命令。在这里记下来方便以后查找:
查询当前数据名:select name from v$database;
在Oracle中:
双引号的作用是:假如建立对象的时候,对象名、字段名加双引号,则示意 Oracle将严格区分大小写,否则Oracl都默认大写。
单引号则示意:这个加了单引号的字段是一个字类似字符串,并不区分大小写。
如果在导入sql脚本@oracle.sql的时候出现“无效的月份”的错误提示,可以通过以下两行命令中的一个搞定(我的英文系统执行的是第一个):
执行“alter session set nls_language=american”。
执行“alter session set nls_date_format='DD-MON-YY'”,也可以自定义格式。
使用子查询更新数据:
让scott的岗位,工资,补助和smith员工一致:
update emp set (job,sal,comm) = (select job,sal,comm from emp where ename = 'SMITH') where ename = 'scott';
创建一个用户: create user july identified by snaillocke;
以dba身份授权给新建用户july:
conn sys/snaillocke as sysdba;
grant connect to july;
如果对表空间 'USERS' 无权限:grant resource to july;
Oracle约束:
创建表:
create table goods(
goodsId char(8) primary key,
goodsName varchar2(30),--30代表最大字符数为30,一个中文两个字符
unitprice number(10,2) check (unitprice >0),--单价大于0
category varchar2(8),
provider varchar2(20));

create table customer(customerId char(8) primary key,
name varchar2(50) not null,
address varchar2(50),
email varchar2(50) unique,
sex char(2) default '男' check(sex in ('男','女')),--男或女,默认为男
charId char(18) );

create table purchase (
customerId char(8) references customer(customerId),
goodId char(8) references goods(goodsId),
nums number(5) check (nums between 1 and 30));--数量在1到30之间
创建表从另一个表中取数据过来:create table emp2 as select * from emp;
维护表:
如果在建表的时候忘记了对表建立约束,可以使用alter table命令为表增加约束,需注意:增加not null约束时,需要使用modify选项,而增加其他四种约束使用add:
alter table goods modify goodsName not null;
alter table customer add constraint card_unique unique(charId);
alter table customer add constraint address_check check (address in( 'guangzhou','beijing','shanghai'));
增加一个字段:alter table test add name varchar2(320);
增加主键约束:alter table test add primary key(id);
删除约束:
alter table 表名 drop constraint 约束名称;
在删除主键约束时,如果在两张表上存在主从关系,那么在删除主表的主键约束时,必须带上cascade选项,如:
alter table 表名 drop primary key cascade;
查看约束信息:
通过数据字典视图user_constraints可以显示当前用户所有的约束的信息:
select constraint_name,constraint_type,status,validated from user_constraints where table_name ='表名';
通过查询数据字典视图user_cons_columns,可以显示约束所对应的表列信息:
select column_name ,position from user_cons_columns where constraint_name='约束名';
表级定义和列级定义:
在定义外间的时候,列级定义不用加上foreign key,但是在表级定义中要加上foreign key。(不确定)
索引:
目的:加快检索速度;
create index 索引名称 on 表名(列名1,列名2);列名是有顺序的。
建立索引的原则:
  在大表上建立索引才有意义;
  在where子句或者连接条件上经常引用的列上建立做引
  索引的层次不应该超过4层;
建立索引的代价:
1,建立索引,系统要占用大约为表的1.2倍的硬盘和内存空间来保存索引;
2,更新数据的时候,系统必须有额外的时间来同事对索引进行更新,以维持数据和索引的一致性。
一下情况不应该建立索引:
1,很少或者从不使用的字段;
2,逻辑型的字段,如男或女(是或否)等。
索引的管理:
显示表的所有的索引:
select  index_name,index_type from user_indexes where table_name = '表名';
显示索引列:
select table_name,column_name from user_ind_columns where index_name = 'IND_ENAME';
权限和角色
分为两种:系统权限和对象权限。
系统权限:
系统权限是指执行特定类型sql命令的权利,它用户控制用户可移植性的一个或是一组数据库操作。显示左右的系统权限:select * from system_privilege_map;
授权:
grant create session,create table to july with admin option;with admin option代表授予的用户可以将这些权限往下继续分发。
回收权限:
revoke create session from july;july不可以登录,但是被july分发的权限的用户仍然可以登录。
对象权限:
对象权限指访问其他方案对象的权利,用户可以直接访问自己方案的对象,但是如果要访问别的方案的对象,则必须具有对象的权限。比如smith用户要访问scott.emp表(scott:方案,emp:表),则必须在scott.emp表上具有对象的权限。
授权:
从oracle9i以后,dba用户和对象的所有者均可以授权给其他用户。
grant select on emp(可选字段,...) to july with grant option;授权给july查询emp表的权利。with grant option代表可以下授。
回收权限:
对象的权限回收会级联回收(和系统权限不一样)
查看用户或角色所拥有的角色:
select * from dba_role_privs;
select * from user_role_privs;
scott用户默认拥有的角色有:connect和resource

角色:
角色是相关权限的命令集合,使用角色的主要目的就是为了简化权限的管理。
常用的预定义角色:
1,connect角色:
  一般开发人员的大部分权限。
2,resource角色:
  具有应用开发人员所需要的其它权限,比如存储过程,触发器等。
3,dba角色:
  具有所有的系统权限。不具备sysdab和sysoper的特权(启动和关闭数据库)。
自定义权限(需要有create role的系统权限):
建立角色:
  create role myrole not identified;
  grant 权限名 to 角色名 with admin option
    如:grant select on emp to myrole;
        grant update on emp to myrole;
   drop role myrole;
如果角色被删除,那么被授予该角色的用户所具有的权限消失。
查看系统默认的角色:select * from dba_roles;
显示角色所具有的系统权限:
select privilege,admin_option from role_sys_privs where role = '角色名';
显示角色具有的对象权限:
通过查询数据字典视图dba_tab_privs可以查看角色具有的对象权限或是列的权限;
显示用户具有的角色以及默认角色:
select granted_role,default_role from dba_role_privs where grantee='用户名';
数据库的导入与导出:
导入表:
exp userid=username/password@orcl tables=([username.]tablename1,[username.]tablename2...) file=d:\x\y\z.dmp;
如果只是导出表结构,而不要数据,则在导入表命令后面加上rows=n或者direct=y即可。
导出整个数据库(足够的权限):
exp userid=username/password@orcl full=y inctype=complete file=d:\x\y\z.dmp.
导入表:
imp userid=username/password@orcl tables=(tablename1,tablename2) file d:/x/y/z.dmp.
导入表结构只要在导入表命令后面加上rows=n即可。
导入整个数据库:imp userid=username/password@orcl full=y   file=d:\x\y\z.dmp.
在导入的时候,只有在被导入表空间里不缺少约束时候才能导入。如:从A用户导入一个受到A用户另一张表约束的表a.dmp,在导入到B用户的时候,必须在B用户表里存在受到约束的表,否则导入失败。
数据字典:
数据字典记录了数据库的系统信息,它是只读表和试图的集合,数据字典的所有者为sys用户。用户只能在数据字典上执行查询操作(select语句),而其维护和修改由系统自动完成。
数据字典的组成:
包括字典基表和数据字典视图,其中基表存储数据库的基本信息,普通用户不能直接访问数据字典的基表,数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字典视图取得系统信息,数据字典视图主要包括user_xxx,all_xxx,dba_xxx三种类型。
user_xxx:如user_tables,当前用户拥有的表。
all_xxx:如all_tables,当前用户可以访问到的所有表
dba_xxx:如dba_tables,当前数据库所有的表。查询这种数据字典,要求用户必须拥有dba角色,或者拥有select any table系统权限。
表空间:
用户必须拥有create tablespace的系统权限才能建立表空间。
在建立数据库之后,为了便于管理表,最好建立自己的表空间:
create tablespace myspace datafile 'd:/myspace.dbf' size 10m uniform size 128k;创建一个叫myspace的表空间,该表空间的数据放在'd:/x/y/zz.bdf'里,128k代表区的大小。
创建表的时候指定表空间:
create table testspace(id number,name varchar2(20)) tablespace myspace;
改变表空间状态(一般在进行系统维护和数据维护时):
a,使表空间脱机/联机:
alter tablespace myspace offline/online;
b,只读/可写表空间:
alter tablespace myspace read only/write;
查询已知表所在的表空间:
select tablespace_name,table_name from user_tables where table_name ='TESTSPACE';注意名字要大写,否则查不到。
删除表空间:
drop tablespace myspace including contents and datafiles;
扩展表空间,为表空间增加更多的存储空间:
alter tablespace myspace add datafile 'd:/x/y/zz.dbf' size 10m;
移动数据文件:
1,首先确定数据文件所在的表空间:
select tablespace_name from dba_datafiles where file_name ='d:/x/y/zz.dbf';
2,使表空间脱机:
alter tablespace myspace offline;
3,使用命令移动数据文件到指定的目标位置:
host move d:/x/y/zz.dbf e:/y/z/zz.dbf;
4,执行alter tablespace 命令:
在屋里上移动了数据后,还必须执行alter tablespace命令对数据文件进行逻辑修改。
alter tablespace myspace rename datafile 'd:/x/y/zz.dbf' to 'c:/y/x/zz.dbf';
5,使表空间联机:
altertablespace myspace online;
1
0
分享到:
评论

相关推荐

    C#版Oracle数据库通用操作类

    在现代软件开发中,数据库操作是必不可少的一部分,而 C# 结合 Oracle 数据库的应用尤为广泛。本文将深入探讨一个用于简化 Oracle 数据库操作的 C# 类——`ConnForOracle`。该类提供了一系列方法,包括基础连接、...

    oracle数据库操作手册

    Oracle数据库是全球广泛使用的大型关系型数据库管理...通过深入学习和实践这本《Oracle数据库操作手册》,无论是初级DBA还是经验丰富的开发者,都能提升对Oracle数据库的理解和运用能力,有效应对各种数据库管理挑战。

    oracle数据库日志查看方法

    本文将详细介绍如何查看Oracle数据库中的各种日志文件,并提供具体的步骤和示例,帮助读者更好地理解和操作。 #### 二、Oracle数据库日志类型 Oracle数据库中有多种类型的日志文件,包括但不限于: 1. **后台进程...

    易语言连接Oracle数据库

    本文将详细介绍如何使用易语言连接Oracle数据库,并探讨相关组件的使用。 首先,连接Oracle数据库的基础是确保本机已经安装了Oracle客户端。Oracle客户端包含了连接Oracle服务器所需的所有组件,包括网络配置、...

    Oracle数据库工具安装包(免安装)

    本文将详述“Oracle数据库工具安装包(免安装)”的相关知识点,包括Oracle Client 11.2版本以及32位系统兼容性,以及如何使用压缩包中的“instantclient_11_2”。 首先,Oracle Client 11.2是Oracle Database 11g ...

    Oracle数据库大作业

    【Oracle数据库大作业】是一个关于Oracle数据库在教务管理系统中的应用项目,可能涵盖了数据库设计、实施、优化等多个方面的内容。这个大作业包含了PPT演示文稿、Word文档以及可能的源代码,为学习者提供了全面了解...

    access数据库MDB数据文件导入oracle数据库操作步骤.pdf

    Access 数据库 MDB 数据文件导入 Oracle 数据库操作步骤 Access 数据库 MDB 文件是 Microsoft Access 应用程序的数据库文件格式,而 Oracle 数据库是关系数据库管理系统。将 Access 数据库 MDB 文件导入 Oracle ...

    Oracle数据库的安装配置方法及C#连接操作Oracle数据库技巧、通用类等资料搜集整理

    搜集整理的Oracle数据库安装与配置方法以及C#连接操作Oracle数据库的典型代码,比较管用的说。主要包括10个方面内容:1、ORACLE817安装(服务器端/客户端)。2、ORACLE817配置(服务器端)。3、ORACLE817配置...

    oracle数据库操作工具

    另外,"173软件下载.txt"和"173绿色软件.url"可能是提供其他软件下载信息的文本文件和链接,对于Oracle数据库操作不是必需的。 综上所述,Navicat8 for Oracle是一款强大的数据库管理工具,可以帮助IT专业人员更...

    vb.net操作Oracle数据库增删改查以及存储过程调用1

    VB.NET 操作 Oracle 数据库增删改查以及存储过程调用 在本篇文章中,我们将详细介绍如何使用 VB.NET 操作 Oracle 数据库,包括增删改查操作以及存储过程的调用。 VB.NET 操作 Oracle 数据库的准备工作 在开始操作...

    Oracle数据库认证大师

    Oracle数据库认证大师考试是Oracle认证的考试之一,考试代号为1z0-062,主要考察考生对于Oracle Database 12c的安装和管理相关知识的掌握程度。该考试主要涵盖了数据库实例的参数设置、安全管理、数据库链接的创建等...

    oracle数据库编程pdf文档教案

    这些编程元素可以用于实现更复杂的业务逻辑和数据库操作。读者将学会如何声明变量,控制流程(IF-THEN-ELSE, CASE语句,循环),以及处理异常。 Java_oracle04.pdf可能涉及数据库对象的管理,包括索引的创建和优化...

    Oracle数据库管理工具与操作.

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其强大的功能和高效的数据处理能力为企业级应用提供了坚实的基础。在管理Oracle数据库时,有多种工具可供选择,这些工具使得数据库的安装、配置、监控和维护...

    labview 调用oracle数据库

    例如,创建表是数据库操作的基础。在“oracle测试创建表.vi”这个例子中,可能包含一个LabVIEW程序,该程序使用SQL的CREATE TABLE语句来定义新的表结构。CREATE TABLE语法如下: ```sql CREATE TABLE 表名 ( 列名1...

    skyline与oracle数据库坐标关联之oracle数据库操作说明

    Skyline与Oracle数据库坐标关联之Oracle数据库操作说明 数据库操作是指在Skyline与Oracle数据库坐标关联中执行的一系列操作,以确保坐标数据的正确性和一致性。在本文中,我们将详细介绍Skyline与Oracle数据库坐标...

    MFC使用ADO实现与Oracle数据库的操作

    MFC通过ADO实现了对Oracle数据库的增删改查,主要实现了数据的增加、删除、修改、查找功能。该资源本原本是日文的,我通过个人的学习和翻译,把相关重要代码的注释以及界面都翻译成了中文。并且在此基础上添加了不少...

    c# 连接oracle数据库和对数据库的基本操作

    通过`OracleConnection`、`OracleCommand`和相关的数据访问对象,你可以轻松地执行各种数据库操作。请确保在实际应用中,根据具体需求调整代码,并且不要忘记处理异常和关闭连接以避免资源泄漏。

Global site tag (gtag.js) - Google Analytics