文章目录

  • 3.1 SQL概述
    • 3.1.1 SQL的产生于发展
    • 3.1.2 SQL特点
    • 3.1.3 SQL的基本概念
  • 3.2 学生-课程数据库
  • 3.3 数据定义
    • 3.3.1 模式的定义与删除
    • 3.3.2 基本表的定义、修改与修改
      • 3.3.2.1 定义基本表
      • 3.3.2.2 数据类型
      • 3.3.2.3 模式与表
      • 3.3.2.4 修改基本表
      • 3.3.2.5 删除基本表
    • 3.3.3 索引的建立与删除
      • 3.3.3.1 建立索引
      • 3.3.3.2 修改索引
      • 3.3.3.3 删除索引
    • 3.3.4 数据字典
  • 3.4 数据查询
    • 3.4.1 单表查询
      • 1.选择表中的若干列
      • 2. 选择表中的若干元组
    • 3.4.2 连接查询
    • 3.4.3 嵌套查询
    • 3.4.4 集合查询
    • 3.4.5 基于派生表的查询
    • 3.4.6 SELECT语句的一般格式
  • 3.5 数据更新
    • 3.5.1 插入数据
    • 3.5.2 修改数据
    • 3.5.3 删除数据
  • 3.6 空值的处理
  • 3.7 视图
    • 3.7.1 定义视图
    • 3.7.2 查询视图
    • 3.7.3 更新视图
  • 3.8 小结

3.1 SQL概述

3.1.1 SQL的产生于发展

3.1.2 SQL特点

3.1.3 SQL的基本概念

3.2 学生-课程数据库

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

学号(Sno) 姓名(Sname) 性别(Ssex) 年龄(Sage) 所在系(Sdept)
201215121 李勇 20 CS
201215122 刘晨 19 CS
201215123 王敏 18 MA
201215125 张立 19 IS

Course

课程号(Cno) 课程名(Cname) 先行课(Cpno) 学分(Credit)
1 数据库 5 4
2 数学 2
3 信息系统 1 4
4 操作系统 6 3
5 数据结构 7 4
6 数据处理 2
7 PASCAL语言 6 4

SC

学号(Sno) 课程号(Cno) 成绩(Grade)
201215121 1 92
201215121 2 85
201215121 3 88
201215122 2 90
201215122 3 80

3.3 数据定义

