SQL 学习之四

使用SQL管理用户和安全:

                     管理数据库用户管理过程:创建用户,create  user  user_id 

                                                                                          identified  by  [password  |  externally ]

                                                                                          [default    tablespace  tablespace_name]  [temporary  tablespace  tablespace_name]

                                                                                          [quota  (integer ( K|M)  |   UNLIMITED )   on  tablespace_name ]

                                                                                          [profile   profile_type ]

                                                                                          [password  expire  |   account [lock  |  unlock  ] ];

                                                                    授权: grant priv1 【 ,priv2】  to  username  | rol  [, username]  ;收回权限:revoke  priv1 [,priv2]  from  username。

                                                           创建规划:create schema   [schema_name ]  [user_id ]

                                                                                                             [ default  character   set  charactor_set ]

                                                                                                             [  path schema_name  [,schema_name ]]

                                                                                                             [ schema_name  list];

                                                         删除规划:drop  schema  schema_name {  restrict  |   cascade };

                                                         调整用户:重置密码:update  mysql.user  set  password  =  PASSWORD('  NEW  PASSWORD ')

                                                                                                 where   user =  ‘username ’;

                                                                             改变用户名:rename user  old_username  to  new_username ;

                                                        用户会话:连接和断开数据库:connect   TO  default |  string1 [as string2 ] [user  string3]

                                                                                                                disconnect   default | current | all  | string

                                                                                                                 set connection  default | string

                                                         禁止用户访问:修改用户密码、从数据库删除用户账户、撤销分配给用户的相应权限。有些时候删除用户:drop user user_id [cascade];

管理数据库安全:

                           用户管理就是创建用户账户、删除用户账户、跟踪用户账户在数据库的行为的过程。用户的权限通过GRANT分配,通过REVLKE命令撤销,分为系统权限和对象权限。

                     系统权限:创建、删除数据库,创建、删除用户账户,创建、删除、修改数据库对象,创建、删除、修改数据库的状态以及其他会对数据库造成重要影响的操作。不同的数据库的常见的系统权限是不同的,见《SQL入门经典》第四版,page 221。

                     对象权限:ANSI标准,usage,select,insert,update,reference。

                      控制用户访问:grant  privalege1 [, privalege2 ……] [on  object ]  to  username [with grant option| admin option];

                                                   revoke privalege1 [ , privalege2……]  [grant   option   for ]  on  object from user {restrict  |  cascade};

                                                   如果需要,可以控制对单独字段的访问。数据库账户PUBLIC :  GRANT  PRIVALEGE  ON  COLUMN OR  OTHERS  TO  PUBLIC。

                      权限组:能更方便的给用户授予和撤销权限。包含connect、 resource、 dba。权限组授予用户的范例:GRANT   DBA  TO  USER1。

                      通过角色控制权限:其在创建时没有任何实际的价值,可以被指派给用户或者其他的角色。create/drop/set    role  role_name。向角色授予权限和向用户授予权限是一样的。

  创建和使用视图及其异名:

                     视图其实就是一个用来预查询的表。可以包含表的全部或者部分记录,可以由一个或者多个表创建。它不占用物理空间。使用视图可以简化数据访问、可以作为一种安全形式、维护摘要数据等等。

                   创建视图:create [ recursive ]   view  view_name  [column_name [ , column_name ] ]  [of  udt name [under  table_name ]  [ ref if  column_name system genetated  | user  generrated derived  ] [ column_name with options scope table_name ] ]  as { select statement }  [ with [cascade | local ]   check  option ];

                   从表创建视图:  create   view   view_name  as  select    *  |  column1  [,column2]  from  table_name  where expression1  [ , expression2 ]  
                                                   [with  check  option ]  [group  by ] ;

                   从多个表创建视图:  create    view    view_name    as

                                                        select  * |  column1 [, column2 ]

                                                        from  table_name1 [ , table_name2 ] [ , table _name 3 ]

                                                         where table_name1  = table_name2

                                                        [and  table_name1 =  table_name3]

                                                        [expression1 ]  [  ,  expression2]

                                                        [with  check option ] [ group by ] 。

                   从视图创建视图:  create view  from  view_name ;    从上一级视图创建的视图,在上级视图被删除的情况下是不可用的。

                   with check option :目的在于确保insert 和update 语句满足条件。with check option本身有两个选项:cascaded (涉及到检查底层)和 local 。

                   通过视图更新数据:在一定的条件下,视图底层的数据可以更新。视图不包含结合、GROUP BY 语句、不包含union语句、不包含ROWNUM的任何字段的应用、视图不包含任何组函数、不能使用dinstinct 语句,注意where嵌套子句的引用。在视图里插入记录,删除记录需要注意,语法和操作表的语法基本一致。

                    从视图创建表;create table table_name as

                                            select { * |  column1 ,column2 …… }

                                             from  view_name 

                                             [where  condition1  [ , condition2 ] ]

                                            [ order by ] ;  注意视图与ORDER BY  语句的混合使用。见page 238.

                   删除视图; drop view  names.

                   关于异名:异名是表或者视图的别名。 由DBA或个人用户管理。

                                       创建异名:create  synonym cust  for  customer_tbl ;  删除异名: drop  synonym cust。

 使用系统目录(表和视图的集合,注意其创建) ;

                     一般包含用户账户和默认设置、权限和其他安全信息、性能统计、对象大小估计、对象变化、表结构和存储、数据库其他信息、用户会话、审计信息、内部数据库设计、数据库文件的设置。

                 SQL 学习之四_第1张图片  内容一般会被划分为一般的逻辑组。

                                   查询系统目录:select  *  from systables

                                                              go.              

                          

                             

                                                 

你可能感兴趣的:(SQL 学习之四)