oracle 学习笔记

来源:互联网 发布:全国网络教育统考网 编辑:程序博客网 时间:2024/06/05 09:24

安装Oracle:
  windows7: 
     兼容性
  windows7/XP:
     *安装路径:  一定不能有空格和汉字 
     *文件夹不要出现空格: D:\Program Files\Oracle
     *我的电脑名尽量不要是汉字


认识Oracle:  40%   60%
     java C 汇编


关系型数据库管理信息系统:  RDBMS
  Relational DataBase Management System


DBMS


Oracle 甲骨文
MySQL --》MeriaDB
表:  由行和列组成的一个关系表


HBash :非关系型


连接Oracle:


   运行:services.msc 命令进入服务:Oracle
    OracleOraDb10g_home1TNSListener :允许外部程序访问Oracle
    OracleServiceORCL:一个叫ORCL的数据库实例
       数据库实例 = Oracle的占用的内存空间(SGA) + 进程




CMD中连接Oracle:
SQLPLUS 命令  用户名/口令
sqlplus sys/XXXXXXXX as sysdba


   SYSDBA: 权限  用户:SYS 数据库系统管理员  
   SYSOPER: 权限 用户:PUBLIC 管理员  --》通常用来做热备份的权限
   DBA: 角色 :角色由多个权限组成
   NORMAL:  自然权限 普通权限 普通用户




Oracle安装好以后,有三个可用用户:
SYS :通常作为一个系统管理员来登录
        SYSTEM :普通的管理员  DBA
        SCOTT :普通用户


显示连接的用户: show user
连接其他用户:   conn 用户名/口令    connect 用户名/口令
清理屏幕:  host cls  或者 clear screen
记录操作(文件写入流的操作):
spool "文件.sql"  :将接下来所有的内容写入到指定的文件中
        spool off;  结束文件的写入


运行一个数据库脚本文件:(文件中的命令通常是一个SQL语句)
start "文件名"  或者 @ "文件名"


编辑上一个SQL语句:
change /出错的位置内容/更正后的内容
        edit 或者 ed 
/ : 运行修改后的SQL语句
    * 切记: edit命令打开的文本框一定要关闭掉才能继续在cmd中执行
            edit命令中打开的文本框不要出现 ; 分号 


对用户操作:
  conn scott/tiger
  ERROR:
ORA-28000: the account is locked
  原因 :  操作的用户被上锁
  解锁操作:
     1 先连接一个有权限的用户  conn system/etoak
     2 alter user 用户名 account unlock;


创建用户:
   1 连接一个有权限的用户   conn system/etoak
   2 create user 用户名 identified by 口令;
   Exec: 
    创建et1502用户


删除用户:
   1 conn system/etoak
   2 drop user 用户名;
     drop user 用户名 cascade;
    * 如果用户中没有任何内容,那么使用 drop user 用户名;即可
      如果用户中有一些表 视图等内容 必须使用cascade




* 无论是修改用户属性还是对用户解锁,一定要在管理员用户下执行


创建用户:
  create user 用户名 identified by 口令;
修改用户:
  alter user 用户名 identified by 口令;
对用户解锁:
  alter user 用户名 account unlock;
删除用户:
  drop user 用户名 cascade;




Exec:如果把某个用户的密码忘了 怎么办?
  1 sys
  2 alter

drop truncate delete的区别?

如果要保留表结构释放表中数据,哪种命令效率更高?为什么?




SQL :Structured Query Language  结构化查询语句
   * DDL DML DQL DCL TCL
   * 所有的sql命令都需要以 ; 来结尾


DDL: Data Definition Language 数据定义语句


  create alter drop truncate


 create :新建
    新建用户:
      create user 用户名 identified by 口令;
    新建表:Table
      create table 表名(
列名1 数据类型,
列名2 数据类型,
....
        列名x 数据类型
      );
      * 定义表中的列时: 列与列之间用 , 隔开
         最后一个列之后不要用 ,
      * 任何一张表,必须满足第一范式
          第一范式: 不能出现重复的列名
     
     Exec: 
        创建一个学生表students :
  学号sid 姓名sname 年龄age 性别gender 生日birth
       create table students(
sid number,
sname varchar2(10),
        age number(2),
gender varchar2(2),
  birth date
       );
 
 alter :修改
       修改用户密码:
       alter user 用户名 identified by 口令;
       修改表的结构:
       
        新增列:
       alter table 表名 add(新列名1 类型,新列名2 类型...);
        删除列:
       alter table 表名 drop column 列名;
        修改列的类型:
       alter table 表名 modify 列名 新类型;