#mermaid-svg-gOqO4pi3sm4v9N4l .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-gOqO4pi3sm4v9N4l .label text{fill:#333}#mermaid-svg-gOqO4pi3sm4v9N4l .node rect,#mermaid-svg-gOqO4pi3sm4v9N4l .node circle,#mermaid-svg-gOqO4pi3sm4v9N4l .node ellipse,#mermaid-svg-gOqO4pi3sm4v9N4l .node polygon,#mermaid-svg-gOqO4pi3sm4v9N4l .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-gOqO4pi3sm4v9N4l .node .label{text-align:center;fill:#333}#mermaid-svg-gOqO4pi3sm4v9N4l .node.clickable{cursor:pointer}#mermaid-svg-gOqO4pi3sm4v9N4l .arrowheadPath{fill:#333}#mermaid-svg-gOqO4pi3sm4v9N4l .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-gOqO4pi3sm4v9N4l .flowchart-link{stroke:#333;fill:none}#mermaid-svg-gOqO4pi3sm4v9N4l .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-gOqO4pi3sm4v9N4l .edgeLabel rect{opacity:0.9}#mermaid-svg-gOqO4pi3sm4v9N4l .edgeLabel span{color:#333}#mermaid-svg-gOqO4pi3sm4v9N4l .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-gOqO4pi3sm4v9N4l .cluster text{fill:#333}#mermaid-svg-gOqO4pi3sm4v9N4l div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-gOqO4pi3sm4v9N4l .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-gOqO4pi3sm4v9N4l text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-gOqO4pi3sm4v9N4l .actor-line{stroke:grey}#mermaid-svg-gOqO4pi3sm4v9N4l .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-gOqO4pi3sm4v9N4l .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-gOqO4pi3sm4v9N4l #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-gOqO4pi3sm4v9N4l .sequenceNumber{fill:#fff}#mermaid-svg-gOqO4pi3sm4v9N4l #sequencenumber{fill:#333}#mermaid-svg-gOqO4pi3sm4v9N4l #crosshead path{fill:#333;stroke:#333}#mermaid-svg-gOqO4pi3sm4v9N4l .messageText{fill:#333;stroke:#333}#mermaid-svg-gOqO4pi3sm4v9N4l .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-gOqO4pi3sm4v9N4l .labelText,#mermaid-svg-gOqO4pi3sm4v9N4l .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-gOqO4pi3sm4v9N4l .loopText,#mermaid-svg-gOqO4pi3sm4v9N4l .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-gOqO4pi3sm4v9N4l .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-gOqO4pi3sm4v9N4l .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-gOqO4pi3sm4v9N4l .noteText,#mermaid-svg-gOqO4pi3sm4v9N4l .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-gOqO4pi3sm4v9N4l .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-gOqO4pi3sm4v9N4l .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-gOqO4pi3sm4v9N4l .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-gOqO4pi3sm4v9N4l .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gOqO4pi3sm4v9N4l .section{stroke:none;opacity:0.2}#mermaid-svg-gOqO4pi3sm4v9N4l .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-gOqO4pi3sm4v9N4l .section2{fill:#fff400}#mermaid-svg-gOqO4pi3sm4v9N4l .section1,#mermaid-svg-gOqO4pi3sm4v9N4l .section3{fill:#fff;opacity:0.2}#mermaid-svg-gOqO4pi3sm4v9N4l .sectionTitle0{fill:#333}#mermaid-svg-gOqO4pi3sm4v9N4l .sectionTitle1{fill:#333}#mermaid-svg-gOqO4pi3sm4v9N4l .sectionTitle2{fill:#333}#mermaid-svg-gOqO4pi3sm4v9N4l .sectionTitle3{fill:#333}#mermaid-svg-gOqO4pi3sm4v9N4l .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gOqO4pi3sm4v9N4l .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-gOqO4pi3sm4v9N4l .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gOqO4pi3sm4v9N4l .grid path{stroke-width:0}#mermaid-svg-gOqO4pi3sm4v9N4l .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-gOqO4pi3sm4v9N4l .task{stroke-width:2}#mermaid-svg-gOqO4pi3sm4v9N4l .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gOqO4pi3sm4v9N4l .taskText:not([font-size]){font-size:11px}#mermaid-svg-gOqO4pi3sm4v9N4l .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gOqO4pi3sm4v9N4l .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-gOqO4pi3sm4v9N4l .task.clickable{cursor:pointer}#mermaid-svg-gOqO4pi3sm4v9N4l .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-gOqO4pi3sm4v9N4l .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-gOqO4pi3sm4v9N4l .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-gOqO4pi3sm4v9N4l .taskText0,#mermaid-svg-gOqO4pi3sm4v9N4l .taskText1,#mermaid-svg-gOqO4pi3sm4v9N4l .taskText2,#mermaid-svg-gOqO4pi3sm4v9N4l .taskText3{fill:#fff}#mermaid-svg-gOqO4pi3sm4v9N4l .task0,#mermaid-svg-gOqO4pi3sm4v9N4l .task1,#mermaid-svg-gOqO4pi3sm4v9N4l .task2,#mermaid-svg-gOqO4pi3sm4v9N4l .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-gOqO4pi3sm4v9N4l .taskTextOutside0,#mermaid-svg-gOqO4pi3sm4v9N4l .taskTextOutside2{fill:#000}#mermaid-svg-gOqO4pi3sm4v9N4l .taskTextOutside1,#mermaid-svg-gOqO4pi3sm4v9N4l .taskTextOutside3{fill:#000}#mermaid-svg-gOqO4pi3sm4v9N4l .active0,#mermaid-svg-gOqO4pi3sm4v9N4l .active1,#mermaid-svg-gOqO4pi3sm4v9N4l .active2,#mermaid-svg-gOqO4pi3sm4v9N4l .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-gOqO4pi3sm4v9N4l .activeText0,#mermaid-svg-gOqO4pi3sm4v9N4l .activeText1,#mermaid-svg-gOqO4pi3sm4v9N4l .activeText2,#mermaid-svg-gOqO4pi3sm4v9N4l .activeText3{fill:#000 !important}#mermaid-svg-gOqO4pi3sm4v9N4l .done0,#mermaid-svg-gOqO4pi3sm4v9N4l .done1,#mermaid-svg-gOqO4pi3sm4v9N4l .done2,#mermaid-svg-gOqO4pi3sm4v9N4l .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-gOqO4pi3sm4v9N4l .doneText0,#mermaid-svg-gOqO4pi3sm4v9N4l .doneText1,#mermaid-svg-gOqO4pi3sm4v9N4l .doneText2,#mermaid-svg-gOqO4pi3sm4v9N4l .doneText3{fill:#000 !important}#mermaid-svg-gOqO4pi3sm4v9N4l .crit0,#mermaid-svg-gOqO4pi3sm4v9N4l .crit1,#mermaid-svg-gOqO4pi3sm4v9N4l .crit2,#mermaid-svg-gOqO4pi3sm4v9N4l .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-gOqO4pi3sm4v9N4l .activeCrit0,#mermaid-svg-gOqO4pi3sm4v9N4l .activeCrit1,#mermaid-svg-gOqO4pi3sm4v9N4l .activeCrit2,#mermaid-svg-gOqO4pi3sm4v9N4l .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-gOqO4pi3sm4v9N4l .doneCrit0,#mermaid-svg-gOqO4pi3sm4v9N4l .doneCrit1,#mermaid-svg-gOqO4pi3sm4v9N4l .doneCrit2,#mermaid-svg-gOqO4pi3sm4v9N4l .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-gOqO4pi3sm4v9N4l .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-gOqO4pi3sm4v9N4l .milestoneText{font-style:italic}#mermaid-svg-gOqO4pi3sm4v9N4l .doneCritText0,#mermaid-svg-gOqO4pi3sm4v9N4l .doneCritText1,#mermaid-svg-gOqO4pi3sm4v9N4l .doneCritText2,#mermaid-svg-gOqO4pi3sm4v9N4l .doneCritText3{fill:#000 !important}#mermaid-svg-gOqO4pi3sm4v9N4l .activeCritText0,#mermaid-svg-gOqO4pi3sm4v9N4l .activeCritText1,#mermaid-svg-gOqO4pi3sm4v9N4l .activeCritText2,#mermaid-svg-gOqO4pi3sm4v9N4l .activeCritText3{fill:#000 !important}#mermaid-svg-gOqO4pi3sm4v9N4l .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gOqO4pi3sm4v9N4l g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-gOqO4pi3sm4v9N4l g.classGroup text .title{font-weight:bolder}#mermaid-svg-gOqO4pi3sm4v9N4l g.clickable{cursor:pointer}#mermaid-svg-gOqO4pi3sm4v9N4l g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-gOqO4pi3sm4v9N4l g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-gOqO4pi3sm4v9N4l .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-gOqO4pi3sm4v9N4l .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-gOqO4pi3sm4v9N4l .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-gOqO4pi3sm4v9N4l .dashed-line{stroke-dasharray:3}#mermaid-svg-gOqO4pi3sm4v9N4l #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-gOqO4pi3sm4v9N4l #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-gOqO4pi3sm4v9N4l #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-gOqO4pi3sm4v9N4l #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-gOqO4pi3sm4v9N4l #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-gOqO4pi3sm4v9N4l #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-gOqO4pi3sm4v9N4l #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-gOqO4pi3sm4v9N4l #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-gOqO4pi3sm4v9N4l .commit-id,#mermaid-svg-gOqO4pi3sm4v9N4l .commit-msg,#mermaid-svg-gOqO4pi3sm4v9N4l .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gOqO4pi3sm4v9N4l .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gOqO4pi3sm4v9N4l .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gOqO4pi3sm4v9N4l g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gOqO4pi3sm4v9N4l g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-gOqO4pi3sm4v9N4l g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-gOqO4pi3sm4v9N4l g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-gOqO4pi3sm4v9N4l g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-gOqO4pi3sm4v9N4l g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-gOqO4pi3sm4v9N4l .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-gOqO4pi3sm4v9N4l .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-gOqO4pi3sm4v9N4l .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-gOqO4pi3sm4v9N4l .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-gOqO4pi3sm4v9N4l .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-gOqO4pi3sm4v9N4l .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-gOqO4pi3sm4v9N4l .edgeLabel text{fill:#333}#mermaid-svg-gOqO4pi3sm4v9N4l .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gOqO4pi3sm4v9N4l .node circle.state-start{fill:black;stroke:black}#mermaid-svg-gOqO4pi3sm4v9N4l .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-gOqO4pi3sm4v9N4l #statediagram-barbEnd{fill:#9370db}#mermaid-svg-gOqO4pi3sm4v9N4l .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-gOqO4pi3sm4v9N4l .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-gOqO4pi3sm4v9N4l .statediagram-state .divider{stroke:#9370db}#mermaid-svg-gOqO4pi3sm4v9N4l .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-gOqO4pi3sm4v9N4l .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-gOqO4pi3sm4v9N4l .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-gOqO4pi3sm4v9N4l .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-gOqO4pi3sm4v9N4l .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-gOqO4pi3sm4v9N4l .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-gOqO4pi3sm4v9N4l .note-edge{stroke-dasharray:5}#mermaid-svg-gOqO4pi3sm4v9N4l .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-gOqO4pi3sm4v9N4l .error-icon{fill:#522}#mermaid-svg-gOqO4pi3sm4v9N4l .error-text{fill:#522;stroke:#522}#mermaid-svg-gOqO4pi3sm4v9N4l .edge-thickness-normal{stroke-width:2px}#mermaid-svg-gOqO4pi3sm4v9N4l .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-gOqO4pi3sm4v9N4l .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-gOqO4pi3sm4v9N4l .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-gOqO4pi3sm4v9N4l .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-gOqO4pi3sm4v9N4l .marker{fill:#333}#mermaid-svg-gOqO4pi3sm4v9N4l .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-gOqO4pi3sm4v9N4l {color: rgba(0, 0, 0, 0.75);font: ;}

