oracle基础入门知识

来源:互联网 发布:淘宝店如何实名认证 编辑:程序博客网 时间:2024/05/22 00:08

1、Oracle连接: 用户  conn/@数据库名

 2、文件操作命令:

                       (1)说明:运行sql脚本

                         SQL>@  D:\a.sql  或者  SQL>START   D:\a.sql                  

          (2)edit:该命令可以编辑指定的sql脚本

           SQL>edit d:\a.sql 

        3spool:该命令可以将sql*plus屏幕上的内容输出到指定文件中去

           SQL>spool d:\b.sql 并输入SQL>spool off

3、设置长宽命令:

   1linesize【设置显示行的宽度,默认是80个字符】

   2pagesize【设置每页显示的行数目,默认是14

     SQL>show linesize

     SQL>set linesize 90

4、清屏:clear


 


一、创建用户:

   需要dba才能使用   resource创建表

如:添加小明新用户

SQL>connect syetem/mannger

SQL>create user xiaoming identified by m123

:密码必须是字母开头

create user“创建” identified by“由...鉴定”


 二、修改密码 (自己修改自己密码直接password,修改其他用户需要dba权限)


SQL>alter user用户名 identified by新密码;(其他用户)

SQL>password m1234;(自己)


 


三、删除用户(其他用户删除需要dropuser权限)

SQL>drop user xiaoming cascade


 

四、权限:


  1.系统权限:用户对数据库的权限          


  2.对象权限:用户对其他用户的数据对象操作的权限

 (数据对象:表、存储过程、触发器、视图...

 grant:授予         revoke:收回

SQL>grant select on emp to xiaoming

SQL>revoke select on emp from xiaoming


 3.角色:connect dba  resource(创建)

角色分为两部分:预定义角色和自定义角色


 4.对权限维护:

如:希望xiaoming用户可以去查询scottemp/还希望小明可以把这个权限继续给别人(传递)

 1)如果是对象权限,就加入with grant option ,但是不能授予角色

SQL>conn scott/m123

SQL>grant select on emp to xiaoming with grant option

 2)如果是系统权限

  systemxiaoming权限时:

  SQL>grant connect to xiaoming with admin option

 *3)如果scottxiaomingemp表的查询权限回收,xiaohong也会收回权限;对象权限级联回收


 


五、使用profile管理用户口令(dba权限)


   1.账户锁定(用户最多输入密码次数,锁定时间)


如:指定xiaoming最多3次尝试登陆,锁定时间2


(格式:SQL>create profile 创建规则名称limit failed_login_attempts 次数 password_lock_time 时间;


SQL>alter用户名 profile创建规则名称;)


SQL>create profile aaa1 limit failed_login_attempts 3 password_lock_time 2


SQL>alter user xiaoming profile aaa1


注:输错3次以后再正确输入还是无法进入


   2.账户解锁


SQL>alter user用户名 account unlock


   3.终止口令(让用户定期修改密码)


如:给xiaoming创建profile文件,要求用户每隔10天要修改登录密码,宽限期2


SQL>create profile myprofile password_life_time 10 password_grace_time2;


SQL>alter user xiaoming profile myprofile


   4.口令历史(不能使用以前用过的密码)


  1)建立profile


SQL>create profile myprofile password_life_time 10 password_grace_time 2password_reuse_time 10;


 password_reuse_time:口令可重用时间10天”


   (2)分配给某个用户


  3)删除profile


SQL>drop profile myprofilecascade


 


***第六章、表的管理


   1、表创建条件


      .必须以字母开头


      .长度不能超过30字符


      .不能使用orcale的保留字(如:oracle


   2、字符型


     .char           定长  最长2000字符(查询速度快)


     .varchar220 变长  最大4000字符(节省空间)


     .clob           字符型大对象,最大4G


   3、数字类型


      number 范围:-1038次方~1038次方


      number5,2):一个小数有5为有效数,2为小数


      number5):一个5位整数


   4、日期类型


      date       包含年月日和时分秒


      timestamp  精确十分高


      to_char    时间格式转换


      to_date    字符串与时间互换


   5、图片


      blob   二进制数据 可以存放图片/声音 4G


