学习笔记——DB的SQL

一、SQL概述

1.特点

        结构化查询语言(Structured Query Language,SQL)是关系数据库的标准语言,也是一个通用的、功能极强的关系数据库语言。其功能不仅仅是查询,而是包括数据库模式创建、数据库数据的插入与修改、数据库安全性完整性定义与控制等一系列功能。

        SQL集数据查询(data query)、数据操纵(data manipulation)、数据定义(data definition)和数据控制(data control)功能于一体,其主要特点:

            1)综合统一:数据库系统的主要功能是通过数据库支持的数据语言来实现的。语言风格统一。
            2)高度非过程化:用SQL进行数据操作时, 只要提出“做什么” , 而无须指明“怎么做” , 因此无须了解存取路径。

                                     存取路径的选择以及SQL的操作过程由系统自动完成。大大减轻了用户负担,且有利于提高数据独立性。

           3)面向集合的操作方式:都是针对集合操作。

           4)以同一种语法结构提供多种使用方式:SQL既是独立的语言, 又是嵌入式语言。 

           5)语言简洁,易学易用。

           

2.模式结构

        支持SQL的关系数据库管理系统同样支持关系数据库三级模式结构。其中外模式包括若干视图(view)和部分基本表(base table),模式包括若干基本表,内模式包括若干存储文件(stored file)。

        用户可以用SQL对基本表和视图进行查询或其他操作, 基本表和视图一样, 都是关系。

        基本表是本身独立存在的表, 在关系数据库管理系统中一个关系就对应一个基本表。一个或多个基本表对应一个存储文件, 一个表可以带若干索引, 索引也存放在存储文件中。
        存储文件的逻辑结构组成了关系数据库的内模式。 存储文件的物理结构对最终用户是隐蔽的。

        视图是从一个或几个基本表导出的表。 它本身不独立存储在数据库中, 即数据库中只存放视图的定义而不存放视图对应的数据。 这些数据仍存放在导出视图的基本表中, 因此视图是一个虚表。 视图在概念上与基本表等同, 用户可以在视图上再定义视图。


二、学生—课程数据库

以学生-课程数据库为例来学习SQL的数据定义、 数据操纵、 数据查询和数据控制语句。

1.数据库

首先要定义一个学生-课程模式S-T。

学生-课程数据库中包括以下三个表:

                学生表: Student(Sno,Sname,Ssex,Sage,Sdept)
                课程表: Course(Cno,Cname,Cpno,Ccredit)
                学生选课表: SC(Sno,Cno.Grade)

                

2.数据定义

SQL的数据定义功能包括模式定义、 表定义、 视图和索引的定义:

模式定义:CREATE SCHEMA<模式名> AUTHORIZATION <用户名〉;

模式删除:DROP SCHEMA 模式名xCASCADE | RESTRICT>; 其中CASCADE和RESTRICT两者必选其一。选择了 CASCADE (级联),表示在删除模 式的同时把该模式中所有的数据库对象全部删除;选择了 RESTRICT (限制),表示如果该模式中已经定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。

基本表定义:建立一个“课程”表Course

CREATE TABLE Course

    (Cno CHAR(4) PRIMARY KEY,                   /*列级完整性约束条件,Cno是主码*/

    Cname CHAR(40) NOT NULL,                   /*列级完整性约束条件,Cname不能取空值*/

    Cpno CHAR(4),                                           /* Cpno的含义是先修课*/

    Ccredit SMALLINT,

    FOREIGN KEY (Cpno) REFERENCES SC(Cno)  /*表级完整性约束条件,Cpno是外码,被参照表是SC,被参照列是Cno */

    );

涉及的数据类型:

每一个基本表都属于某一个模式,一个模式包含多个基本表。

数据字典是关系数据库管理系统内部的一组系统表。关系数据库管理系统在执行SQL的数据定义语句时, 实际上就是在更新数据字典表中的相应信息。 在进行查询优化和查询处理时, 数据字典中的信息是其重要依据。
3.数据查询

1)基本使用

数据查询是数据库的核心操作。 SQL提供了 SELECT语句进行数据查询, 该语句具有灵活的使用方式和丰富的功能。

如查询计算机科学系全体学生的名单:   SELECT Sname FROM Student WHERE Sdept=‘CS’;

根据WHERE子句的条件表达式,从FROM子句指定的基本表、 视图或派生表中,找出满足条件的元组。
2)聚集函数

        如果指定DISTINCT短语,则表示在计算时要取消指定列中的重复值。 如果不指定DISTINCT短语或指定ALL短语(ALL为默认值) , 则表示不取消重复值。

如查询学生总人数:SELECT COUNT(*) FROM Student;
4.数据更新

数据更新操作有三种: 向表中添加若干行数据、 修改表中的数据和删除表中的若干行数据。
1)INSERT:如将学生张成民的信息插入到Student表中:INSERT into Student VALUES('201215126','张成民','男',18, 'CS');

2)UPDATE:如将学生201215121的年龄改为22岁:UPDATE Student SET Sage=22 WHERE Sno='201215121'

3)DELETE:如删除学号为201215128的学生记录:DELETE FROM Student WHERE Sno='201215128';

三、视图

       视图是从一个或几个基本表(或视图) 导出的表。 它与基本表不同, 是一个虚表。 数据库中只存放视图的定义, 而不存放视图对应的数据, 这些数据仍存放在原来的基本表中。所以一旦基本表中的数据发生变化, 从视图中查询出的数据也就随之改变了。 从这个意义上讲, 视图就像一个窗口, 透过它可以看到数据库中自己感兴趣的数据及其变化。
       视图一经定义, 就可以和基本表一样被查询、 被删除。 也可以在一个视图之上再定义新的视图, 但对视图的更新(增、 删、 改) 操作则有一定的限制。
       作用:

       1)视图能够简化用户的操作:简单清晰看数据,不用管具体的语句、存储结构等

       2)视图使用户能以多种角度看待同一数据

       3)视图对重构数据库提供了一定程度的逻辑独立性:数据库重造,用户程序不受影响。

       4)视图能够对机密数据提供安全保护:重要的数据不用出现在视图上。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值