数据定义功能
模式定义
表定义
视图定义
索引定义
操作对象 创建 删除 修改
模式 CREATE SCHEMA DROP SCHEMA
CREATE TABLE DROP TABLE ALTER TABLE
视图 CREATE VIEW DROP VIEW
索引 CREATE INDEX DROP INDEX ALTER INDEX

SQL标准不提供模式定义和修改视图定义的操作
一个关系数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下通常包含多个表、视图和索引等数据库对象。

3.3.1 模式的定义与删除

CREATE SCHEMA <模式名> AUTHORIZATION <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]

没有指定<模式名>,那么模式名隐含为<用户名>
要创建模式,调用该命令的用户必须拥有数据库管理权限,或者获得了数据库管理系统授予的CREATE SCHEMA 权限。

详情

DROP SCHEMA <模式名><CASCADE|RESTRICT>

级联(CASCADE):删除该模式的同时把所有数据库对象全部删除。
限制(RESTRICT):如果该模式下已定义数据库对象,则拒绝执行。

3.3.2 基本表的定义、修改与修改

3.3.2.1 定义基本表

create table < 表名 > (< 列名 > < 数据类型 > [ 列级完整性约束 ],[< 列名 > < 数据类型 > [ 列级完整性约束 ]]...[,<表级完整性约束条件>]);

建表的同时通常要定义域该表有关的完整性约束条件:

  1. 完整性约束条件涉及单个属性列时,定义在列级上
  2. 完整性约束条件涉及多个属性列时,定义在表级上

先创建数据库mydb

[例3.5]建立一个“学生”表Student

CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY,Sname CHAR(20) UNIQUE,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20)
)


[例3.6]建立一个“课程”表Course

CREATE TABLE Course (Cno CHAR(4) PRIMARY KEY,Cname CHAR(20) NOT NULL,Cpno CHAR(4),Credit SMALLINT,FOREIGN KEY (Cpno) REFERENCES Course (Cno)
)


[例3.7]建立学生选课表SC

CREATE TABLE SC (Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY (Sno, Cno),FOREIGN KEY (Sno) REFERENCES Student (Sno),FOREIGN KEY (Cno) REFERENCES Course (Cno)
)

3.3.2.2 数据类型

sql数据类型

考虑数据的存储也要考虑对数据的操作

3.3.2.3 模式与表