(一般图片和声音不放在数据库里,如果要求保密性高就将图片存储路径存在数据库里)


   6、创建表


  查看表:desc student


  查看数据库中所有的表:


    a.select * from all_tables;系统里有权限的表


    (表名 selecrt table_name fromall_tables)


    b.select * from dba_tables;系统表


    c.select * from user_tables;当前用户下的表(当表过多时,不要操作此步骤)


如:学生表


  SQL>create table student


  xh       number4),-学号


  xm       varchar220),-姓名


  sex      char-性别


  birthday date-出生日期


  sal      number7,2),奖学金


  );


班级表


  SQL>create table classe


  classid number2),=


  cname  varchar


  );


  1)添加字段


SQL>alter table student add (classid number(2));


   (2)修改字段的长度


SQL>alter table student modify (xm varchar2(30));


   (3)修改表的名字


SQL>rename student to stu


  4)添加数据


日期:日-- 如:03-5-2005


修改命令:SQL>alter session set nls_date_format='yyy-mm-dd';


修改后:SQL>insert into student values ('A002'、’MIKE‘、‘男’、‘1997-08-18,10’);


查询时间:select to_char(sysdate,'yyyy-mm-dd') from dual;   


5)插入空值


SQL>insert into studentxhxmsexbirthdayvalues3,‘aa’,‘女’,null);


SQL>select * from student where birthday is null


   6)改字段


SQL>update student set sal=‘女’ where xh=A001’;


SQL>update student set sal=‘女’,classid=5 where xh=A001’;


    7)删除数据


SQL>delete from student;(写日志,可以恢复,恢复速度慢)


恢复数据:SQL>savepoint保存点;(设置保存点,保存点个数无限制)


         SQL>rollback to 保存点;(回到保存点)


SQL>drop table student;(删除表的数据和结构)


SQL>truncate table student(表结构还在,不写日志,无法恢复,删除速度快)


 


***第七章、表的查询


   1、查看表:desc表名;


   2、查询表:


SQL>select 列名 from表名;(查询速度快,查询指定的列)


SQL>select * from表名;(查询速度慢)


   3、取消重复行(distinct 重复)


SQL>select distinct deptno列名 from表名;


   4、使用算术表达式


如:显示每个员工的工资


SQL>select sal*13ename from表名;


SQL>select sal*13‘年工资’,ename from表名;(修改列名表示形式)


    5、处理null值(用nvl函数)


SQL>select sal*13+nvlcomm0*13‘年工资’,enamecomm from 表名;


(显示员工的年工资,且奖金为空的用0替代,反之则用原本的数字代替)


    6、使用where语句


如:显示工资高于3000的员工


SQL>select enamesal from表名 where sal>3000;


如:查找1982.1.2入职的员工


SQL>select enamehiredate from表名 wherehiredate>2-1-1982’;


如:显示工资在20002500的员工


SQL>select ename,sal from表名 where sal>=2000 and sal<=2500;


    7、使用like操作符


 %:表示任意0到多个字符 _:表示任意单个字符


如:显示首字母为s的员工姓名和工资


SQL>select enamesal from表名 where ename likeS%’;


如:显示第三个字符为大写0的所有员工的姓名和工资


SQL>select enamesal from表名 where ename like__O%';(下划线要两个)


    8、在where条件中用in


如:显示empno(编号)123,345,800.。。的员工的情况


SQL>select * from表名 where empno in123,345,800);


    9、使用is null


如:显示没有上级的员工


SQL>select * from表名 where mgr is null


    10、使用逻辑操作符号


如:查询工资高于500或是岗位为manager的员工,同时满足他们的姓名首写字母为大写的


