zoukankan      html  css  js  c++  java
  • oracle数据库基础功能

    一、oracle基本常用的数据类型

    varchar(长度) 字符串
    char(长度) 字符
    number(x,y) x表示总位数 y表示保留小数点后几位数 eg面试题:number(5,3)最大的数是99.999
    decimal() 数字
    long int integer 整数
    date 日期
    timestamp 日期
    clob blob 特殊文本 二进制

    二、DLL操作
    create
    创建表的前提是:1、具备创建表的条件 2、有可用的存储空间
    创建表的语法是:
    create table 表名 (column1 数据类型,column2 数据类型……);

    drop table 表名;
    表中的所有数据都将删除、此前未完成的事务都将被提交、所有相关的索引被删除、DLL语句,一经执行,不可撤销。

    alter 
    对表添加字段
    alter table 表名 add (column1 数据类型,column2 数据类型……);
    对表删除字段
    alter table 表名 drop (column1,column2……);
    对表现有字段进行修改
    alter table 表名 modify (column1 数据类型,column2 数据类型……);

    truncate table 表名;
    清空表中所有记录、释放表空间、DLL语句,一经执行,不可撤销。

    三、DML操作
    select
    select */column1,column2…… from 表名 where ……;

    delete from 表名 where 条件……

    update 表名 set column = ‘字段’where 条件……

    insert into 表名 (column1,column2……)values (值1,值2……);

    四、事务控制语言
    commit rollback savepoint

    五、数据控制语言
    grant revoke


    算术运算 + - * /

    连接运算 ||  与concat类似

    两者区别:||可以连接多个字符串  concat只能连接两个字符串。

    别名 AS 关键字

    空值 --无效值

    去重 distinct

    排序 order by  --永远存在sql语句的结尾。

    分组 group by 

    --当语句中出现group by分组语句时,select对应的列要么是group by分组列,要么是聚合函数列。

    --对分组过后的数据进行二次过滤可以使用hiving关键字。

     --where 后面不能跟聚合函数列 

    六、函数
    字符函数

    数值函数

    日期函数

    转换函数

    通用函数

    decode用法:

    第一种用法:替换分组  

    decode(column,'列中可能出现的值','肯定打印出的值','否定打印出的值')

    eg:select tname,decode(tname,'小花','本科','中专') from s7 order by tname ;--解释decode函数中的意思:

    tname列中出现‘小花’就打印本科,不是小花就打印中专

    第二种用法:动态排序  

    --要求 销售部拍第一位 
    select * from dept 
    order by decode(d_name,'产险系统开发部',1,'销售部',2,3);--解释d_name这一列如果是产险系统开发部就显示1,销售部就显示2,其他就显示3.

    第三种用法 :行转列

    select s_years ,
    max(decode(s_months , '1季度',s_money)) as 一季度 ,
    min(decode(s_months , '2季度',s_money)) as 二季度,
    sum(decode(s_months , '3季度',s_money)) as 三季度,
    avg(decode(s_months , '4季度',s_money)) as 四季度
    from sales group by s_years ;

    聚合函数

    min(column)求列的最小值

    max(column)求列的最大值

    sum(column)求和

    avg(column)求平均--计算时空值会被除外

    count(column)统计有效数据的数量,空值null不会被统计在内。

    一、Oracle的稳定性比Sql Server要好。

    二、Oracle在导数据工具Sqlload.exe功能要比SqlServer中的Bcp功能要好,oracle可以按照条件把文本数据导入。

    三、Oracle的安全机制较SqlServer完善。

    四、在进行大数据处理的模块Oracle有强大的运行机制。

    五、处理数据速度方面速度较快。

    各项开发工具的使用
    一、PL/SQL Developer
    比较使用开发人员,界面简单易用,功能也有不少。

    二、Tod
    较为专业型的使用,使用DBA使用,功能强大,也是很容易上手,因为时间问题,在实际的使用上,已经在慢慢减少。

    sqlplus登录几种登录方式

    sqlplus有几种登陆方式 比如:
    1.C: > sqlplus / as sysdba; –以操作系统权限认证的oracle sys管理员登陆
    2.C: > sqlplus / nolog –不在cmd或者terminal当中暴露密码的登陆方式
    SQL> conn / as sysdba
    或者
    SQL> conn sys/password as sysdba
    3.C: > sqlplus scott/tiger –非管理员用户登陆
    4.C: > sqlplus scott/tiger@orcl –非管理员用户使用tns别名登陆
    5.C: > sqlplus sys/password@orcl as sysdba –管理员用户使用tns别名登陆
    6.C: > sqlplus –不显露密码的登陆方式
    Enter user-name:sys
    Enter password:password as sysdba –以sys用户登陆的话 必须要加上 as sysdba 子句

    备注:
    在作为oracle学习的过程中,建议使用的登录账号名及密码的使用为
    Scott/tiger
    System/manager
    sys/change_on_install
    hr/hr
    等等其中几个用户。

    常用数字字典
    均在 Oracle 11g R1 上,通过 Oracle Sql Developer 进行过测试的,全部通过。其中很多的数据字典都必须以 system 或者是 sysdba 用户登录才能够使用的。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    ---数据库实例的基本信息
    desc v$instance;
    select * from v$instance;
     
    --数据文件的基本信息
    desc v$datafile;
    select * from v$datafile;
    desc dba_data_files;
    select file_name,file_id,tablespace_name,bytes,blocks,
           status,online_status
    from dba_data_files;
     
    --临时文件的基本信息
    desc dba_temp_files;
    select file_name,file_id,tablespace_name,status,
           bytes/1024/1024 大小MB
    from dba_temp_files;
     
     
    --控制文件的基本信息
    desc v$controlfile;
    select name,status,is_recovery_dest_file,
           block_size,file_size_blks
    from v$controlfile;
     
     
    --日志文件的基本信息
    desc v$logfile;
    select group#,status,type,member,is_recovery_dest_file
    from v$logfile;
     
     
    --数据库的基本信息
    desc v$database;
    select * from v$database;
    select dbid,name,created,resetlogs_time,log_mode,
           open_mode,checkpoint_change#,archive_change#,
           controlfile_created,controlfile_type,
           controlfile_sequence#,controlfile_change#,
           controlfile_time,protection_mode,database_role
    from v$database;
     
     
    --日志文件参数信息
    show parameter log_archive_dest;
     
     
    --访问参数文件
    desc v$parameter;
    select num,name,type,value,display_value,
           isdefault,isses_modifiable,
           issys_modifiable,isinstance_modifiable      
    from v$parameter;
    select * from v$parameter;
    select name,value,description from v$parameter;
     
     
    --后台进程信息
    desc v$bgprocess;
    select paddr,pserial#,name,description,error from v$bgprocess;
     
    --DBA 用户的所有的表的基本信息
    desc dba_tables;
    desc dba_tab_columns;
    select owner,table_name,column_name,data_type,data_length,
           global_stats,data_upgraded,histogram
    from dba_tab_columns;
     
     
    --DBA 用户的所有的视图的基本信息
    desc dba_views;
    select owner,view_name,read_only from dba_views;
     
     
    --DBA 用户的所有的同义词的基本信息
    desc dba_synonyms;
    select owner,synonym_name,table_owner,
           table_name,db_link
    from dba_synonyms;
     
    --DBA 用户的所有的序列的信息
    desc dba_sequences;
    select sequence_owner,sequence_name,min_value,max_value,
           cycle_flag
    from dba_sequences;
     
    --DBA 用户的所有的约束的信息
    desc dba_constraints;
    select owner,constraint_name,constraint_type,
           table_name,status
    from dba_constraints;
     
     
    --DBA 用户的所有的索引的基本信息
    desc dba_indexes;
    select owner,index_name,index_type,table_owner,table_name,
           table_type,uniqueness,compression,logging,status
    from dba_indexes;
     
    --DBA 用户的所有的触发器的基本信息
    desc dba_triggers;
    select owner,trigger_name,trigger_type,
           table_owner,table_name,column_name
    from dba_triggers;
     
    --DBA 用户的所有的存储过程的基本信息
    desc dba_source;
    select owner,name,type,line,text from dba_source;
     
    --DBA 用户的所有的段的基本信息
    desc dba_segments;
    select owner,segment_name,segment_type,
           tablespace_name,blocks,extents
    from dba_segments;
     
    --DBA 用户的所有的区的基本信息
    desc dba_extents
    select owner,segment_name,segment_type,
           tablespace_name,extent_id,file_id,blocks
    from dba_extents;
     
    --DBA 用户的所有的对象的基本信息
    desc dba_objects;
    select owner,object_name,subobject_name,
           object_id,data_object_id,object_type,
           created,status,namespace
    from dba_objects;
     
    --当前用户可以访问的所有的基表
    desc cat;
    select table_name from cat;
     
    --当前用户可以访问的所有的基表,视图,同义词
    desc system.tab;
    select tname,tabtype,clusterid from system.tab;
     
    --构成数据字典的所有的表信息
    desc dict;
    select table_name,comments from dict;
     
    -- 查询关于表空间的一些基本的数据字典
    desc dba_tablespaces;
    select tablespace_name,block_size,status,
           logging,extent_management
    from dba_tablespaces;      
    desc dba_free_space;
    select tablespace_name,file_id,block_id,
           bytes/1024/1024 大小MB,blocks,relative_fno
    from dba_free_space;
     
    --归档状态的一些基本信息
    desc v$archived_log;
    select name,dest_id,blocks,block_size,
           archived,status,backup_count
    from v$archived_log;
     
    --关于内存结构的一些信息
    desc v$sga;
    select name,value/1024/1024 大小MB from v$sga;
     
    desc v$sgastat;
    select pool,name,bytes from v$sgastat;
     
    desc v$db_object_cache;
    select owner,name,db_link,type,namespace,locks from v$db_object_cache;
     
    desc v$sql;
    select sql_text,sql_id,cpu_time from v$sql;

    Oracle中的各种数据文件
    一、数据文件(Datafile)
    Oracle数据中的每一个表空间(Tablespace)都是由一个或多个物理数据文件(datafile)构成的。

    二、控制文件(Controlfile)
    控制文件(control file)是一个二进制文件,供数据库启动及正常工作时使用。

    在数据库运行过程中,控制文件会频繁地被Oracle修改,因此数据库处于开启(open)状态时控制文件必须可写。如果控制文件因故不能访问,数据库 也将无法正常工作。
      
     每当添加,重命名,或移除数据库中的数据文件(datafile)及重做日志文件(redo log file)时,控制文件(control file)就会被更新以反映这些数据库物理结构变化。

    三、重做日志文件
    Oracle引入重做日志的目的:数据库的恢复。
    Oracle相关进程:重做日志写进程(LGWR)。
    重做日志性质:联机日志文件,oracle服务器运行需要管理它们。
    相关数字字典:vlog;vlogfile。
    操作者权限:具有sys用户或system用户权限。

    四、归档日志文件
    归档日志(Archive Log)是非活动的重做日志备份.通过使用归档日志,可以保留所有重做历史记录,当数据库处于ARCHIVELOG模式并进行日志切换式,后台进程ARCH会将重做日志的内容保存到归档日志中.当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全恢复数据库.

    oracle常用的指令
    打开图形化窗口: 

    1)Database Configuration Assistant windows    (添加数据库实例) 
    $ dbca 
    2)Oracle Net Configuration Assistant windows  (配置监听) 
    $ netca 
    3)打开EM 
    $ oemapp dbastudio                            (打开企业管理器图形界面) 
    $ opemapp console                             (打开企业管理器图形界面(和上面的命令效果一样)) 
    常用命令: 
    $ lsnrctl start|stop|status                  (启动|停止|活动状态 监听) 
    $ isqlplusctl start|stop                      (启动|停止 isqlplus 可以在浏览器登录 5560端口) 
    $ sqlplus /nolog                              (以不连接数据库的方式启动sqlplus) 
    $ sqlplus system/manager @ file.sql           (执行sql脚本文件) 
    $ sqlplus system/manager                      (使用system用户登录sqlplus) 
    $ imp system/manager file=/tmp/expfile.dmp log=/tmp/implogfile.log ignore=y fromuser=expuser touser=impuser  (用户模式表数据导入,如果没有特别指定值,就使用默认的值)      
    $ exp username/password file=/tmp/expfile.dmp log=/tmp/proV114_exp.log                                       (用户模式表数据导出,这是最简单的导出方法) 

    SQL> conn / as sysdba                                  (以sysdba用户连接) 
    SQL> startup 
    SQL> shutdown 
    SQL> shutdown immediate                                (立即关闭实例) 
    SQL> desc dba_users;                                   (查询dba_users表结构) 
    SQL> select username from dba_users;                   (查询当前sid下的所有用户的username) 
    SQL> select count(*) from username.tablename;          (查询tablename表的行数) 
    SQL> drop user username cascade;                       (删除名称为username的oracle用户) 
    SQL> select distinct table_name from user_tab_columns; (查看当前user模式下所有表名)

    一、ORACLE的启动和关闭 
      1、在单机环境下 
      要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 
      su - oracle 

    a、启动ORACLE系统 
      oracle>svrmgrl 
      SVRMGR>connect internal 
      SVRMGR>startup 
      SVRMGR>quit 

    a、启动ORACLE系统 
      oracle>svrmgrl 
      SVRMGR>connect internal 
      SVRMGR>startup 
      SVRMGR>quit 

    2、在双机环境下 
      要想启动或关闭ORACLE系统必须首先切换到root用户,如下 
      su - root 
       
      a、启动ORACLE系统 
      hareg -y oracle 
       
      b、关闭ORACLE系统 
      hareg -n oracle 
       
      Oracle数据库有哪几种启动方式 

    说明: 
       
      有以下几种启动方式: 
      1、startup nomount 
      非安装启动,这种方式启动下可执行:重建控制文件、重建数据库 
       
      读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件

    2、startup mount dbname 
      安装启动,这种方式启动下可执行: 
      数据库日志归档、 
      数据库介质恢复、 
      使数据文件联机或脱机, 
      重新定位数据文件、重做日志文件。

    执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置, 
      但此时不对数据文件和日志文件进行校验检查。

    3、startup open dbname 
      先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件, 
      这种方式下可访问数据库中的数据。

    4、startup,等于以下三个命令 
      startup nomount 
      alter database mount 
      alter database open 

    5、startup restrict 
      约束方式启动 
      这种方式能够启动数据库,但只允许具有一定特权的用户访问 
      非特权用户访问时,会出现以下提示: 
      ERROR: 
      ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用 

    6、startup force 
      强制启动方式 
      当不能关闭数据库时,可以用startup force来完成数据库的关闭 
      先关闭数据库,再执行正常启动数据库命令

    7、startup pfile=参数文件名 
      带初始化参数文件的启动方式 
      先读取参数文件,再按参数文件中的设置启动数据库 
      例:startup pfile=E:Oracleadminoradbpfileinit.ora 

    8、startup EXCLUSIVE 
      二、用户如何有效地利用数据字典 
       ORACLE的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生, 随着数据库的变化而变化, 
      体现为sys用户下的一些表和视图。数据字典名称是大写的英文字符。 
       
       数据字典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图等。 
      我们不能手工修改数据字典里的信息。 
       
       很多时候,一般的ORACLE用户不知道如何有效地利用它。 
       
       dictionary 全部数据字典表的名称和解释,它有一个同义词dict 
       dict_column 全部数据字典表里字段名称和解释 
       
       如果我们想查询跟索引有关的数据字典时,可以用下面这条SQL语句: 


       SQL>select column_name,comments from dict_columns where table_name='USER_INDEXES'; 
       
       依此类推,就可以轻松知道数据字典的详细名称和解释,不用查看ORACLE的其它文档资料了。 
       
       下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。

     1、用户 
       
       查看当前用户的缺省表空间 
       SQL>select username,default_tablespace from user_users; 
       
       查看当前用户的角色 
       SQL>select * from user_role_privs; 
       
       查看当前用户的系统权限和表级权限 
       SQL>select * from user_sys_privs; 
       SQL>select * from user_tab_privs; 

     2、表 
       
       查看用户下所有的表 
       SQL>select * from user_tables; 
       
       查看名称包含log字符的表 
       SQL>select object_name,object_id from user_objects 
       where instr(object_name,'LOG')>0; 
       
       查看某表的创建时间 
       SQL>select object_name,created from user_objects where object_name=upper('&table_name'); 
       
       查看某表的大小 
       SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments 

           where segment_name=upper('&table_name'); 
       
       查看放在ORACLE的内存区里的表 
       SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;

    3、索引 
       
       查看索引个数和类别 
       SQL>select index_name,index_type,table_name from user_indexes order by table_name; 
       
       查看索引被索引的字段 
       SQL>select * from user_ind_columns where index_name=upper('&index_name'); 
       
       查看索引的大小 
       SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments 
       where segment_name=upper('&index_name'); 

    4、序列号 
       
       查看序列号,last_number是当前值 
       SQL>select * from user_sequences; 
       
       5、视图 
       
       查看视图的名称 
       SQL>select view_name from user_views; 
       
       查看创建视图的select语句 
       SQL>set view_name,text_length from user_views; 
       SQL>set long 2000; 说明:可以根据视图的text_length值设定set long 的大小 
       SQL>select text from user_views where view_name=upper('&view_name'); 

    6、同义词 
       
       查看同义词的名称 
       SQL>select * from user_synonyms; 
       
       7、约束条件 
       
       查看某表的约束条件 
       SQL>select constraint_name, constraint_type,search_condition, r_constraint_name 
       from user_constraints where table_name = upper('&table_name'); 
       
       SQL>select c.constraint_name,c.constraint_type,cc.column_name 
       from user_constraints c,user_cons_columns cc 
       where c.owner = upper('&table_owner') and c.table_name = upper('&table_name') 
       and c.owner = cc.owner and c.constraint_name = cc.constraint_name 
       order by cc.position; 

     8、存储函数和过程 
       
       查看函数和过程的状态 
       SQL>select object_name,status from user_objects where object_type='FUNCTION'; 
       SQL>select object_name,status from user_objects where object_type='PROCEDURE'; 
       
       查看函数和过程的源代码 
       SQL>select text from all_source where owner=user and name=upper('&plsql_name'); 

    三、查看数据库的SQL 
      1、查看表空间的名称及大小 
       
       select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size 
       from dba_tablespaces t, dba_data_files d 
       where t.tablespace_name = d.tablespace_name 
       group by t.tablespace_name; 
       
      2、查看表空间物理文件的名称及大小 
       
       select tablespace_name, file_id, file_name, 
       round(bytes/(1024*1024),0) total_space 
       from dba_data_files 
       order by tablespace_name; 
       
      3、查看回滚段名称及大小 
       
       select segment_name, tablespace_name, r.status, 
       (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent, 
       max_extents, v.curext CurExtent 

       From dba_rollback_segs r, v$ro 

    安装客户端和plsql远程连接oracle数据库
    一,安装客户端以及plsql的步骤省略
      注意点:

    在windows机器上不想安装oracle或者oracle的客户端,我们怎么使用PLSQL Developer工具呢?答案如下:

    环境                       windows7  64bit

    目标环境               centOS5.8  64bit

    1:在oracle官网上下载instantclient-basic-nt-11.2.0.3.0.zip该文件,下载地址为:客户端。下载完成后解压该文件。如:我将其解压在E:oracleClientinstantclient_11_2该路径下。进入到instantclient_11_2下创建目录NETWORK,然后再NETWORK下建立目录ADMIN。在ADMIN目录下建立tnsnames.ora文件,在该tnsnames.ora文件中添加如下内容:

    [ruby] view plain copy
     
    ORACLR_CONNECTION_DATA =   
      (DESCRIPTION =   
        (ADDRESS_LIST =   
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))   
        )   
        (CONNECT_DATA =   
          (SID = CLRExtProc)   
          (PRESENTATION = RO)   
        )   
      )   
      
    TEST =                     
      (DESCRIPTION =   
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.175)(PORT = 1521))   
        (CONNECT_DATA =   
          (SERVER = DEDICATED)   
          (SERVICE_NAME = orcl)   
        )   
      )  

    192.168.2.175--为数据库所在机器ip

    2:环境变量的配置
    打开环境变量设置添加TNS_ADMIN,值为tnsnames.ora所在路径。如本机为E:oracleClientinstantclient_11_2NETWORKADMIN nsnames.ora

    设置ORACLE的语言,添加环境变量NLS_LANG,值为AMERICAN_AMERICA.AL32UTF8  如果出现乱码可用SIMPLIFIED CHINESE_CHINA.ZHS16GBK
      3:下载并安装PLSQL Developer

    安装完成后进入PLSQL Developer,选择tools->preferences->connection

    Oracle Home             

    E:oracleClientinstantclient_11_2

    OCI library

    E:oracleClientinstantclient_11_2oci.dll

    修改完毕后保存并重启PLSQL Developer就可以使用该工具了。

    3:时间格式显示设置
    打开环境变量添加NLS_TIMESTAMP_FORMAT,值为YYYY-MM-DD HH24:MI:SS:FF6。

    这样就可以正常读取日期了。
    ---------------------

  • 相关阅读:
    Mybatis查询select操作
    插入排序和它的进化希尔排序
    关于c头文件的使用的小记录
    Mybatis介绍
    spring tool suite开发环境搭建
    一个简单的jsp+servlet登录界面的总结
    纠正关于线程的错误理解
    表达式语言EL简单学习
    [BZOJ 1804] Flood
    [POJ 1739] Tony's Tour
  • 原文地址:https://www.cnblogs.com/klb561/p/10527336.html
Copyright © 2011-2022 走看看