#mermaid-svg-u3UJRYVX1dmT0HOY .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-u3UJRYVX1dmT0HOY .label text{fill:#333}#mermaid-svg-u3UJRYVX1dmT0HOY .node rect,#mermaid-svg-u3UJRYVX1dmT0HOY .node circle,#mermaid-svg-u3UJRYVX1dmT0HOY .node ellipse,#mermaid-svg-u3UJRYVX1dmT0HOY .node polygon,#mermaid-svg-u3UJRYVX1dmT0HOY .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-u3UJRYVX1dmT0HOY .node .label{text-align:center;fill:#333}#mermaid-svg-u3UJRYVX1dmT0HOY .node.clickable{cursor:pointer}#mermaid-svg-u3UJRYVX1dmT0HOY .arrowheadPath{fill:#333}#mermaid-svg-u3UJRYVX1dmT0HOY .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-u3UJRYVX1dmT0HOY .flowchart-link{stroke:#333;fill:none}#mermaid-svg-u3UJRYVX1dmT0HOY .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-u3UJRYVX1dmT0HOY .edgeLabel rect{opacity:0.9}#mermaid-svg-u3UJRYVX1dmT0HOY .edgeLabel span{color:#333}#mermaid-svg-u3UJRYVX1dmT0HOY .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-u3UJRYVX1dmT0HOY .cluster text{fill:#333}#mermaid-svg-u3UJRYVX1dmT0HOY div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-u3UJRYVX1dmT0HOY .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-u3UJRYVX1dmT0HOY text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-u3UJRYVX1dmT0HOY .actor-line{stroke:grey}#mermaid-svg-u3UJRYVX1dmT0HOY .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-u3UJRYVX1dmT0HOY .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-u3UJRYVX1dmT0HOY #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-u3UJRYVX1dmT0HOY .sequenceNumber{fill:#fff}#mermaid-svg-u3UJRYVX1dmT0HOY #sequencenumber{fill:#333}#mermaid-svg-u3UJRYVX1dmT0HOY #crosshead path{fill:#333;stroke:#333}#mermaid-svg-u3UJRYVX1dmT0HOY .messageText{fill:#333;stroke:#333}#mermaid-svg-u3UJRYVX1dmT0HOY .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-u3UJRYVX1dmT0HOY .labelText,#mermaid-svg-u3UJRYVX1dmT0HOY .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-u3UJRYVX1dmT0HOY .loopText,#mermaid-svg-u3UJRYVX1dmT0HOY .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-u3UJRYVX1dmT0HOY .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-u3UJRYVX1dmT0HOY .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-u3UJRYVX1dmT0HOY .noteText,#mermaid-svg-u3UJRYVX1dmT0HOY .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-u3UJRYVX1dmT0HOY .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-u3UJRYVX1dmT0HOY .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-u3UJRYVX1dmT0HOY .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-u3UJRYVX1dmT0HOY .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u3UJRYVX1dmT0HOY .section{stroke:none;opacity:0.2}#mermaid-svg-u3UJRYVX1dmT0HOY .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-u3UJRYVX1dmT0HOY .section2{fill:#fff400}#mermaid-svg-u3UJRYVX1dmT0HOY .section1,#mermaid-svg-u3UJRYVX1dmT0HOY .section3{fill:#fff;opacity:0.2}#mermaid-svg-u3UJRYVX1dmT0HOY .sectionTitle0{fill:#333}#mermaid-svg-u3UJRYVX1dmT0HOY .sectionTitle1{fill:#333}#mermaid-svg-u3UJRYVX1dmT0HOY .sectionTitle2{fill:#333}#mermaid-svg-u3UJRYVX1dmT0HOY .sectionTitle3{fill:#333}#mermaid-svg-u3UJRYVX1dmT0HOY .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u3UJRYVX1dmT0HOY .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-u3UJRYVX1dmT0HOY .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u3UJRYVX1dmT0HOY .grid path{stroke-width:0}#mermaid-svg-u3UJRYVX1dmT0HOY .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-u3UJRYVX1dmT0HOY .task{stroke-width:2}#mermaid-svg-u3UJRYVX1dmT0HOY .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u3UJRYVX1dmT0HOY .taskText:not([font-size]){font-size:11px}#mermaid-svg-u3UJRYVX1dmT0HOY .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u3UJRYVX1dmT0HOY .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-u3UJRYVX1dmT0HOY .task.clickable{cursor:pointer}#mermaid-svg-u3UJRYVX1dmT0HOY .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-u3UJRYVX1dmT0HOY .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-u3UJRYVX1dmT0HOY .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-u3UJRYVX1dmT0HOY .taskText0,#mermaid-svg-u3UJRYVX1dmT0HOY .taskText1,#mermaid-svg-u3UJRYVX1dmT0HOY .taskText2,#mermaid-svg-u3UJRYVX1dmT0HOY .taskText3{fill:#fff}#mermaid-svg-u3UJRYVX1dmT0HOY .task0,#mermaid-svg-u3UJRYVX1dmT0HOY .task1,#mermaid-svg-u3UJRYVX1dmT0HOY .task2,#mermaid-svg-u3UJRYVX1dmT0HOY .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-u3UJRYVX1dmT0HOY .taskTextOutside0,#mermaid-svg-u3UJRYVX1dmT0HOY .taskTextOutside2{fill:#000}#mermaid-svg-u3UJRYVX1dmT0HOY .taskTextOutside1,#mermaid-svg-u3UJRYVX1dmT0HOY .taskTextOutside3{fill:#000}#mermaid-svg-u3UJRYVX1dmT0HOY .active0,#mermaid-svg-u3UJRYVX1dmT0HOY .active1,#mermaid-svg-u3UJRYVX1dmT0HOY .active2,#mermaid-svg-u3UJRYVX1dmT0HOY .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-u3UJRYVX1dmT0HOY .activeText0,#mermaid-svg-u3UJRYVX1dmT0HOY .activeText1,#mermaid-svg-u3UJRYVX1dmT0HOY .activeText2,#mermaid-svg-u3UJRYVX1dmT0HOY .activeText3{fill:#000 !important}#mermaid-svg-u3UJRYVX1dmT0HOY .done0,#mermaid-svg-u3UJRYVX1dmT0HOY .done1,#mermaid-svg-u3UJRYVX1dmT0HOY .done2,#mermaid-svg-u3UJRYVX1dmT0HOY .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-u3UJRYVX1dmT0HOY .doneText0,#mermaid-svg-u3UJRYVX1dmT0HOY .doneText1,#mermaid-svg-u3UJRYVX1dmT0HOY .doneText2,#mermaid-svg-u3UJRYVX1dmT0HOY .doneText3{fill:#000 !important}#mermaid-svg-u3UJRYVX1dmT0HOY .crit0,#mermaid-svg-u3UJRYVX1dmT0HOY .crit1,#mermaid-svg-u3UJRYVX1dmT0HOY .crit2,#mermaid-svg-u3UJRYVX1dmT0HOY .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-u3UJRYVX1dmT0HOY .activeCrit0,#mermaid-svg-u3UJRYVX1dmT0HOY .activeCrit1,#mermaid-svg-u3UJRYVX1dmT0HOY .activeCrit2,#mermaid-svg-u3UJRYVX1dmT0HOY .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-u3UJRYVX1dmT0HOY .doneCrit0,#mermaid-svg-u3UJRYVX1dmT0HOY .doneCrit1,#mermaid-svg-u3UJRYVX1dmT0HOY .doneCrit2,#mermaid-svg-u3UJRYVX1dmT0HOY .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-u3UJRYVX1dmT0HOY .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-u3UJRYVX1dmT0HOY .milestoneText{font-style:italic}#mermaid-svg-u3UJRYVX1dmT0HOY .doneCritText0,#mermaid-svg-u3UJRYVX1dmT0HOY .doneCritText1,#mermaid-svg-u3UJRYVX1dmT0HOY .doneCritText2,#mermaid-svg-u3UJRYVX1dmT0HOY .doneCritText3{fill:#000 !important}#mermaid-svg-u3UJRYVX1dmT0HOY .activeCritText0,#mermaid-svg-u3UJRYVX1dmT0HOY .activeCritText1,#mermaid-svg-u3UJRYVX1dmT0HOY .activeCritText2,#mermaid-svg-u3UJRYVX1dmT0HOY .activeCritText3{fill:#000 !important}#mermaid-svg-u3UJRYVX1dmT0HOY .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u3UJRYVX1dmT0HOY g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-u3UJRYVX1dmT0HOY g.classGroup text .title{font-weight:bolder}#mermaid-svg-u3UJRYVX1dmT0HOY g.clickable{cursor:pointer}#mermaid-svg-u3UJRYVX1dmT0HOY g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-u3UJRYVX1dmT0HOY g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-u3UJRYVX1dmT0HOY .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-u3UJRYVX1dmT0HOY .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-u3UJRYVX1dmT0HOY .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-u3UJRYVX1dmT0HOY .dashed-line{stroke-dasharray:3}#mermaid-svg-u3UJRYVX1dmT0HOY #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-u3UJRYVX1dmT0HOY #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-u3UJRYVX1dmT0HOY #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-u3UJRYVX1dmT0HOY #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-u3UJRYVX1dmT0HOY #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-u3UJRYVX1dmT0HOY #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-u3UJRYVX1dmT0HOY #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-u3UJRYVX1dmT0HOY #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-u3UJRYVX1dmT0HOY .commit-id,#mermaid-svg-u3UJRYVX1dmT0HOY .commit-msg,#mermaid-svg-u3UJRYVX1dmT0HOY .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u3UJRYVX1dmT0HOY .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u3UJRYVX1dmT0HOY .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u3UJRYVX1dmT0HOY g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u3UJRYVX1dmT0HOY g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-u3UJRYVX1dmT0HOY g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-u3UJRYVX1dmT0HOY g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-u3UJRYVX1dmT0HOY g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-u3UJRYVX1dmT0HOY g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-u3UJRYVX1dmT0HOY .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-u3UJRYVX1dmT0HOY .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-u3UJRYVX1dmT0HOY .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-u3UJRYVX1dmT0HOY .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-u3UJRYVX1dmT0HOY .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-u3UJRYVX1dmT0HOY .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-u3UJRYVX1dmT0HOY .edgeLabel text{fill:#333}#mermaid-svg-u3UJRYVX1dmT0HOY .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-u3UJRYVX1dmT0HOY .node circle.state-start{fill:black;stroke:black}#mermaid-svg-u3UJRYVX1dmT0HOY .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-u3UJRYVX1dmT0HOY #statediagram-barbEnd{fill:#9370db}#mermaid-svg-u3UJRYVX1dmT0HOY .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-u3UJRYVX1dmT0HOY .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-u3UJRYVX1dmT0HOY .statediagram-state .divider{stroke:#9370db}#mermaid-svg-u3UJRYVX1dmT0HOY .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-u3UJRYVX1dmT0HOY .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-u3UJRYVX1dmT0HOY .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-u3UJRYVX1dmT0HOY .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-u3UJRYVX1dmT0HOY .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-u3UJRYVX1dmT0HOY .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-u3UJRYVX1dmT0HOY .note-edge{stroke-dasharray:5}#mermaid-svg-u3UJRYVX1dmT0HOY .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-u3UJRYVX1dmT0HOY .error-icon{fill:#522}#mermaid-svg-u3UJRYVX1dmT0HOY .error-text{fill:#522;stroke:#522}#mermaid-svg-u3UJRYVX1dmT0HOY .edge-thickness-normal{stroke-width:2px}#mermaid-svg-u3UJRYVX1dmT0HOY .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-u3UJRYVX1dmT0HOY .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-u3UJRYVX1dmT0HOY .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-u3UJRYVX1dmT0HOY .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-u3UJRYVX1dmT0HOY .marker{fill:#333}#mermaid-svg-u3UJRYVX1dmT0HOY .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-u3UJRYVX1dmT0HOY {color: rgba(0, 0, 0, 0.75);font: ;}