SQL>select * from表名 wheresal>500 or job=manager’)andenamelikeJ%’);


    11、使用order by


如:如何按照工资的从高到低的顺序显示员工的信息


SQL>select * from emp order by sal desc


如:按照部门号升序而员工的工资降序排列


SQL>select * from emp order bydeptno ascsal desc


    12、使用别名排列


SQL>select namesal*12“年薪” from emp order by“年薪”;


    13、日期函数


months_betweendate1,date2)函数:返回两个日期之间的月份数


last_day(date):返回指定日期对应月份的最后一天


trunc(sysdate.'yyyy'):返回当年第一天


trunc(number,decimals):返回处理后的数值


number:待做处理的数值    decimal:保留小数点后的位数


如:trunc89.985,2)=89.98


注:dicaimal可以为负,表示小数点左边指定位数后面的部分截去


如:trunc(89.9845,-1)=80


 


    


七、表的复杂查询


     1、如何显示员工中最高工资和最低工资


SQL>select maxsal),minsal from emp


如:查最高工资员工的姓名


SQL>select namesal from emp where sal=selectmaxsal from emp);


SQL>select minsal),maxsal from emp


如:显示工资高于平均工资的员工信息


SQL>selcet avgsal from emp


SQL>select salname from empwhere sal>selcet avgsal from emp);


     2group byhaving语句


group by:对查询的结果分组统计(有分组函数就加)


having  :限制分组显示结果(相当于where


如:显示每个部门的平均工资和最高工资


SQL>select avgsal),maxsal),deptno from emp group by deptno


如:显示每个部门的每种岗位的平均工资和最低工资


SQL>select avgsal),minsal),deptnojob from  emp group by deptnojob


如:显示平均工资低于2000的部门号和它的平均工资


SQL>select avgsal),maxsal),deptno from emp group by deptno having avg(sal)<2000;


     3、顺序:group by - having - order by


 


八、多表查询


     1、显示雇员名,雇员工资及所在部门的名字


SQL>select a2.namea2.sal from emp a2,empt a1 where a1.deptno=a2.deptno


多表查询查询的条件:至少不能少于(表的个数-1


如:显示部门号为10的部门名、员工名、工资


SQL>select a2.name,a1.dname,a2.sal from emp a2,empt a1 wherea1.deptno=a2.deptno and a1.deptno=10; 


 


如:显示各个员工的姓名、工资、工资的级别


SQL>select a1.name,a1.sal,a2.grade from emp a1,salgrade a2 where a1.sal between a2.losal and a2.hisal;


如:显示雇员名,雇员工资及所在部门名字,并按部门排序


SQL>select a1.namea1.sala2.dname from  emp a1,empt a2 where a1.deptno=a2.deptnoorder by a1.deptno


     2、自连接:同一张表的连接查询


如:显示某个员工的领导姓名


SQL>select boss.enameworker.ename from emp workerempboss where worker.mgr=boss.empno;


     3、子查询:有多个查询在select语句


    1)单行子查询:只返回一行数据的子查询语句


如:显示与SMITH同一部门的所有员工


SQL>select * from emp where deptno=(select eptno from emp wherename='SMITH');


    2)多行子查询:返回多行数据


如:如何查询和部门10的工作相同的雇员的姓名、岗位、工资、部门号


SQL>select namesaldeptno from emp where job inselect distinct job from emp where deptno=10);


    3)多行子查询中使用all


如:显示工资比部门30所有员工的工资高的员工的姓名、工资和部门号


 aSQL>select namesaldeptno from emp where sal> allselect sal from emp where deptno=30);查询速度慢


 bSQL>select namesaldeptno from emp where sal>(selectmax(sal) form emp where deptno=30); 查询速度快


     4)多行子查询使用any


如:显示工资比部门30任意一个员工的工资高的员工的姓名、工资和部门号


SQL>select namesaldeptno from emp wheresal>(select min(sal) form emp where deptno=30);


      5)多列子查询


