zoukankan      html  css  js  c++  java
  • Oracle数据库

    一、Oracle安装

    Oracle服务的安装 ,Oracle客户端安装 ,pl sql developer安装。

    OracleService+服务名,该服务是数据库启动的基础,只有该服务启动了,Oracle数 据库才能正常启动。这是必须启动的服务。

    OracleOraDb10g_home1TNSListener,该服务是服务器端为客户端提供的监听服务, 只有该服务在服务器上正常启动,客户端才能连接到服务器。该监听服务
    接收客户端发出的请求,然后将请求传递给数据库服务器。一旦建立了连接,客户端和数据库服务器就能直接通信了。

     OracleOraDb10g_home1iSQL*Plus ,该服务提供了用浏览器对数据库中数据操作的方 式。该服务启动后,就可以使用浏览器进行远程登录并进行数据库操作了

    二、Oracle数据库版本分类:

    Oracle 9g10g/11g/12c等。

    sql 是结构化查询语言,是关系型数据库。

    数据定义语言(DDL),包括CREATE(创建)命令、ALTER(修改)命令、DROP(删 除)命令等。

     数据操纵语言(DML),包括INSERT(插入)命令、UPDATE(更新)命令、DELETE (删除)命令、SELECT … FOR UPDATE(查询)等。 

    数据查询语言(DQL),包括基本查询语句、Order By子句、Group By子句等。

     事务控制语言(TCL),包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、 ROLLBACK(回滚)命令。

     数据控制语言(DCL),GRANT(授权)命令、REVOKE(撤销)命令。

    三 、Oralce数据类型

    varchar(n) 可变的 4000KM

    char(n) 固定的 2000KM

    number 浮点的j

    number(m,n)精度,小数

    date 日期型数据

    long 可变的字符串

    raw long raw 二级制

    clob 图形 文本

    image blob  基本数据类型 存储图片

    四、Oralce创建表和约束

    CREATE TABLE INFOS

    (

    STUID VARCHAR2(7) NOT NULL, --学号

    STUNAME VARCHAR2(10) NOT NULL, --姓名

    GENDER VARCHAR2(2) NOT NULL, --性别

    AGE NUMBER(2) NOT NULL, --年龄

    SEAT NUMBER(2) NOT NULL,--座号

    ENROLLDATE DATE, --入学时间

    STUADDRESS VARCHAR2(50) DEFAULT '地址不详', --住址

    CLASSNO VARCHAR2(4) NOT NULL --班号

    )

    go

    ALTER TABLE INFOS ADD CONSTRAINT PK_INFOS PRIMARY KEY(STUID)

     ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_GENDER CHECK(GENDER = '男'
    OR GENDER = '女')

    ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_SEAT CHECK(SEAT >=0 AND SEAT <=50)

     ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_AGE CHECK(AGE >=0 AND AGE<=100)

    ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_CLASSNO CHECK((CLASSNO >='1001' AND
    CLASSNO<='1999') OR (CLASSNO >='2001' AND CLASSNO<='2999'))

    ALTER TABLE INFOS ADD CONSTRAINTS UN_STUNAME UNIQUE(STUNAME)

    --简单查询一条语句

    select 表达式 from 表名 where 条件 group by 列名 having 条件 order by 表达式

    dual 是一个虚拟表

    SELECT * FROM dual; 
    SELECT to_char(SYSDATE,'yyyy-mm-dd hh24:mi:ss')AS 获取当前系统时间 FROM dual; 
    select sys_context('userenv','terminal') AS 获取主机名 FROM dual; 
    select sys_context('userenv','language') AS 获取当前locale语言 FROM dual; 

    -- Create table
    create table SYS.DUAL
    (
    dummy VARCHAR2(1)
    )
    tablespace SYSTEM
    pctfree 10
    pctused 40
    initrans 1
    maxtrans 255
    storage
    (
    initial 16K
    next 1M
    minextents 1
    maxextents unlimited
    );
    -- Grant/Revoke object privileges
    grant select on SYS.DUAL to PUBLIC with grant option;


    --查看表结构 (describe)简写 desc 表名

    --去重复( distinct)

    nvl

    val

    查询条件   like  ,in,or,between and  ,not null,is null,is not null

    %ABC%

    %_BC%     注 _是占位符

    函数 

    concat  连接字符串,instr 字符串,length 字符串长度,lover 大转小,upper  小转大 ,lpad(填充左边)rpad(填充右边) ,ltrim rtrim trim 去除空格,replace替换,substr字符串长度,

    add_months(to_char('12-03-10','dd-mm-yy'),4)

    last_day(to_date('',''))最后一天

    months_between,sysdate 当前系统时间,to_date,to_number

    avg  min max sum count

    --查看当前数据库中所有表(dba_tables)

    SELECT * FROM dba_tables;

    --数据字典表
    SELECT * FROM user_cons_columns;
    SELECT * FROM User_Constraints;

    --数据字典视图
    SELECT * FROM User_Views;
    SELECT * FROM all_views;
    SELECT * FROM dba_views;

    --索引
    SELECT * FROM User_Indexes
    SELECT * FROM user_ind_columns;

    五、序列

    --序列 (sequence) 
    SELECT * FROM User_Sequences; 
    SELECT * FROM all_Sequences; 
    SELECT * FROM dba_Sequences;

    -- Create sequence
    create sequence SEQ_D_DMP_SSP_SETTLEMENT
    minvalue 1
    maxvalue 9999999999999999999999999999
    start with 32
    increment by 1
    cache 10;

    六、子查询与表连接

    单行子查询:不向外部返回结果,或者只返回一行结果。

    多行子查询:向外部返回零行、一行或者多行结果。

    七、表空间 (TableSpace) 表空间就是存放数据的,数据存放在(Data File目录下)。

    一个数据库可以包含多个表空间,一个表空间只能属于一个数据库
    一个表空间包含多个数据文件,一个数据文件只能属于一个表空间

    --查看数据库的版本
    select * from v$version;
    SELECT * FROM product_component_version;
    SELECT VERSION FROM product_component_version
    WHERE SUBSTR(product ,1,6)='Oracle';


    --查看表空间的名称及大小
    SELECT * FROM dba_tablespaces;
    SELECT * FROM dba_data_files;
    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;


    --查看数据库对象
    SELECT * FROM all_objects;
    SELECT owner,object_type,status,COUNT(*) COUNT#
    FROM all_objects
    GROUP BY owner,object_type,status;

    --查看控制文件
    SELECT * FROM v$controlfile;
    SELECT NAME FROM v$controlfile;

    --查看日志文件
    SELECT * FROM v$logfile;
    SELECT MEMBER FROM v$logfile;


    --查看表空间使用的情况
    SELECT * FROM dba_free_space;
    SELECT * FROM dba_data_files;

    select a.TABLESPACE_NAME "表空间名",
    total "表空间大小",
    free "表空间剩余大小",
    (total - free) "表空间使用大小",
    total / (1024*1024*1024) "表空间大小(G)",
    free / (1024*1024*1024) "表空间剩余大小(G)",
    (total - free) / (1024*1024*1024) "表空间使用大小(G)",
    round((total - free) / total , 4 ) *100"使用率%"
    from (select tablespace_name,sum(bytes) free
    from dba_free_space
    group by tablespace_name) a,
    (select tablespace_name,sum(bytes) total
    from dba_data_files
    group by tablespace_name) b
    where a.TABLESPACE_NAME = b.tablespace_name;

     查看表空间使用的情况:

    select a.TABLESPACE_NAME "表空间名",
    total "表空间大小",
    free "表空间剩余大小",
    (total - free) "表空间使用大小",
    total / (1024*1024*1024) "表空间大小(G)",
    free / (1024*1024*1024) "表空间剩余大小(G)",
    (total - free) / (1024*1024*1024) "表空间使用大小(G)",
    round((total - free) / total , 4 ) *100"使用率%"
    from (select tablespace_name,sum(bytes) free
    from dba_free_space
    group by tablespace_name) a,
    (select tablespace_name,sum(bytes) total
    from dba_data_files
    group by tablespace_name) b
    where a.TABLESPACE_NAME = b.tablespace_name;

    --查询表空间使用情况
      SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
      D.TOT_GROOTTE_MB "表空间大小(M)",
      D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
      TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",
      F.TOTAL_BYTES "空闲空间(M)",
      F.MAX_BYTES "最大块(M)"
      FROM (SELECT TABLESPACE_NAME,
      ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
      ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
      FROM SYS.DBA_FREE_SPACE
      GROUP BY TABLESPACE_NAME) F,
      (SELECT DD.TABLESPACE_NAME,
       ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
      FROM SYS.DBA_DATA_FILES DD
      GROUP BY DD.TABLESPACE_NAME) D
      WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
      ORDER BY 1;

    --查看表空间物理文件的名称及大小
    SELECT * FROM dba_data_files;

    select tablespace_name,
    file_id,
    file_name,
    round(bytes / (1024 * 1024), 0) total_space
    from dba_data_files
    order by tablespace_name;


    --查看表空间是否具有自动扩展能力
    SELECT * FROM DBA_TABLESPACES;
    SELECT * FROM DBA_DATA_FILES;

    SELECT T.TABLESPACE_NAME,
    D.FILE_NAME,
    D.AUTOEXTENSIBLE,
    D.BYTES,
    D.MAXBYTES,
    D.STATUS
    FROM DBA_TABLESPACES T, DBA_DATA_FILES D
    WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME
    ORDER BY TABLESPACE_NAME, FILE_NAME;

    --Oracle递归查询
    select * form start with name='系统' connect by prior t.parentid= id

    锁表查询
    select p.spid,
    a.serial#,
    c.object_name,
    b.session_id,
    b.oracle_username,
    b.os_user_name
    from v$process p, v$session a, v$locked_object b, all_objects c
    where p.addr = a.paddr
    and a.process = b.process
    and c.object_id = b.object_id;

    --查看表中的列数

    select count(column_name) from user_tab_columns where table_name ='表名'   --表名为大写

    b)创建表空间
    create tablespace user_date datafile 'D:appuser_date.dbf' size 50M 
    autoextend on next 50M maxsize 2048M extent management local;

    c)创建用户
    create user 用户名  identified by 密码 default tablespace 表空间名称;

    d)给新用户授权

    grant connect,resource,dba to 用户名;

    或者:
    GRANT CONNECT TO 用户名;
    GRANT RESOURCE TO 用户名;
    e)使用新用户登录
    conn 用户名/用户名;

    1.使用System用户登录Oracle
    2.alter user scott account unlock;//解锁账户
    3.alter user scott identified by tiger//更改密码
    4.conn scott/tiger;

    Oracle 导入导出(dmp)文件

    imp daspzk/daspzk@zzld file='d:aa/daspzk.dmp owner = daspzk log='d:aa/daspzk.txt'

    imp daspzk/daspzk@zzld file='d:aa/daspzk.dmp owner = daspzk full=y  log='d:aa/daspzk.txt'

    exp daspzk/daspzk@zzld file='d:aa/daspzk.dmp owner = daspzk log='d:aa/daspzk.txt'

     修改表结构

    add drop modify rename

    truncate :删除表中所有文件,删除后就不能恢复了

    delete :删除表数据,保留表结构

    drop: 表结构,表数据都一并删除了

    --修改数据库的表名

    alter table old表名 rename to new表名

    --修改列名

    alter table 表名 rename column old列名  to new表名

    --修改列名的数据类型

    alter table 表名 modify 列名 new_datatype

    --插入列

    alter table 表名 add 列名 datatype

    --添加约束

    alter table 表名 add(constraint 约束名 约束类型(列名))

    --更新约束

    alter table 表名 modify(constraint 约束名 约束类型(列名))

    --删除约束

    alter table 表名 drop(constraint 约束名 约束类型(列名))

    删除列

    alter table 表名 drop column 列名

    约束 : not null 非空 unique 唯一 primary key 主键 foreign key 外键 check 检查  constraint constraint 约束名 references 表名(列名)

    Oracle实例的启动与关闭:Oracle数据库是由实例和数据库组成,一个实例只能打开一个数据库。

    启动Oracle 服务器的命令是 startup 只有sys用户才能执行。

    startup 例程启动

    net start OracleServiceORCL   

    startdown 例程关闭
    net stop OracleServiceORCL

    --游标

    declare
    --定义游标
    cursor emp_cursor is
    select ename,sal from emp where deptno= 30;
    --定义变量
    v_ename emp.ename%type;
    v_sal emp.sal%type;
    begin

    --打开游标
    open emp_cursor;
    loop
    --提取数据
    fetch emp_cursor into v_ename, v_sal;
    exit when emp_cursor%notfound;
    dbms_output.put_line(v_ename|| '工资是:' ||v_sal);
    end loop;
    --关闭游标
    close emp_cursor;
    end;

  • 相关阅读:
    GMap.NET 随谈
    Chrome Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101
    Java 自定义枚举
    如何得到全国省市经纬度范围
    Jquery formwizard 入门 【前台 向导功能】
    Eclipse Juno 安装 Aptana 3.3,支持jquery智能提示
    Ant学习【实践1】
    euerka总结 当幸福来敲门
    Spring Boot 热启动插件 当幸福来敲门
    ASP.NET 2.0 Provider Model 详细分析
  • 原文地址:https://www.cnblogs.com/shanzzs/p/7228570.html
Copyright © 2011-2022 走看看