模式
基本表1
基本表2
基本表n
  1. 在表名中明显给出模式名
  2. 创建模式语句中同时创建表
  3. 设置所属的模式
    当用户创建基本表(其他数据对象一样)时,若没有指定模式,系统根据搜索路径(search path)来确定对象所属的模式。
SHOW search_path;

搜索路径默认值是$user,PUBLIC:首先搜索与用户名相同的模式名,如果不存在,则使用PUBLIC模式。

SET search_path TO "模式名",PUBLIC

设置搜索路径,并使选中的模式名作为基本表所属的模式。

3.3.2.4 修改基本表

alter table < 表名 > [ ADD [ COLUMN ] < 新列名 > < 数据类型 > [ 完整性约束 ] [ ADD < 表级完整性约束 > ][ DROP [ COLUMN ] < 列名 > [ CASCADE | RESTRICT ] ]  [ DROP CONSTRAINT < 完整性约束 > [ RESTRICT | CASCADE ] ] [ ALTER COLUMN < 列名 > < 数据类型 > ] ;

3.3.2.5 删除基本表

DROP TABLE <表名> [RESTRICT|CASCADE];

3.3.3 索引的建立与删除

当表的数据量较大时,查询操作比较耗时。建立索引是加快查询速度的有效手段。
数据库索引分类:

索引 原理
顺序文件上的索引 按指定的属性值升序或降序存储的关系,在该属性上建立一个顺序索引文件
B+树索引 将索引属性组织成B+数形式,B+树的叶节点为属性值和对应的元组指针
散列索引 建立若干桶,将索引属性按照散列函数数值映射到相应桶中,桶中存放索引属性值和对应的元组指针
位图索引 位向量记录索引属性可能出项的值,每个位向量对应一个可能值

3.3.3.1 建立索引

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

3.3.3.2 修改索引

3.3.3.3 删除索引

DROP INDEX <索引名>;

3.3.4 数据字典

数据字典

3.4 数据查询

数据查询是数据库核心操作

SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>] …
FROM <表名或视图名>[, <表名或视图名> ] …|(SELECT 语句)
[ WHERE <条件表达式> ]
[ GROUP BY <列名1> [ HAVING <条件表达式> ] ]
[ ORDER BY <列名2> [ ASC|DESC ] ];
  1. 根据WHERE子句的条件表达式从FROM子句指定的基本表、视图或派生表中找出满足条件的元组;
  2. 根据SELECT子句中的目标列表达式选出元组中的属性值形成结果表;
  3. 根据GROUP BY子句中分组表达式进行分组;
  4. 根据HAVING子句中的筛选表达式选出满足指定条件的组;
  5. 根据ORDER BY子句对结果表进行升序或降序排序。