如:查询与smith的部门和岗位完全相同的所有员工


SQL>select * from emp where (deptno,job=selectdeptno,job from emp where eptno='SMITH'); 


      6)使用from子查询


如:显示高于自己部门平均工资的员工的信息


SQL>select a2.namea2.sal,a2.deptno,a2.maysal from emp a2,(select avg(sal) mysaldeptno from emp group by deptno a1 where a2.deptno=a1.deptno and a2.sal>a1.mysal


注:当from中使用子查询中,必须使给子查询指定一个别名


       7分页查询******重点****


 按照rownum来分


SQL>select a1.*,rownum rn from (select * from emp)a1;


a1.*:显示子查询的所有信息 rnoracel分配的行id


如:挑选前6~10


SQL>select * from (select a1.*,rownum rn from (select * from emp)a1where rownum<=10 )where rn>=6;


在上述条件下查询雇员的名字和薪水


SQL>select * from (select a1.*,rownum rn from (select namesal fromemp)a1 where rownum<=10 )where rn>=6;


如:指定查询排序,只需修改最里层的子查询


SQL>select * from (select a1.*,rownum rn from (select namesal from emporder by sal desc)a1


where rownum<=10 )where rn>=6;


       8)用查询结果创建新表


在查询旧表中导入数据到新表


SQL>create table myemp2 (id,name,sal) as select empno,name,sal from emp;


 


九、创建数据库


      1、使用工具创建 dbca(数据库配置助手)


 


十、oracel中操作数据


      1、使用to_date函数:指定插入日期的格式


SQL>insert into studentvalues('A002','MIKE',’’,to_date('1997-08-18','YYYY-MM-DD'),'10';


      2、使用子查询进行“行迁移”


SQL>insert into kkk (id,name,dept) select empo,ename,detpno from empwhere deptno=10;


说明:结合select给新表kkk插入多行数据


      3、使用update更新数据时也可以直接修改数据和使用子查询修改数据


如:希望员工scott的岗位、工资、补助与simth员工一样


SQL>update emp setjobsalcomm)=(selectjob,sal,comm from emp where ename='SMITH') where ename='scott';


      4、事务:用于保证数据的一致性,由一组dml语句组成


dml语句:增加,删除,修改(要么全部成功,反之全部失败)


        1)事务和锁


 当执行dml语句时,oracle会在被作用的表上加锁,防止其他用户改表的结构


        2)提交事务


SQL>commit;(提交事务)退出自动提交


        3)回退事务


设置保存点并回滚,有经验的管理员上班之前先做保存点,如果提交了事务,则无法回滚


        4)事务的几个操作


设置保存点:savepoint a


回滚:rollback to a


回滚到最初点:rollback


        5)只读事务(保证特定点的数据信息)


SQL>set transaction read only


 


 


十一、函数


        1、字符函数


alowerchar):字符串转为小写


bupperchar):字符串转为大写


clengthchar):返回字符串的长度


dsubstrcharmn)截取字符串的子串


m:从第几位取   n:取几位


eintsr:返回要截取的字符串在源字符串中的位置


如:将员工的名字按小写显示


SQL>select lowername from emp


如:显示员工名正好是5个字符


SQL>select * form emp where length(name)=5;


如:显示所有员工姓名前3个字符


SQL>select substrname1,3fromemp


1:从第1位取  3:取3


如:以首字母大写显示所有员工的姓名,后面字母小写


第一步:完成首字母大写


SQL>select uppersubstrname1,1 from emp


第二步:完成后面字母小写


select lowersubstrname2lengthname-1))from emp


第三步:合并


SQL>select uppersubstrname1,1|| lowersubstrname2lengthname-1))from emp


如:以首字母小写显示所有员工的姓名,后面字母大写


SQL>select lowersubstrname1,1|| uppersubstrname2lengthname-1))from emp


          2replace:替换


如:显示所有员工的姓名,用我是谁替换A