修改列名:
       alter table 表名 rename column 原列名 to 新列名;
        修改表名:
       alter table 表名 rename to 新表名;  






 drop :删除
     删除用户:  
        drop user 用户名 cascade;
     删除表:
        drop table 表名;
        * 一个用户下可以有多个表,但是表名不能重复
   
   * drop 命令如果用来删除表,表的结构和表中数据会被存放在系统回收区中,表原先占有的内存空间没有被释放,可以恢复;
    (可以通过闪回机制来恢复数据)
   * 如果想要通过drop命令来完全删除表,那么需要加上purge命令
      drop table 表名 purge;


 truncate :截断
      truncate table 表名;
   * 截断表:保留表的结构,释放表中数据所占有的内存空间
   



? 请简述drop和truncate的区别




DML: Data Maniputlation Language 数据操纵语句
 insert  update  delete


 * 操纵的是表中的数据
 Insert :新增
insert into 表名(列名) values(列对应的值);
       * :如果列的类型是字符串,那么列值需要用'单引号
 
        * :values中的顺序必须和表名()中的顺序一致
       insert into student(birth,sid,sname,gender) 
    values('12-2月 1990',2000,'小红','女');


 Update :更新 
        不带有条件更新:
update 表名 set 列名1='列值',列名2=列值 where 条件;
带有条件的更新:
update student
set gender='女',birth='25-7月 1990'  where sname='小明';


 Delete :删除
        将表中的数据全部删除:
delete from 表名;
        带有条件的删除:
        delete from 表名 where 条件;
    
  * delete 删除表中的数据,不会释放原先占有的内存空间,可以被恢复
    


DQL: Data Query Language 数据查询语句
 Select :查询


 select * from 表名;
  查看表中所有的数据
   * 星号表示表中的所有列




DCL: Data Control language 数据控制语句
 grant 授权
   系统权限: 能够操作的用户的权利
     DBA :角色 :很多权限的集合
     create table 创建表
     create session 打开回话
     create view 创建视图
     resource 占用系统资源
    授权:
    grant  权限 to 用户名;  
      grant create session,create table,resource to et1502;
      grant dba to et1502;
    
    允许用户将自身权限复制给其他用户:
grant  权限 to 其他用户 with admin option;


   


   用户权限:能够操作用户中的一些数据对象的权利
       数据对象: 表 视图 序列 过程
insert update delete select execute执行   
    授权:
      grant 权限 on 表名 to 用户;
       将scott用户中的student的select权限给etoak:
* grant select on student to etoak;
       conn etoak/etoak
        此时,在etoak用户下就能够访问到scott.student
        select * from scott.student;
     
     用户权限的转交:
       grant 权限 on 表名 to 用户名 with grant option;

    grant select on scott.student to etoak with grant option;
     conn etoak/etoak
    grant select on scott.student to et1502;
    此时:et1502用户也能够访问scott.student表
 


 revoke 撤销:
    revoke 权限 from 用户名;
    revoke 权限 on 用户.表名 from 用户;




Exec: 
   1 创建etoak , et1502两个用户
   2 将create session ,create table ,resource 权限给etoak
     并且通过etoak 能够给et1502授create session权
   3 在管理员用户下将scott的emp表的select权限给etoak
   4 思考: 
         每次的年级考试后的排名 1... x名
  学号  姓名 单科学科 单科成绩  总成绩  名次
          *  一个学生对应一门学科有唯一的一个成绩
         如何去构建数据表?
 




TCL: Translation Control language 事务控制语句
 Commit :提交
 Rollback :回滚
 Savepoint :还原点








----------------------------------------------------------
cmd中连接上Oracle常用的命令:
host cls
change 
edit
start  @
spool 
spool off


查看表结构:
     desc 表名;

0 0