3.4.1 单表查询

1.选择表中的若干列

  1. 查询指定列

[例1] 查询全体学生的学号与姓名

-- 查询全体学生的学号与姓名
SELECT  Sno, Sname
FROM      Student;

  1. 查询全部列

[例2] 查询全体学生的姓名、学号、所在系

-- 查询全部列
SELECT  *
FROM      Student;


[例2] 查询全体学生的姓名、学号、所在系

-- 查询全体学生的姓名、学号、所在系
SELECT  Sname, Sno, Sdept
FROM      Student;

  1. 查询经过计算的值
    [例4] 查询全体学生的姓名及其出生年份
-- 查询全体学生的姓名及其出生年份
SELECT  Sname, 2021 - Sage AS 出生年份
FROM      Student;

[例5] 查询全体学生的姓名、出生年份和所在院系,要求用小写字母表示所有系名

-- 查询全体学生的姓名、出生年份和所在院系,要求用小写字母表示所有系名
SELECT  Sname, 'Year of Birth:', 2021 - Sage, LOWER(Sdept)
FROM      Student;

-- 取别名
SELECT  Sname, 'Year of Birth:' AS BIRTH, 2021 - Sage AS BIRTHDAY, LOWER(Sdept) AS DEPARTMENT
FROM      Student;

2. 选择表中的若干元组

  1. 消除取值重复的行

[例6] 查询选修了课程的学生学号

-- 消除取值重复的行
SELECT DISTINCT Sno
FROM      SC;

  1. 查询满足条件的元组
查询条件 谓词
比较 =,>,<,>=,<=,!=,<>,!>,!<;NOT+上述运算符
确定范围 BETWEEN AND,NOT BETWEEN AND
确定集合 IN,NOT IN
字符匹配 LIKE,NOT LIKE
空值 IS NULL,IS NOT NULL
多重条件(逻辑运算) AND,OR,NOT
  • 比较大小

[例8]查询计算机科学系全体学生

-- 查询计算机科学系全体学生
SELECT  Sname
FROM      Student
WHERE   (Sdept = 'CS');

[例9] 查询所有年龄在20岁以下的学生姓名及其年龄

-- 查询所有年龄在20岁以下的学生姓名及其年龄
SELECT  Sname, Sage
FROM      Student
WHERE   (Sage < 20);

[例10]查询考试成绩不及格的学生学号

-- 查询考试成绩不及格的学生学号
SELECT DISTINCT Sno
FROM      SC
WHERE   (Grade < 60);

某个学生如果多门课程不合格只显示一次。

  • 确定范围

[例11] 查询年龄在20~23岁之间的学生姓名、系别和年龄

-- 查询年龄在20~23岁之间的学生姓名、系别和年龄
SELECT  Sname, Sdept, Sage
FROM      Student
WHERE   (Sage BETWEEN 20 AND 23);

