SQL基本语法—(视图、数据库安全与角色)

视图 

一、定义视图

      语法:

           CREATE  VIEW <视图名>  [(<列名>  [,<列名>]…)] AS  <子查询>[WITH  CHECK OPTION];

      示例:

        1、建立信息系学生的视图

             createviewIS_View as select Sno,Sname,Ssex,Sage,Sdeptfrom StudentwhereSdept='信息系';

        2、建立信息系学生的视图,并要求透过该视图进行的更新操作只涉及信息系学生

             createviewIS_View as select Sno,Sname,Ssex,Sage,Sdeptfrom StudentwhereSdept='信息系'withcheckoption;

        3、建立信息系选修了c01号课程的学生视图

             createviewIS_View (Sno,Sname,Grade)asselect  Student.Sno,Sname,GradefromStudent,SCwhereSdept='信息系'

            and Cno='c01'andStudent.Sno=SC.Sno    

 二、查询视图

       示例:

          1、在信息系学生的视图中找出年龄小于20岁的学生

               selectSno,Sname,SagefromIS_Student where Sage<</span>20;

           2、查询信息系选修了c01号课程的学生学号和姓名

               select SC.Sno,SnamefromIS_Student,SCwhere IS_Student.Sno =SC.SnoandSC.Cno='c01';

 三、更新视图

        示例:

          1、将信息系学生视图IS_Student中学号95002的学生姓名改为“刘辰”

               update IS_Studentset Sname='刘辰' whereSno= '95002';

               或 updateStudentsetSname='刘辰'whereSno='95002'ANDSdept= '信息系';

          2、向信息系学生视图IS_S中插入一个新的学生记录:95029,赵新,20岁

               insertintoIS_Student values('95029','赵新',20,'信息系');

          3、删除视图IS_Student 中学号为95029的记录

              deletefromIS_Student where Sno='95029';

              或 deletefromStudentwhereSno='95029'ANDSdept='信息系';

 四、删除视图

       语法:

          DROP  VIEW  <视图名>;

       示例:

          1、删除视图IS_View 

               dropviewIS_View;

       注:组成视图的属性列名

       I、省略:

           由子查询中SELECT目标列中的诸字段组成

       II、明确指定视图的所有列名:

          (1) 某个目标列是集函数或列表达式

          (2) 目标列为  *

          (3) 多表连接时选出了几个同名列作为视图的字段

          (4) 需要在视图中为某个列启用新的更合适的名字

数据安全性

 一、授权

        语法:

           GRANT <权限>[,<权限>]...[ON <对象类型> <对象名>] TO <用户>[,<用户>]...[WITH GRANT OPTION];

        示例:

           1、把查询Student表权限授给用户U1

                grantselecton Student to u1;

           2、把对Student表和Course表的全部权限授予用户U2和U3

                grantallprivileges on Student,Coursetou2,u3;

           3、把对表SC的查询权限授予所有用户

                grantselecton SC to public;

           4、把查询Student表和修改学生学号的权限授给用户U4

                grantselect,update(Sno)onStudent to u4;

           5、把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户

                grantinserton SC to u5 withgrant option;

 二、收回

    语法:

       REVOKE <权限>[,<权限>]...[ON <对象类型> <对象名>] FROM <用户>[,<用户>]...;

    示例:

       1、把用户U4修改学生学号的权限收回

            revoke update(Sno)onStudent from u4;

       2、收回所有用户对表SC的查询权限

            revokeselect)on SC frompublic;

       3、把用户U5对SC表的INSERT权限收回

           revokeinserton SC from u5;

数据库角色

一、 角色的创建

       语法:

          CREATE  ROLE  <角色名>

       示例:

          1、创建一个角色 R1

               createroleR1;

二、 给角色授权

       语法:

          GRANT  <权限>[,<权限>]… ON <对象类型>对象名 TO <角色>[,<角色>]             …

       示例:

         1、角色R1拥有Student表SELECT、UPDATE、INSERT权 限

               grantselect,update,insertonStudent to R1;

三、将一个角色授予其他的角色或用户

       语法:

        GRANT  <角色1>[,<角色2>]… TO  <角色3>[,<用户1>]…[WITH ADMIN OPTION]

      示例:

        1、将角色R1授予王平,张明,赵玲

             grantR1to 王平,张明,赵玲;

四、角色权限的收回

       语法:

         REVOKE <权限>[,<权限>]…ON <对象类型> <对象名> FROM <角色>[,<角色>]…

       示例:

         1、通过R1来回收王平的这3个权限

              revokeR1from 王平;

附录一:

        查 询 条 件

         谓    词

 

        

          比    较

=,>,<</span>,>=,<=,!=,<>,!>,!<</span>;NOT+上述比较运算符

 

          确定范围

 

BETWEEN AND,NOT BETWEEN AND

 

 

          确定集合

 

IN,NOT IN

 

 

          字符匹配

 

LIKE,NOT LIKE

 

          空    值

   IS NULL,IS NOT NULL

          多重条件(逻辑运算)

         AND,OR,NOT

 

                                   

 















附录二:

    以上文章中将以学生-课程数据库作为一个例子来讲解SQL的数据定义、数据操作、数据查询和数据控制语句的具体应用。

其数据表如下所示:

学生表:Student(Sno,Sname,Ssex,Sage,Sdept)

课程表:Course(Cno,Cname,Cpno,Ccredit)

学生选课表:SC(Sno,Cno,Grade)

 Student

   学  号

    Sno

   姓  名

   Sname 

   性  别

    Ssex  

   年  龄

    Sage  

  所 在 系  

    Sdept

 

200215121

 

200215122

 

200215123

 

200515125

李勇

 

刘晨

 

王敏

 

      张立  

 

 

 

      男      

20

 

19

 

18

 

       19

CS

 

CS

 

MA

 

IS

 

 

 











Course

     课程号

      Cno        

    课程名

    Cname        

      先行课

       Cpno

           学分

      Ccredit

 

      1

 

      2

 

      3

 

      4

 

      5

 

      6

 

     

      7

数据库

 

数学

 

信息系统

 

操作系统

 

数据结构

 

数据处理

 

    PASCAL语言

        5

 

 

 

        1

 

        6

 

 

        7

 

      

       

        6

                 4

 

        2

 

        4

 

              3

 

 

               4

 

        2

 

        4

 




















SC

学 号

           Sno       

课程号

           Cno

 成绩

 Grade

 

 200215121

 200215121

 200215121

 200215122

            200215122    

  1

  2

  3

  2

             3

  92

  85

  88

  90

  80

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值