SQL数据查询

91 阅读1分钟

数据查询是关系运算理论在SQL中的主要体现。在数据查询语句中既有关系代数特点,又有关系演算的特点。在学习时,我们要把SELECT语句和关系代数表达式联系起来考虑问题。此文就数据库试题做以总结。

SELECT句型##

在关系代数中最常用的式子是下列表达式:
这里写图片描述

针对上述表达式,SQL为此设计了SELECT—FROM—WHERE句型:

SELECT A1,A2,...,An        /*查询*/
FROM R1,R2,...,Rn          /*从哪里查询*/
WHERE F                    /*查询条件*/

例:求男生学生的总人数和平均年龄

SELECT COUNT(*), AVG(AGE)
FROM S
WHERE SEX='M';
  • 连接查询
SELECT S.SNO,SNAME
FROM S,SC
WHERE S.SNO=SC.SNO AND CNO='C2';
  • 嵌套查询
SELECT SNO,SNAME
FROM S 
WHERE SNO IN (SELECT SNO
              FROM SC
              WHERE CNO='C2');

SELECT语句完整句法

SELECT TNO, C.CNO, COUNT(SNO)
FROM C, SC
WHERE C.CNO=SC,CNO
GROUP BY TNO, C.CNO            /*分组*/
    HAVING COUNT(*)>50         /*组条件子句,count(*)其中*代表表所有列的简写*/
ORDER BY 3,TNO, C.CNO DESC ;    /*排序ASC升序,DESC降序*/

数据插入

INSERT INTO S(SNAME,AGE,SEX)
VALUES('LIU','21'.'W');

连续插入三个元组

INSERT INTO SC
VALUES ('S1','C1',85),
       ('S2','C2',95),
       ('S3','C4',84);

数据修改

把C5课程的课程名改为SHUXUE

UPDATE C
SET CNAME='SHUXUE'
WHERE CNO='C5';

当C4课的成绩低于该门课程平均成绩时,提高5%

UPDATE SC
SET SCORE=SCORE*1.05
WHERE CNO='C4'
  AND SCORE<(SELECT AVG (SCORE)
             FORM SC
             WHERE CNO='C4');

视图的创建

创建视图V-SC,视图包括学号,姓名,课程号,课程名,分数

GREATE VIEW V-SC (SNO,SNAME,CNO,CNAME,SCORE)
  AS SELECT S.SNO,SNAME,CNO,CNAME,SCORE
     FROM S,C,SC
     WHERE S.SNO=SC.SNO AND C.CNO=SC.CNO;

数据库第四道设计题,差不多就概括为这些,20分加油!