oracle学习笔记

来源:互联网 发布:淘宝首页自定义优惠券 编辑:程序博客网 时间:2024/06/06 05:19
为什么学习数据库?
  以前,存储数据,可以使用文件,但弊端很多,如:不能进行海量存储,安全性问题不能解决,等等
  使用数据库,可以对海量数据进行有效管理和存储,如;QQ聊天数据记录的保存,网游积分等


ORACLE 数据库的特点:
   1,跨平台,可移植性
   2,支持大型数据库,多用户的事务处理
   3,实现数据结构化
   4,实现数据安全性、完整性控制(安全性:控制数据库访问权限;完整性:处理多个客户端对同一数据的并发访问)


ORACLE服务器:ORACLE数据库 、 ORACLE实例(管理数据库的后台进程和内存结构的集合)


使用 ORACLE 数据库 的 开发流程
   服务器端:
     (1)安装ORACLE服务器端软件  
     (2)创建数据库(安装时自动创建)  
     (3)配置监听器(安装时自动配置)   : oracleOraDb10g- Listener
     (4)启动oracle实例(自动启动服务) : OracleService ORACLE 
     (5)创建用户表空间            ???????????????????  
     (6)创建新用户并授权
   客户端:
     (1)安装ORACLE客户端软件    
     (2)配置网络服务名    
     (3)以新用户登陆ORACLE    
     (4)提交sql查询


Oracle默认用户: 
   SYS:     Orcle超级管理员,拥有最高权限,可以操作任何事物     (董事长)
   SYSTEM:  是一个普通用户(管理员),但拥有最高DBA权限,也可操作用户权限   (总经理)
   SCOTT:   是Oracle 数据库的一个示范帐户,在数据库安装时创建


sys与system的区别:(两个主要用户,三个重要权限)
 1,存储的数据的重要性不同
    sys: 
         所有oracle的数据字典(数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的。
       比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等。)的基表和视图都存放在sys用户中,这些基表           和用户由数据库自己维护,任何用户不能手动更改
         sys用户拥有dba,sysdba,sysoper角色或权限,是oracle权限最高的用户
             
    system:
         用于存放oracle的一些特性或工具的管理信息
         system用户拥有dba,sysdba角色或系统权限。
         
  2,权限不同 
     sys用户必须以as sysdba 或 as sysoper形式登录 
     system如果正常登录,就是一个普通的dba用户,但如果以 as sysdba 登录,实际上就是作为sys用户登录的
   
   sysdba 可以创建数据库 , sysoper不能 
 

 user_tables : 当前用户所拥有的所有表
 all_tables  : 当前用户可以访问的所有表
 dba_tables  : 数据库中所有的表

Oracle权限
   系统权限: 跟系统相关的操作,如:连接、创建、修改、删除……
   用户权限: 跟用户相关的操作,如:查看、CRUD……
Oracle角色
   是一组相关权限的组合。将角色赋给用户,可以简化权限管理


要连接到Oracle数据库,就需要创建一个用户账户
每个用户都有一个默认表空间和一个临时表空间


命令语句
1, CONN 用户名/密码 :CONN scott/admin;
2, CONN sys/admin AS sysdba/sysoper;
3,PASSWORD; 更改当前用户密码,仅SYS用户有权修改其他用户密码
4,EXIT ; 断开连接,并推出PLSQL
5,DISC ; 断开连接
6,EDIT 文件路径  ; EDIT c:/test.sql  编辑指定的SQL脚本
7,SPOOL 文件路径 ; SPOOL c:/test.sql   将sqlplus中的内容输入到指定文件中
   SPOOL OFF  终止输出


交互式命令
8,& 可以替代 再执行中需要输入的 变量 
      SELECT * FROM emp WHERE ename=‘&name’;

9, SHOW linesize; 
   SET linesize 数字;
10, SHOW pagesize;
    SET pagesize 数字;
11, GRANT 角色/权限 TO 用户名:GRANT connect,resource TO scott;
12, GRANT select ON 表名 TO 用户名;
    GRANT update ON 表名 TO 用户名;
    GRANT all ON 表名 TO 用户名;
    GRANT all ON 表名 TO 用户名 WITH ADMIN OPTION; (允许被用户将插入、删除、更新和查询 
TEST 表中的记录的权限继续向下传递)
13,修改用户密码
    ALTER USER 用户名 IDENTITIFIED BY 密码;
14, 删除用户
    DROP USER 用户名 CASCADE;
15,Date类型修改默认插入格式(默认格式:dd-mm月-yyyy)
    alter session set nls_date_format='yyyy-mm-dd';


对表的操作
16,ALTER TABLE 表名 ADD 列名,类型;         -- 增加一个字段
    ALTER TABLE 表名 MODIFY  列名,类型      -- 修改字段类型
    ALTER TABLE 表名 DROP colimn 列名        -- 删除一个字段
    RENAME 表名 TO 新表名                    -- 修改表名
17,CRUD操作:
    select * from 表名;
    insert into 表名(id,name,...)values (1,'Tom',...);
    delete from 表名(where子句)
    update 表名 set name='Rose';
    注意: 使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。 truncate table……  
           delete from 表名; 删除所有记录,表结构还在,写日志,可以恢复的,速度慢 
           drop table 表名;  删除表的结构和数据 delete from student where xh='A001';  删除一条记录 
           truncate table 表名; 删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快
创建用户:
   仅 管理员或 超级管理员有权限 创建用户


创建表空间
CREATE TABLESPACE 表空间名称
DATAFILE ‘文件名’ 文件大小(K/M)
AUTOEXTEND OFF|ON;


创建表


ORACLE查询工具: SQL*Plus 、 iSQL*Plus 、 PL/SQL


查询语句命令汇总(主要以scott.emp演示为主)
1,查看表结构
   desc emp;
2,查询所有列
   select * from emp;
3, 查询指定列
   select empno,ename,sal from emp;
4, 取消重复列
   select distinct deptno,job from emp;
5, 使用连接字符串(||)
   select ename ||'的月薪是:'|| sal from emp;
6, 使用to_char()转换
   select ename from emp where to_char(hiredate,'yyyy.mm.dd') > '1982.1.1';
7, 使用like操作符
   %: 表示任意 0到多个字符  _: 表示任意单个字符
8,使用is null 
   select * from emp where mgr is null;
9, group by 后面可以跟多个分组限制条件
   SELECT AVG(sal),MIN(sal),job,deptno FROM emp GROUP BY deptno,job;
   having子句跟在group by 子句后面 
   select avg(sal) from emp group by deptno having avg(sal) <2000;
   如果在select 语句种同时包含有group by ,having ,order by 那么他们的顺序是group by , having , order by
nvl();