SQL>select replacename,’A’,‘我是谁’) from emp; 替换的在后面,被替换的在前面


          3、数学函数


roundnm):执行四舍五入 省掉m,则四舍五入取整数,m为正,四舍五入到小数点的


m位后,m为负,则四舍五入到小数点的m位前


truncnm:截取数字


省掉m,截取小数部分,m为正,截取到小数点的m位后,m为负,则截取到小数点的m位前


floor(n):返回小于或是等于n的最大整数


ceil(n) :返回大于或是等于n的最小整数


如:显示在一个月为30天的情况所有员工的日新,忽略余数


SQL>select truncsal/30),ename from emp


          4、日期函数


sysdate:返回系统时间


add_monthsdn):增加月份


如:查找入职8个月多的员工


SQL>select * from emp where sysdate>add_months(hirdate,8);


如:查询员工到公司入职的天数


SQL>select sysdate-hirdate‘入职天数’from emp


last_dayd):返回指定日期所在月份的最后一天


如:找出入职各月倒数第三天的所有员工


SQL>select hirdateename from emp where last_day(hirdate)-2=hirdate


        5、转换函数:数据类型转换


如:create table a1id int);


insert into a1 values(‘10’); oracle会自动转换为10,隐形转换


create table a2 (id varchar(10));


insert into a2 values(1);


        6to_char:转换字符串


如:日期显示 分/


SQL>select enameto_char(hirdate,'yyyy-mm-dd h0h24:mi:ss') from emp;


如:薪水显示货币符号


SQL>select ename,to_char(sal,'L99,999.99') from emp;


L:本地货币(oracle用的语言)


99999.99:表示工资格式


例:2,456.34


C:数字前加国际货币字符


如:显示1980年入职的员工


SQL>select * from emp where to_char(hirdate,'yyyy')=1988;


to_date:日期格式转换


         7sys_context:系统函数


如:当前使用哪个数据库


SQL>select sys_context('userenv','db_name') from dual;


userenv:固定不变的


 


 


 


十二、数据库系统


        1、数据库管理员


职责:(1)安装和升级数据库


     2)建库、表空间、表、视图、索引


     3)制定并实施备份与恢复计划


     4)数据库权限管理,调优,故障排除


     5)对于高级dba,要求能参与项目开发,会编写sql语句、存储过程、触发器、规则、约束、包


        2syssystem的区别


       sys:基表存储和动态视图都存放在sys中,sys权限拥有dbasysdbasysoper角色或权限,必须以as sysdbaas sysoper形式登陆


       system:权限拥有dbasysdba角色或权限


       sysoper:不能创建数据;只能完全恢复,不能部分恢复,不能查看用户数据


shutdown:关闭       starup:启动


         2、管理初始化参数


管理初始化参数:用于设置实例或是数据库的特征


show parameter:显示初始化参数


         3、数据库的逻辑备份和恢复


        逻辑备份:使用工具export将数据对象的结构和数据导出到文件的过程


        逻辑恢复:当数据库对象被误操作而损坏后使用工具import利用备份的文件把数据对象导入到数据库的过程


        物理备份:在数据库open的状态下也可关闭数据库进行,但是逻辑备份与恢复只能在open状态下进行


       userid:用于指定执行导出操作的用户名、口令、连接字符串


       tables:指定表


       owner:指定方案


       full=y:用于指定执行导出操作的数据库


       inctype:指定导出操作的增量类型


       rows:指定执行导出操作是否要导出表中的数据


       file:用于指定导出文件名


       4、导出:导出表,导出方案,导出数据库


使用exp命令,oracle目录的bin目录下导


        1)导出自己的表


exp userid=用户名/密码@数据库名 tables=(表名) file=存储地点


如:exp userid=scott/ad@mysql tables=(emp) file=d:emp.dmp


 注:当进行数据库备份时,一定确认是表在数据库,如果出现12541错误就在“Oracle Net Configuration Assistance”进行重新配置监听程序


