数据库系统其一:视图及数据查询

       视图

        视图是从一个或几个基本表(或视图)导出的表。它是一个虚表,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的表中。比如我们有个“个人资料”的视图,就是由“账号”表的“个人账号”+“个人描述”表里的“个人说明”、“故乡”、“所在地”构成(因为在记录条数上亿或更多的情况时,如果都放在一张表里,表里字段很多,使用InnoDB时在查询时会花费很多时间,InnoDB的读性能并不是很好,而且在分布式数据库中,如果单表字段过多,记录条数又多,可能会导致仅仅一个表就会拆分在多个服务器上,会增加数据库读写时间)。

        

      数据库查询

1、用户可以通过指定别名来改变查询结果的列标题:

    SELECT Sname NAME,‘Year of Birth:’ BIRTH, 2016-Sage BIRTHDAY,

            LOWER(Sdept) DEPARTMENT

      FROM Student;

2、谓词IN

    SELECT Sname,Ssex

    FROM Student

    WHERE Sdept IN (’QQ‘,'wechat');

3、谓词LIKE,%表示任意长度,_表示任意单个字符:

    SELECT Sname

    FROM Student

    WHERE Sname NOT LIKE '王%';//找出所有不姓王的学生姓名

4、使用ESCAPE对%_转义,例查询DB_Design课程详情:

    SELECT *

    FROM Course

    WHERE Cname LIKE 'DB\_Design' ESCAPE '\'; //表示\为换码字符

 5、查询以DB_开头,且倒数第三个字符为w的课程详情:

    SELECT *

    FROM Course

    WHERE Cname LIKE 'DB\_%w__' ESCAPE '\';

 

6、涉及空值的查询:

      SELECT *

      FROM SC

    WHERE Grade IS NULL;//查询选了课,却没参加考试的选课信息

注意:这里的 IS 不能用=代替。

 

7、查询全体学生情况,查询结果按系号升序,同一系中学生按年龄降序排列:

SELECT *

FROM Student

ORDER BY Sdept, Sage DESC; //缺省值为ASC升序

对于空值,若按升序排,含空值的元祖在最后显示,DESC则相反。

 

8、查询选修了课程的学生人数:

    SELECT COUNT( DISTINCT Sno)

    FROM SC;

 

9、查询学号为201620301的学生的总学分:

    SELECT SUM( Ccredit)

    FROM SC, Ccourse

    WHERE Sno='201620301' AND  SC.Cno=Ccourse.Cno;

 

10、求各个课程号及对应的选课人数:

    SELECT Cno, COUNT(Sno)

    FROM SC

    GROUP BY Cno;//Cno相同的为一组

 

11、查询选修了3门以上课程的学生学号:

    SELECT Sno

    FROM SC

    GROUP BY Sno HAVING COUNT( *) >3;

转载于:https://my.oschina.net/u/2009816/blog/731900

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值