[例12] 查询年龄不在20~23岁之间的学生姓名、系别和年龄

-- 查询年龄不在20~23岁之间的学生姓名、系别和年龄
SELECT  Sname, Sdept, Sage
FROM      Student
WHERE   (Sage NOT BETWEEN 20 AND 23);

  • 确定集合

[例13]查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别

-- 查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别
SELECT  Sname, Ssex
FROM      Student
WHERE   (Sdept IN ('IS', 'MA', 'CS'));

[例14]查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别

-- 查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别
SELECT  Sname, Ssex
FROM      Student
WHERE   (Sdept NOT IN ('IS', 'MA', 'CS'));

  • 字符匹配
[NOT] LIKE '<匹配串>' [ESCAPE '<换码字符>' ]

%:代表任意长度的字符串
_ :代表任意单个字符
[例15] 查询学号为201215121的学生的详细情况

-- 查询学号为201215121的学生的详细情况
SELECT  *
FROM      Student
WHERE   (Sno LIKE '201215121');

[例16] 查询所有姓刘学生的姓名、学号和性别

-- 查询所有姓刘学生的姓名、学号和性别
SELECT  Sname, Sno, Ssex
FROM      Student
WHERE   (Sname LIKE '刘%');

[例17] 查询姓"欧阳"且全名为三个汉字的学生的姓名

-- 查询姓"欧阳"且全名为三个汉字的学生的姓名
SELECT  Sname
FROM      Student
WHERE   (Sname LIKE '欧阳__');

[例18] 查询名字中第2个字为"阳"字的学生的姓名和学号

-- 查询名字中第2个字为"阳"字的学生的姓名和学号
SELECT  Sname, Sno
FROM      Student
WHERE   (Sname LIKE '阳%');

[例19] 查询所有不姓刘的学生姓名

-- 查询所有不姓刘的学生姓名
SELECT  Sname, Sno, Ssex
FROM      Student
WHERE   (Sname NOT LIKE '刘%');


[例20] 查询DB_Design课程的课程号和学分