SQL> select name from v$database;查询数据库名


         (2)导出其他方案的表


exp userid=system/manager@maysql table (scott.emp) file=d:\kk.dmp


         (3)导出表结构


如:exp userid=scott/ad@mysql tables=(emp) file=d:emp.dmp rows=n


         (4)使用直接导出:速度快


如:exp userid=scott/ad@mysql tables=(emp) file=d:emp.dmp rows=n direct=y


direct=直接路径


         5)导出方案


           a)导出自己的方案


exp scott/ad@mysql owner=scott file=d:scott.dmp


           b)导出其他的方案


exp system/ad@mysql owner=scott file=d:\system.dmp


         6)导出数据库


(时间长,dbaexp_full_datebase权限)


exp system/ad@mysql full=y inctype=complete file=d:\system.dmp


inctype=complete :增量备份


          5、导入数据库(工具imprt


         1)导入自己的表


imp userid=scott/ad@mysql tables=(emp) file=d:emp.dmp


         2)导入表到其他用户


imp userid=system/daili123@xiaoming tables=(emp) file=d:\system.dmp touser=scott


         3)导入表的结构


imp userid=system/daili123@xiaoming


         4)导入数据


imp userid=system/daili123@xiaoming tables=(emp) file=d:\emp.dmp ignore=y


ignore=y:忽略建表错误


          6、导入方案


         1)导入自己的方案


imp userid=system/daili123 file=d:\a.dmp


         2)导入其他方案


imp userid=system/daili123 file=d:\d.dmp fromuser=system touser=scottfromuser=system touser=scott:从哪个用户到另一个用户


          7、导入数据库


imp userid=system/daili123 full=y file=d:\a.dmp


          8、数据字典和动态性能视图


          1)数据字典:提供数据库一些系统信息,只读和视图的集合,由存放静态数据和动态数据组成


数据字典视图:user_xxx,all_xxx,dba_xxx


user_tables:显示当前用户可以访问的所有表,只返回用户所对应方案的所有表


all_tables:显示当前用户拥有的所有表,只返回用户所对应方案的所有表,还返回当前用户可以访问的其他方案的表


dba_tables:显示所有方案拥有的数据库表,必须要有dba权限


dba_users:显示所有数据库用户的详细信息


Dba_sys_privs:用户具有的系统权限


Dba_tab_privs:用户具有的对象权限


