SQL(3)--视图与索引

2018-10-18  本文已影响0人  zealscott

介绍数据修改的SQL语句以及视图与索引。

数据修改

三种修改方式:

  1. 修改某一个元组的值

    /* 将学生201215121的年龄改为22岁 */
    UPDATE  Student
    SET Sage=22
    WHERE  Sno=' 201215121 '; 
    
  2. 修改多个元组的值

    /* 将所有学生的年龄增加1岁 */
    UPDATE Student
    SET Sage= Sage+1;
    
  3. 带子查询的修改语句

    /* 将计算机科学系全体学生的成绩置零 */
    UPDATE  SC
    SET  Grade=0
    WHERE  Sno  IN
    (SELECT Sno
    FROM     Student
    WHERE  Sdept= 'CS' );
    

要求

删除数据

删除方式

  1. 删除某一个元组的值

    /* 删除学号为201215128的学生记录。 */
    DELETE
    FROM Student
    WHERE Sno= '201215128';
    
  2. 删除多个元组的值

    /* 删除所有的学生选课记录 */
    DELETE
    FROM SC;
    
  3. 带子查询的删除语句

    /* 删除计算机科学系所有学生的选课记录。*/
    DELETE
    FROM  SC
    WHERE  Sno  IN
    (SELETE  Sno
    FROM   Student
    WHERE  Sdept= 'CS') ;
    

空值

空值是一个很特殊的值,含有不确定性。对关系运算带来特殊的问题,需要做特殊的处理。

空值的产生

向SC表中插入一个元组,学生号是”201215126”,课程号是”1”,成绩为空。

INSERT INTO SC(Sno,Cno,Grade)
 VALUES('201215126 ','1',NULL);   
/*该学生还没有考试成绩,取空值*/
或
 INSERT INTO SC(Sno,Cno)
 VALUES(' 201215126 ','1');             
/*没有赋值的属性,其值为空值*/

将Student表中学生号为”201215200”的学生所属的系改为空值。

UPDATE Student
SET Sdept = NULL
WHERE Sno='201215200';

空值的判断

判断一个属性的值是否为空值,用IS NULLIS NOT NULL来表示。

/* 从Student表中找出漏填了数据的学生信息*/
SELECT  *
FROM Student
WHERE Sname IS NULL OR Ssex IS NULL OR Sage IS NULL OR Sdept IS NULL;

空值的约束条件

属性定义(或者域定义)中

空值的运算

找出选修1号课程的不及格的学生。

SELECT Sno
FROM SC
WHERE Grade < 60 AND Cno='1';

查询结果不包括缺考的学生,因为他们的Grade值为null。

视图

建立视图

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

基于多个基表的视图

带表达式的视图

分组视图

删除视图

查询视图

视图的作用

索引

建立索引

语句格式

CREATE [UNIQUE] [CLUSTER] INDEX <索引名> 
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);

修改索引

ALTER INDEX <旧索引名> RENAME TO <新索引名>

删除索引

删除索引时,系统会从数据字典中删去有关该索引的描述。

DROP INDEX <索引名>;
上一篇下一篇

猜你喜欢

热点阅读