-- 查询DB_Design课程的课程号和学分
SELECT  Cno, Credit
FROM      Course
WHERE   (Cname LIKE 'DB\_Design' ESCAPE '\');

[例21] 查询以"DB_"开头,且倒数第3个字符为i的课程的详细情况

-- 查询以"DB_"开头,且倒数第3个字符为i的课程的详细情况
SELECT  *
FROM      Course
WHERE   (Cname LIKE 'DB\_%i__' ESCAPE '\');
  • 设计空值的查询

[例22] 某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号

-- 某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号
SELECT  Sno, Cno
FROM      SC
WHERE   (Grade IS NULL);
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210508183459665.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTk2Njg4MA==,size_16,color_FFFFFF,t_70)

[例23] 查所有有成绩的学生学号和课程号

-- 查所有有成绩的学生学号和课程号。
SELECT  Sno, Cno
FROM      SC
WHERE   (Grade IS NOT NULL);

  • 多重条件查询
    [例24] 查询计算机系年龄在20岁以下的学生姓名
-- 查询计算机系年龄在20岁以下的学生姓名
SELECT  Sname
FROM      Student
WHERE   (Sdept = 'CS') AND (sage < 20);

  1. ORDER BY子句

[例25] 查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列

-- 查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列
SELECT  Sno, Grade
FROM      SC
WHERE   (Cno = '3')
ORDER BY Grade DESC;

[例26] 查询全体学生情况,查询结果按所在系的系号升序排列同一系中的学生按年龄降序排列

-- 查询全体学生情况,查询结果按所在系的系号升序排列同一系中的学生按年龄降序排列
SELECT  Sno, Sname, Ssex, Sage, Sdept
FROM      Student
ORDER BY Sdept, Sage DESC;

  1. 聚集函数
聚集函数 作用
COUNT(*) 统计元组个数
COUNT([DISTINCT|ALL] <列名>) 统计一列中值的个数
SUM([DISTINCT|ALL] <列名>) 计算一列值的总和(此列必须为数值型)
AVG([DISTINCT|ALL] <列名>) 计算一列值的平均值(此列必须为数值型)
MAX([DISTINCT|ALL] <列名>) 求一列中的最大值
MIN([DISTINCT|ALL] <列名>) 求一列中的最小值

[例27] 查询学生总人数

-- 查询学生总人数。
SELECT  COUNT(*) AS Expr1
FROM      Student;

[例28] 查询选修了课程的学生人数

-- 查询选修了课程的学生人数。
SELECT  COUNT(DISTINCT Sno) AS Expr1
FROM      SC;


[例29] 计算1号课程的学生平均成绩

-- 计算1号课程的学生平均成绩
SELECT  AVG(Grade) AS Expr1
FROM      SC
WHERE   (Cno = '1');

[例30] 查询选修1号课程的学生最高分数

-- 查询选修1号课程的学生最高分数
SELECT  MAX(Grade) AS Expr1
FROM      SC
WHERE   (Cno = '1');


[例31]查询学生201215121选修课程的总学分数

-- 查询学生201215121选修课程的总学分数
SELECT  SUM(Grade) AS Expr1
FROM      SC
WHERE   (Sno = '201215121');

  1. GROUP BY子句

分组后再使用聚集函数
[例32] 求各个课程号及相应的选课人数

-- 求各个课程号及相应的选课人数
SELECT  Cno, COUNT(Sno) 选课人数
FROM      SC
GROUP BY Cno;


分组后再筛选
[例33] 查询选修了2门以上课程的学生学号

-- 查询选修了2门以上课程的学生学号
SELECT  Sno
FROM      SC
GROUP BY Sno
HAVING  (COUNT(*) > 3);

where作用于基本表,having作用于不同的组

[例34] 查询平均成绩大于等于90分的学生学号和平均成绩

-- 查询平均成绩大于等于85分的学生学号和平均成绩
SELECT  Sno, AVG(Grade) AS 平均成绩
FROM      SC
GROUP BY Sno
HAVING  (AVG(Grade) > 85);

3.4.2 连接查询

3.4.3 嵌套查询

3.4.4 集合查询

3.4.5 基于派生表的查询

3.4.6 SELECT语句的一般格式

3.5 数据更新

3.5.1 插入数据

3.5.2 修改数据

3.5.3 删除数据

3.6 空值的处理

3.7 视图

3.7.1 定义视图

3.7.2 查询视图

3.7.3 更新视图

3.8 小结

第3章 关系数据库标准语言SQL相关推荐

  1. 第三章关系数据库标准语言SQL

    第三章关系数据库标准语言SQL 3.1_SQL的特点 3.3_数据定义 3.3.1_基本表的定义.删除与修改 3.3.3_索引的建立与删除 3.4_数据查询 3.4.1_查询时消除重复行 3.4.2_ ...

  2. 重温《数据库系统概论》【第一篇 基础篇】【第3章 关系数据库标准语言SQL】

    本篇内容为中国人民大学教授王珊.萨师煊的<数据库系统概论>自学课程的复习笔记,学习视频源于小破站(传送门),对应视频P16-P27,属教材"[第一篇 基础篇]"的&qu ...

  3. [XJTUSE DATABASE]——第三章 关系数据库标准语言SQL

    文章目录 [XJTUSE DATABASE]--第三章 关系数据库标准语言SQL 一.SQL概述 二.数据定义 模式的定义与删除 定义模式 删除模式 基本表的定义.删除与修改 数据类型 模式与表 修改 ...

  4. 第3章关系数据库标准语言SQL

    第3章关系数据库标准语言SQL 本文全部内容来自数据库系统概论(第5版)-王珊.萨师煊著 3.1SQL概述 综合统一 高度非过程化 面向集合的操作方式 以同一种语法结构提供多种使用方式 语法简洁,易学 ...

  5. (数据库系统概论|王珊)第三章关系数据库标准语言SQL:习题

    文章目录 名词解释 简答题 应用题 名词解释 视图:视图是一个虚表,其本质就是一条SELECT语句,而查询结果被赋予了一个名字,也即视图名字.或者说视图本身不包含任何数据,它只包含映射到基表的一个查询 ...

  6. 数据库系统-第三章-关系数据库标准语言SQL

    内容来自2021春季学期<数据库系统>课程的PPT SQL概述 SQL(Structured Query Language)--结构化查询语言,是关系数据库的标准语言:是一个通用的.功能极 ...

  7. 第三章 关系数据库标准语言SQL

    3.1 SQL概述 3.1.1 SQL的产生与发展 1)SQL的概念 SQL语言是结构化查询语言,介于关系代数和关系演算之间的语言,是关系数据库的标准语言. 2)SQL的标准 3)SQL的应用.SQL ...

  8. 第三章——关系数据库标准语言SQL——数据定义

    SQL概述 结构化查询语言(Structured Query Language,SQL)是关系数据库的标准语言,其功能不仅仅是查询,而是包括数据库模式创建.数据库数据的插入与修改.数据库安全性完整性定 ...

  9. 数据库系统概论:第三章 关系数据库标准语言SQL

    3.1 SQL 概述 3.1.1 SQL的产生和发展 目前,没有一个数据库系统能够支持SQL标准的所有概念和特性.许多软件厂商对SQL基本命令集还进行了不同程度的扩充和修改,又可以支持标准以外的一些功 ...

  10. 数据库系统概论-第三章 关系数据库标准语言 SQL

    概述 SQL的特点 综合统一 SQL集数据定义语言,数据操纵语言,数据控制语言的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,可以执行以下一系列要求: 定义和修改.删除 关系模式 ...

最新文章

  1. Day 1 AR认知课 || AIRX三次方
  2. 微信为什么打不开html,微信打不开怎么回事 微信打不开解决方法
  3. P2577 [ZJOI2005]午餐
  4. spring java配置_Spring Java配置
  5. BZOJ 4443: [Scoi2015]小凸玩矩阵
  6. Linux操作Oracle(16)——Oracle扩容报错:ORA-01144_表空间数据文件超出最大限制
  7. 阿里开源物联网操作系统 AliOS Things 3.0 发布,集成平头哥 AI 芯片架构!
  8. HDU-1994-利息计算
  9. PaddleNLP Taskflow
  10. 已知圆柱半径求周长c语言,求圆柱体积和周长的c语言编写程序
  11. Nvidia TX2 串口使用
  12. 2018年11月25日ICPC焦作站参赛总结
  13. 个推-消息推送工具类
  14. Linux gsoap生成onvif框架(C语言客户端代码)一
  15. java同时访问多个接口
  16. cozmo vector的起源最详细的说明
  17. NOIP复习篇———动态规划
  18. HTML微信单页引流项目源码模板分享
  19. DESFire 学习之AUTH
  20. Buildroot中文用户手册

热门文章

  1. python:多线程但只占用一个cpu核心
  2. YYCache源码解读 (一)
  3. 我国战略性新兴产业发展规划与纳米技术
  4. 如何重装Linux系统
  5. 一篇文章搞定Prometheus普罗米修斯监控系统的部署
  6. live555 推RTSP音视频流总结(一) 交叉编译
  7. MongDB基础学习(一)
  8. 记一次解决Mysql:Incorrect string value: ‘\xF0\x9F\x8D\x83\xF0\x9F...‘ for column 插入emoji表情报错问题
  9. Mysql——ER模型
  10. 《炬丰科技-半导体工艺》单晶片光刻胶去除技术