Dba_role_privs:用户具有的角色


  1. 查询一个角色包含的权限?

    A、一个角色包含的系统权限

     Select * from dba_sys_privs wheregrantee=’角色名’;

    或者select * from role_sys_privs whererole=’角色名’;

    B、一个角色包含的对象权限

    Select * from dba_tab_privswhere grantee=’角色名’;

  2. oracle有多少角色?

     Select * from dba_roles;

  3. 查看某个用户包含哪些角色?

    Select * from dba_role_privs where grantee=’用户名’;

  4. 显示当前用户可以访问的所有数据字典视图

    Select * from globa1_name;

             2)动态性能视图:记载了例程启动后的活动信息

     


  1. 管理表空间和数据文件

              1、表空间:数据库的逻辑组成部分,包括段、区、块

    作用:减少数据库占用的磁盘空间;Dba将不同类型放到不同位置,有利于i/o性能,同时利于备份和恢复等管理操作。

    (有经验的管理员单独储存索引、触发器)


  1. 建立表空间(create tablespace

  2. 建立数据表空间(不能超过500m

     

             Create tablespace表空间名 datefile ’存储路径’ size 表空间大小 uniform size 区大小;

             4、使用数据表空间

    Create table 表名(deptno number2),dnamevarchar220))tablespace表空间名;

             5、改变表空间的状态

               1)使表空间不可用

    Alter tablespace 表空间名 offline

               2)使表空间联机

    Alter tablespace 表空间名 online

               3)只读表空间名

    Alter tablespace 表空间名 read only;只读

    Alter tablespace 表空间名 read write;可读可写

             6、删除表空间

    Drop tablespace ‘表空间名’including contents and datefiles

    注:including contents:删除空间的所有数据库对象

         Datefiles:将数据库文件删除

              7、扩展表空间

               1)增加数据文件

    Alter tablespace 表空间名 add datefile‘存储路径’ size 大小

               2)增加数据文件大小

    Alter tablespace 表空间名 add datefile‘存储路径’ resize 大小

               3)设置文件的自动增长

    Alter tablespace 表空间名 add datefile‘存储路径’ autoxtenton next 10m  maxresize  500m

              8、移动数据文件(磁盘毁坏,但是数据文件不在坏磁道上)

               1)确定数据文件所在的空间

    Select tablespace_name from dba_date_files where file_name=’存储地址’;

               2)使表空间脱机

    Alter tablespace 表空间名 offline

               3)使用命令移动文件到指定的目标位置

    Host move 数据文件地址 目标位置;

               4)执行alter tablespace命令

    Alter  tablespace表空间名 renamedatefile ‘数据文件地址’to ‘新目标位置’

               5)使表空间联机

    Alter tablespace 表空间名 online

     


  1. 维护数据

            1、数据的完整性:确保数据库的数据遵从一定的商业和逻辑规则

               1)约束:not nullunique‘唯一’、primary key‘主键’、foreign key‘外键’、check‘强制行数据必须满足的条件’

      References:从某个表的列指向另一个表的列

    如:cutstomerid char(8) references customer(customerid)

     增加not null约束:alter table goods modify goodsname not null;

      增加不重复约束:alter table customer addconstraint约束名 unique(cardid);         

     Constraint:约束

    增加客户地址:alter table custmoer add constraint约束名check(addressin ('东城','西城'));

             2)删除约束名

    Alter table 表名 drop constraint约束名;

    注:在删除主键时,如果两张表存在主从关系,要在最后加上cascade

             3)显示约束信息

    Select constraint_name,constraint_type,status,validated fromuser_constraints where table_name=’表名’;

    Select  column_nameposition fromuser_cons_columns where constraint_name=’表名’;约束列的信息

             4)列级定义

    如:字段名 number constraint 约束名 primary key

             5)表级定义

    如:Constraint 约束名 primary key(字段名)

            2、管理索引:提高数据访问性能

              1)单列索引

    Create index 索引名 on表名(列名)

              2)复合索引

    Create index 索引名 on表名(列名1,列名2

              3)使用原则

                 A、在大表上建索引才有意义

                 B、在where子句或连接条件上经常引用的列上建立索引

                 C、索引的层次不要超过4

              4)索引缺点

                 A、系统占用大约为表的1.2

                 B、在更新数据时,系统还要同时对索引进行更新,降低系统性能

             3、管理权限和角色

               1)权限:对象权限和系统权限

    系统权限:create session 连接数据库    create view 建视图····

                  A、授予用户ken权限

    Grant create sessioncreate table to ken with admin option

    系统权限不是级联回收,对象权限是级联回收

    Alter修改表结构,update修改表数据

                  B、授予列权限(对象权限)

    如:希望monkey只可以修改Scott.emp的表的sal字段

    Grant update on empsal to monkey

               2)角色:预定义角色和自定义角色

    Connectaltercreate数据库、创建数据库连接

    Resource:比connect大,可以无限创建表空间

    Dba:没有启动和关闭数据库的功能,其他基本都包含

               A、建立角色(不验证)

    Create role 角色名 not identity

               B、建立角色(数据库验证)

    Create role 角色名 identity  by  密码

               C、给角色授权(自定义角色)

    dba给角色连接数据库的权限-用普通用户给角色授予查询表的权限-授予角色你所需要的权限

               D、授予自定义角色给用户

    Grant 角色名 to用户 (with adimn option:继续传递)

    Drop role 角色名(如果角色删除,则用户拥有的权限也消失)



原创粉丝点击