查询,修改,授权

 

修改

Alter Table Student(

       Add Dept Varchar210 Constraint S3 UNIQUE)

Alter Table Student(

       Drop Column age)

Alter Table Student(

       Modify  age  Integer NOT NULL --列名不能修改

)

Alter Table Student(

       Add Constraint PKStudent Primary Key(S#) --只能增加表约束

)

Alter Table SC(

       Drop Constraint sc
)

Drop Table Student Cascade Constraints  ---Cascade Constraints表示删除表时同时删除该表的所有约束

选择

Select <列名表> --指定希望查看的列
From <
表名列表> --指定要查询的表
Where <
条件> --指定查询条件
Group By <
分组列名表> --指定要分组的列
Having <
条件> --指定分组的条件,必须聚集函数的比较式
Order By <
排序列名表> --指定如何排序

WHERE子句中的关系运算符:算术比较符:>, <, >=, <=, =, <>INIS NULLIS NOT NULLLIKEEXISTS

举例:

1.查询姓名的第一个字母为‘R’的学生

Select * From Student Where sname LIKE ‘R%’ //%:任意长度的字符串

2.查询男生和女生的平均年龄

Select sex, AVG(age) as Average_age From Student Group By sex

注意:除聚集函数外的属性必须全部出现在Group By子句中

3.查询人数在60以上的各个班级的学生平均年龄

Select class, AVG(age) From Student

Group By class

Having COUNT(*) > 60

4.查询不同年龄的学生人数,并返回人数在5人以上的结果

Select age, COUNT(*) as students From Student

Group By age

Having COUNT(*) > 5

联接查询

联接查询与基本查询结合:查询男学生的学号,姓名和所选的课程数,结果按学号升序排列

Select a.s#, b.sname, count(b.c#) as c_count
From student a, sc b
Where a.s# = b.s# and a.sex=‘M’
Group By a.s#, b.sname
Order By student.s#

嵌套查询

查询没有选修课程的所有学生的学号和姓名

Select s#,sname
From student
Where s# NOT IN ( select distinct s# From sc)

---上述中父查询与子查询相互独立,子查询语句不依赖父查询中返回的任何记录,可以独立执行

查询选修了课程的学生学号和姓名

Select s#, sname

From student

Where EXISTS (Select * From sc Where sc.s# = student.s#)

——上述相关子查询不可单独执行,依赖于外层查询;执行分析:对于student的每一行,根据该行的s#sc中查找有无匹配记录

联接视图

子查询出现在From子句中作为表使用

查询只选修了1门或2门课程的学生学号、姓名和课程数

Select s#, count_c#
From (Select s.s# as s#, count(sc.s#) as count_c#
        From student s, sc
        Where s.s#=sc.s#
        Group by s.s#) SC2, student
Where sc2.s# = student.s# and (count_c#=1 OR count_c#=2)

联机视图可以和其它表一样使用

 

查询结果的连接

n         查询课程平均成绩在90分以上或者年龄小于20的学生学号

*       Select s# From student where age<20
UNION
Select s#
      From (Select s#, AVG(score)
               From SC
               group by s#
               having avg(score)>90) SC2
-------UNION操作自动去除重复记录    Union All操作不去除重复记录

n         查询未选修课程的学生学号

*       Select s# From Student
Minus
Select distinct s# From SC

n         查询课程平均成绩在90分以上并且年龄小于20的学生学号

n         Select s# From student where age<20
Intersect
Select s#
    From (Select s#, AVG(score)  From SC group by s#  having avg(score)>90) SC2
----返回两个查询结果的交集

 

带有ANYALL谓词的子查询

查询其他系中比IS系任一学生年龄小的学生名单

SELECT Sname, Sage
FROM Student
WHERE Sage < ANY (SELECT Sage  FROM Student WHERE Sdept="IS" )
 AND Sdept <> 'IS'
 ORDER BY Sage DESC;

授权

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

GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4;

7:收回所有用户对表SC的查询权限

REVOKE SELECT ON TABLE SC FROM PUBLIC;

8:把用户U5SC表的INSERT权限收回

REVOKE INSERT ON TABLE SC FROM U5;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值