zoukankan      html  css  js  c++  java
  • 数据库作业5:SQL练习2

    一、INDEX

    建立索引(INDEX) 的目的: 加快查询速度。
    关系数据库管理系统中常见的索引:顺序文件上的索引、B+树索引、散列(hash)索引、位图索引

    1、建立索引
    语句格式:
    CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
    ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
    表名:要建索引的基本表的名字
    索引:可以建立在该表的一列或多列上,用逗号分隔
    次序:指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC
    UNIQUE:此索引的每一个索引值只对应唯一的数据记录,就是不存在重复值。
    CLUSTER:表示建立聚簇索引
    为学生-课程数据库中的Student,Course,SC三个表建立索引。Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。

    CREATE UNIQUE INDEX  Stusno ON Student(Sno);
    	CREATE UNIQUE INDEX  Coucno ON Course(Cno);
    	CREATE UNIQUE INDEX  SCno ON SC(Sno ASC,Cno DESC);
    

    2、修改索引
    语句格式:
    ALTER INDEX <旧索引名> RENAME TO <新索引名>
    修改索引名
    将SC表的SCno索引名改为SCSno

    ALTER INDEX SCno RENAME TO SCSno;
    

    3、删除索引

    语句格式:
    DROP INDEX <索引名>;
    删除索引时,系统会从数据字典中删去有关该索引的描述。
    数据字典 是RDBMS内部的一组系统表,它记录了数据库中所有定义信息,包括:关系模式定义、视图定义、索引定义、完整性约束定义、各类用户对数据库的操作权限、统计信息等。
    RDBMS在执行SQL的数据定义时,实际上就是在更新数据字典表中的相应信息。

    DROP INDEX Stusname;
    

    二、INSERT(插入数据)

    两种插入数据方式:
    1、插入元组
    2、插入子查询结果 (可以一次插入多个元组)

    1、插入元组

    语句格式:
    INSERT
    INTO <表名> [(<属性列1>[,<属性列2 >…)]
    VALUES (<常量1> [,<常量2>]… );
    实现将新元组插入指定表中

    其中;
    INTO子句
    (1)指定要插入数据的表名及属性列
    (2)属性列的顺序可与表定义中的顺序不一致
    (3)没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致
    (4)指定部分属性列:插入的元组在其余属性列上取空值
    VALUES子句 提供的值的个数和类型必须与INTO子句匹配
    将一个新学生元组(学号:201215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。

     INSERT
     INTO  Student (Sno,Sname,Ssex,Sdept,Sage)
     VALUES ('201215128','陈冬','男','IS',18);
    

    插入一条选课记录( ‘200215128’,'1 ')

      INSERT
        INTO SC(Sno,Cno)
        VALUES ('201215128 ',' 1 '
    

    新纪录的Grade列会自动赋空值,或未指定属性列应按表定义的顺序插入
    将学生张成民的信息插入到Student表中。(INTO 子句不写属性名的情况)

            INSERT
        	INTO  Student
        	VALUES ('201215126','张成民','男’,18,'CS');
    

    三、SELECT (查询)

    语句格式

    SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>] …
    FROM <表名或视图名>[,<表名或视图名> ]…|(SELECT 语句)
    [AS]<别名>
    [ WHERE <条件表达式> ]
    [ GROUP BY <列名1> [ HAVING <条件表达式> ] ]
    [ ORDER BY <列名2> [ ASC|DESC ] ];

    SELECT:指定要显示的属性列
    FROM:指定查询对象(基本表或视图)
    WHERE:指定查询条件
    GROUP BY:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用聚集函数。
    HAVING:只有满足指定条件的组才予以输出
    ORDER BY:对查询结果表按指定列值的升序或降序排序

    1、查询指定列(关系代数中的投影)
    查询全体学生的学号与姓名

    SELECT Sno,Sname
    FROM Student; 
    

    选出所有属性列的方法:
    在SELECT后面列出所有列名
    用 *代表所有列名

    SELECT  Sno,Sname,Ssex,Sage,Sdept 
    FROM Student; 
    
  • 相关阅读:
    快速删除段落间多余的空行
    平时一些mysql小技巧及常识
    mysql中常用的控制流函数
    按年、季度、月分组&&计算日期和时间的函数
    Excel通过身份证获取出生年月,性别,年龄,生肖,星座,省份等信息总结归纳
    统计图表类型选择应用总结&表数据挖掘方法及应用
    EXCEL如何提取文字中包含的数字?
    一篇说尽Excel常见函数用法
    RStudio中,出现中文乱码问题的解决方案
    R-RMySQL包介绍学习
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13285175.html
Copyright © 2011-2022 走看看