思维之海

——在云端,寻找我的星匙。

数据库与SQL

典型的数据库包括:Oracle, Sybase, SQL Server, DB2, Access 等。SQL(Structured Query Language)即结构化查询语言,用于增删改查和管理关系型数据库系统。

References

课程:《数据库技术及应用》,宋佳兴

偏重于如何去应用数据库,了解一些数据库的基本原理。

w3school - SQL 教程

《数据库系统概念》

sqlzoo.net/(在线练习),sqlbolt.com/xuesql.cn/(中文)

sqlfiddle.com/(在线编程)

leetcode - sql(数据库题目练习)

简介

数据库

数据库技术产生于上个世纪六十年代末,是数据管理的先进技术,是计算机科学的重要分支。

数据管理:对数据进行有效的分类、组织、编码、存储、检索、维护和应用。

数据库技术是信息系统的核心和基础,它的出现极大地促进了计算机应用向各行各业的渗透。

数据库的建设规模、数据库信息量的大小和使用频度已成为衡量一个国家信息化程度的重要标志

数据库技术始终保持蓬勃旺盛发展势头,五十年来丝毫不见衰败现象,始终保持强劲发展势头,在整个计算机技术领域中十分突出。

四位数据库领域的图灵奖得主:

一个数据库通常抽象为三个层次:

  • 物理层:这个层次来定义基本数据的存储和表示
  • 逻辑层:定义复杂的数据结构和数据关系
  • 视图层:为用户提供数据库的功能接口

数据类型

结构化数据

  • 表格型数据
    • 能用二维表结构逻辑表示和实现的数据

非结构化数据

不方便用数据库二维表来表现的数据即称为非结构化数据,包括所有格式的办公文档、文本、图片、HTML、各类报表、图像和音频/视频信息。

半结构化数据

自描述的,数据的结构(即语义)和内容混在一起,例如XML文档、json文件。

数据模型

在数据库中用数据模型(Data Model)这个工具来抽象、表示和处理现实世界中的数据和信息。通俗来讲数据模型就是现实世界的模拟。

数据模型是一个描述数据语义、数据与数据之间联系(数据结构)、数据操作以及完整性约束的概念工具的集合。

完整性约束保证了数据库的正确、有效、相容。

数据模型从层次上可以分为:概念模型、逻辑模型、物理模型。

数据库结构的基础是数据模型,常用的数据模型包括:

  • 概念模型
    • 实体-联系(E-R)模型:用称为实体的基本对象和对象之间的联系来建构数据库。
    • 基于对象的数据模型:即面向对象的数据模型,主要是在E-R模型上扩展了封装、方法等概念。
  • 逻辑模型
    • 关系模型:用表的集合来表示数据和数据之间的关系。
    • 层次数据模型:从顶层到底层形成一颗树形结构。
    • 网状数据模型:层次模型的一个扩展,每层之间变成了类似深度网络一样的连接层。
    • 面向对象模型
    • 对象关系模型
    • XML模型
  • 物理模型:数据的存储方式
    • 半结构化数据模型(?):允许那些相同类型的数据项含有不同的属性集的数据顶。可扩展标记语言(XML)被广泛地用来表示半结构化数据。

数据库模式

根据数据抽象的3个不同级别,DBMS也应该提供观察数据库的3个不同角度,以方便不同的用户使用数据库的需要。这就是数据库的三级模式结构。

数据库分为三层模式:

  • 外模式:也称子模式或用户模式,对应于视图层数据抽象。是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一具体应用有关的数据的逻辑表示。
  • 模式(逻辑模式):对应于逻辑层数据抽象,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
  • 内模式(存储模式):对应于物理层数据抽象,它是数据的物理结构和存储方式的描述,是数据在数据库内部的表示方式。

数据库语言

数据库系统(DBMS)提供数据定义语言(DDL)来定义数据库中的数据对象,和数据操纵语言(DML)来表达数据库的查询和更新(增删改)。这两者只是功能的差别,在实际使用中通常合并形成一种数据库语言,如SQL语言。

DBMS还提供了对数据的组织、存储和管理等功能。

关系模型

关系模型:包括关系数据结构、关系操作集合和关系完整性约束。

  • 关系数据结构:数据库中全部数据及其相互联系都被组织成关系(二维表)形式。关系是关系模型基本的数据结构
  • 关系操作集合:关系模型提供一组完备的高级关系运算,以支持对数据库的各种操作。
  • 关系完整性约束:数据库中数据必须满足实体完整性、参照完整性和用户定义完整性三类完整性规则。

关系数据结构

关系数据结构的数学基础是笛卡尔积

以上形式的集合的一个子集,称为在域 $D_1,D_2,D_3…,Dn$ 上的关系
关系是笛卡尔积的有限子集,所以关系也是一个二维表

表的每行对应于关系的一个元组,表的每列对应于关系的一个域。由于域可以相同,为了区别就必须给每列起一个名字,称为属性(attribute)。n 目/度/元 关系共有 n 个属性。

关系操作

关系操作的特点是集合操作方式。

关系操作的对象和结果都是集合。这种操作方式也称为一次一个集合的方式。
非关系数据模型的操作方式则为一次一个记录的方式。

关系模型中的关系操作有查询操作和更新操作。

  • 查询操作是关系操作中最主要的部分,查询操作又可以分为选择(select)、投影(project)、连接(join)、(divide)、(union)、(intersection)、(except)、笛卡尔积
  • 更新操作包括插入(insert)、删除(delete)和修改(update)

关系操作能力可用两种方式来表示:代数方式和逻辑方式。

  • 关系代数是用代数方式表达的关系查询语言
  • 关系演算是用逻辑方式表达的关系查询语言
    关系演算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算域关系演算

关系完整性约束

实体完整性

实体完整性:

  • 若属性集A是关系r的主码,则A不能取空值
  • 如果主码是由若干个属性的集合构成,则要求构成主码的每一个属性的值都不能取空值

参照完整性

设F是关系r的一个属性(或属性集),Ks是关系s的主码。如果F与Ks相对应,则称F是关系r参照关系s的外码(foreign key),简称F是关系r的外码。并称关系r为参照关系,关系s为被参照关系或目标关系。

参照完整性:

  • 外码要么为空值,要么等于其对应引用的关系中某个元组的主码

多对一联系的属性引用

学生归属于同一个课程,在学生关系中引入课程主键作为外键。

多对多联系的联系关系及属性引用

学生和课程之间存在多对多的联系,通过中间关系 Score 双向引用外键,实现了多对多的选修记录。

关系内部属性间的引用联系

例如:某个课程的先修课程。这时,需要引用courseNo,实现内部的外码。

用户自定义完整性

任何关系数据库管理系统都应该支持实体完整性参照完整性

用户定义的完整性就是针对某一具体应用要求来定义的约束条件。

  • 限制关系中某些属性的取值要符合业务语义要求
  • 限制关系中某些属性的取值之间需要满足一定的逻辑关系
  • 限制关系中某属性集上的取值必须唯一
    • 如:身份证号

关系模型总结

关系代数

关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式。它是以关系为运算对象的一组高级运算的集合。它的运算结果也是关系。关系代数用到的运算符包括四类:集合运算符、专门的关系运算符、算术比较运算符、逻辑运算符。

集合算符

并、差、交

笛卡尔积

关系算符

选择

投影

连接

比较算符和逻辑算符

数据库设计

数据库设计:指对一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(包括数据要求和处理要求)。

需求分析

需求分析:准确了解与分析用户需求,包括数据与处理需求。

需求分析是整个设计过程的基础,是最困难、最耗时的一步。

概念设计

概念设计:仅从用户角度看待数据及其处理要求和约束,产生一个反应用户观点的概念模式。

概念模式能充分反映现实世界中实体间的联系,又是各种基本数据模型的共同基础,易于向关系模型转换。

概念模型:一种面向客观世界、面向用户的模型,是一种独立于计算机系统的数据模型,完全不涉及数据在计算机中的表示,只是用来描述某个特定组织所关心的信息结构,即按用户的观点对数据和信息建模。

概念模型最常用的表示方法:实体-联系方法(Entity-Relationship Approach,ER模型)。

E-R模型

实体(Entity):客观存在并可相互区别的事物称为实体,现实世界由各种各样的实体组成。实体可以是具体的人、事、物,也可以是抽象的概念或联系。

例如,一个职工、一个部门、一种物资、仓库的一次订货、文化艺术、职工与部门的关系(即某个职工在某部门工作)等等都是实体。

属性(Attribute):实体所具有的某一特性称为属性。一个实体常具有多个属性,但在数据库设计中只选择数据管理所需要的属性,而不是全部属性。

实体标识符(Identifier):能惟一标识实体的属性或属性集,称为实体标识符,也称为码或者键(Key)等。

例如,学号是学生实体的标识符。

域(Domain):属性的取值范围称为该属性的域。

例如,属性性别的域为(男,女)。

实体型(Entity Type):具有相同属性的实体,一定具有共同的特征和性质。用实体名及其属性集合描述的同类实体,称为实体型。可以认为是一个结构体

例如,学生(学号,姓名,年龄,性别,专业)就是实体型。

实体集(Entity Set):同型实体的集合称为实体集。

例如,全班学生就是一个实体集。

联系(Relationship):现实世界中,事物内部以及事物之间是有联系的。这些联系在信息世界中反映为实体内部的联系和实体之间的联系。

一个实体内部的联系指组成实体的各属性之间的联系,而实体间的联系指不同实体之间的相互关联。
如果参与联系的实体集数目为n,则称这种联系为n元联系。例如,有一元联系、二元联系、三元联系。

两个实体集之间的联系,可分为三类:

  • 1:1联系,即1对1联系
  • 1:N联系,即1对多联系
  • M:N联系,即多对多联系

更多实体集之间的联系可以依次类推。实体集也可以与自己内部建立联系。

isa: “is a”$\Delta$关系,表示子类,类型之间的一种子集关系。

逻辑设计

逻辑设计:将概念模型设计阶段得到的概念模式,转换为与选用的DBMS产品所支持的数据模型相符合的逻辑结构。

如果是采用基于E-R模型的数据库设计方法,那么该阶段就是将所设计的E-R模型转换为某个DBMS所支持的数据模型。
如果采用用户视图法,那么应进行表的规范化,列出所有的关键字以及用数据结构图描述表集合中的约束与联系,汇总各用户视图的设计结果,将所有的用户视图合成一个复杂的数据库系统。

E-R模型向关系模型转换

关系模型的逻辑结构是一组关系模式的集合。E-R模型则由实体、实体的属性和实体之间的联系三个要素组成。所以将E-R模型转换为关系模型实际上就是将实体、实体的属性和实体之间的联系转换为关系模式,这种转换一般要遵循一定的规则。

  • 规则1:每个实体型转换为一个关系模式,实体的属性就是关系的属性,实体的键就是关系的键。键用下划线标出。
  • 规则2:若实体之间联系是1:n (包括1:1),在“n”端关系模式中加入“1”端实体的主键,作为其外键,“联系”本身的属性也进入“n”端关系模式。
  • 规则3:若实体的联系是m:n,则将联系转换为一个关系模式。“联系” 两端实体的主键以及“联系”本身的属性转换为该关系的属性。该关系的主键为各实体主键的组合。
  • 规则4:两个以上实体之间的m:n联系转换为一个关系模式。其属性为相连实体的主键加上联系自身的属性构成, 其主键为相连实体主键的组合。
  • 规则5:“isa”联系不用单独转换。(可以认为isa不存在)

转换实例:教学管理系统

*关系模式的规范化处理

规范化处理:使得关系模式由低一级的规范模式上升到高一级的规范模式的过程称为规范化处理。

关系模式常见的异常种类:

实例:建立一个数据库来描述学生的一些情况,假设需要了解如下一些信息:
学生(Snum)、姓名(Sname)
系(Sdept)、系负责人(Mname)
课程(Cname)、成绩(Grade)
分析:为该数据库建一个关系模式来描述所要信息。
S(Snum, Sname, Sdept, Mname, Cname, Grade)

  • 插入异常:只有当一些信息事先已经存放在数据库中时,另外一些信息才能存入数据库中。
    • 如果一个系刚成立,尚无学生或者虽然有了学生,但尚未安排课程,则我们无法把这个系及其负责人的信息存入数据库,从而,数据库用户也就无法从数据库中查找到该系及其负责人的信息。这种现象叫插入异常。这是因为,该关系模式的主键为(Snum, Cname),不能取空值,在学生未选课之前,相关信息无法插入。
  • 删除异常:删除某些信息时可能丢失其它信息。
    • 如果某系的学生全部毕业,我们在删除该系学生的选课信息时,也把该系及其负责人信息也丢失了,这种现象称为删除异常。
  • 冗余存储:信息被重复存储,导致浪费大量存储空间。
    • 每一个系负责人的信息要与该系每个学生的每一门课程的成绩出现次数一样多,造成大量数据冗余。不仅浪费存储,而且还会带来更新异常问题。
  • 更新异常:当重复信息的一个副本被修改,所有副本都必须进行同样的修改。因此当更新数据时,系统要付出很大的代价来维护数据库的完整性,否则会面临数据不一致的危险。
    • 由于数据存储冗余,当更新某些元组,如某系负责人更换,就可能一部分涉及的元组被修改,而另一部分涉及的元组被忽略,造成存储数据的不一致。否则,必须逐一修改该系每个学生的每门选课元组,带来更新复杂化的问题。

出现上述的关系模式的异常状况,主要原因之一就是数据冗余;另一点就是各个属性间的数据依赖关系。

函数依赖

在数据依赖中,函数依赖是最基本的一种数据依赖。它是一种完整性约束,主要表达关系模式内各个属性之间的制约关系。

函数依赖:设R(U)是属性U上的关系模式,X, Y包含于U,若对R(U)的任一可能的关系r,若r中任何两个元组在X上的属性值相等,则在Y上的属性值也必相等,则称“X函数确定了Y”或“Y函数依赖于X”。记作:X$\rightarrow$Y。

例如:S(Snum,Sdept,Mname,…)
对Sdept$\rightarrow$Mname, 若对任意的元组 t1, t2 有 t1[sdept]=t2[sdept],则t1[Mname]=t2[Mname]

范式

范式(Normal Form)是用来判断关系模式好坏的标准。

基于函数依赖理论,关系模式可分成:

  • 第一范式(1NF)
  • 第二范式(2NF)
  • 第三范式(3NF)
  • Boyce-Codd范式(BCNF)

这几种范式的要求一个比一个严格。满足BCNF范式的关系模式一定满足3NF范式,满足3NF范式的关系模式一定满足2NF范式,满足2NF范式的关系模式一定满足1NF范式。

第一范式(1NF)

第一范式(1NF):若关系模式R的每个属性都是不可再分的数据项,则称R满足第一范式,简记为R$\in$1NF。

第二范式(2NF)

设有一关系模式R (U),$\alpha$包含于U。若$\alpha$包含在R(U)的某个候选码中,则称$\alpha$为主属性,否则$\alpha$为非主属性。

第二范式(2NF):若关系模式R$\in$1NF,且每一个非主属性都完全函数依赖于候选码,则R$\in$2NF。

第三范式(3NF)

第三范式(3NF):若关系模式R$\in$1NF,且每个非主属性都不部分依赖也不传递依赖于候选码,则称R$\in$3NF。

Boyce-Codd范式(BCNF)

Boyce-Codd范式(BCNF):若关系模式R$\in$1NF,X$\rightarrow$Y且Y不包含于X时,X必含有候选码,则称R$\in$BCNF。即每个决定因素中都包含候选码。

模式分解

规范化是指:一个低一级范式的关系模式,通过模式分解转换为若干高一级范式的关系模式的集合的过程。

对于一个模式的分解是多种多样的,但是要求分解后产生的模式与原模式等价。

*数据库模式求精

模式求精:模式求精是运用关系理论(如函数依赖理论、多值依赖理论等)对已有关系模式进行结构调整、分解、合并和优化,以满足应用系统的功能及性能等需求。

基于函数依赖理论的模式求精步骤:

  • 确定函数依赖。根据需求分析得到的数据需求,确定关系模式内部各属性之间以及不同关系模式的属性之间存在的数据依赖关系。
  • 确定关系模式所属范式。按照数据依赖关系对关系模式进行分析,检测是否存在部分依赖或传递依赖,以确定该模式属于第几范式。
  • 分析是否满足应用需求。按照需求分析得到的数据处理要求,分析现有模式是否满足应用需求,并决定是否需要进行模式合并或分解。
  • 确定模式分解。根据范式要求(是选择BCNF还是3NF),运用规范化方法将关系模式分解成所要求的关系模式。
  • 模式合并。在分解过程中可能进行模式合并。如当查询经常涉及到多个关系模式的属性时,系统将经常进行连接操作,而连接运算的代价是相当高的。此时,可考虑将这几个关系合并为一个关系。

物理设计

物理设计:物理设计可分五步完成,前三步涉及到物理结构设计,后两步涉及到约束和具体的程序设计。

  • 存储记录结构设计:包括记录的组成、数据项的类型、长度,以及逻辑记录到存储记录的映射。
  • 确定数据存放位置:可以把经常同时被访问的数据组合在一起,“记录聚簇(cluster)”技术能满足这个要求。
  • 存取方法的设计:存取路径分为主存取路径及辅存取路径,前者用于主键检索,后者用于辅助键检索。
  • 完整性和安全性考虑:设计者应在完整性、安全性、有效性和效率方面进行分析,作出权衡。
  • 应用程序设计:在逻辑数据库结构确定后,应用程序设计就应当随之开始。

实施

实施:根据逻辑设计和物理设计的结果,在计算机系统上建立起实际数据库结构装入数据测试和试运行的过程称为数据库的实施阶段。实施阶段主要有三项工作。

建立实际数据库结构。对描述逻辑设计和物理设计结果的程序即“源模式”,经DBMS编译成目标模式并执行后,便建立了实际的数据库结构。
装入试验数据对应用程序进行调试。试验数据可以是实际数据,也可由手工生成或用随机数发生器生成。应使测试数据尽可能覆盖现实世界的各种情况。
装入实际数据,进入试运行状态。测量系统的性能指标,是否符合设计目标。如果不符,则返回到前面,修改数据库的物理模型设计甚至逻辑模型设计。

运行和维护

运行和维护:数据库系统正式运行,标志着数据库设计与应用开发工作的结束和维护阶段的开始。

维护数据库的安全性与完整性:检查系统安全性是否受到侵犯,及时调整授权和密码,实施系统转储与备份,发生故障后及时恢复。
监测并改善数据库运行性能:对数据库的存储空间状况及响应时间进行分析评价,结合用户反应确定改进措施。
根据用户要求对数据库现有功能进行扩充
及时改正运行中发现的系统错误

Oracle

Oracle的版本:Oracle 9i、Oracle 10g\11g\12c、Oracle 18c\19c\20c……

i是指internet,g是指grid(网格计算),c是指cloud(云计算)。

个人使用免费,商业使用需要缴费。

工作模式

模式1:Oracle 客户机/服务器工作模式(面向连接

  • 即Client/Server 工作模式,简称C/S模式

模式2:Oracle 浏览器/服务器工作模式(非面向连接

  • 即Browser/Server 工作模式,简称B/S模式

B/S模式下,网络不再直接查询数据库,而是查询一个建立在数据库上的Web Server。

系统结构

数据库物理结构

  • 数据文件
    • 用来存储数据库中的全部数据,如数据库表中的数据和索引数据。通常为后缀名为.dbf格式的文件。
  • 控制文件
    • 每个Oracle数据库都有相应的控制文件,用于打开、存取数据库。它们是较小的二进制文件,其中记录了数据库的物理结构。名字通常为Ctr*.ctl格式。
    • 控制文件非常重要,一般会有多个备份。
  • 日志文件
    • 又称重做日志文件,用于记录数据库所做的全部变更,如增加、删除、修改,以便在系统发生故障时,用它对数据库进行恢复。名字通常为Log*.dbf格式。
  • 其他文件

数据库逻辑结构

  • 表空间(Tablespace)
    • Oracle数据库的最大逻辑划分区域,通常用来存放数据表、索引、回滚段等数据对象。
  • (Segment)
    • 段是由一个或多个数据区构成的,它不是存储空间的分配单位,而是一个独立的逻辑存储结构,用于存储表、索引等占用空间的数据对象。一个段只属于一个特定的数据对象。
  • (Extent)
    • 由一组连续的Oracle数据块所构成。Oracle存储分配的最小单位。
  • (Block)
    • Oracle数据库逻辑存储结构中的最小单位,也是执行数据库输入输出的最小存储单位。

Oracle 11g

课程FTP:166.111.68.220:4101/

FTP和HTTP类似,均为应用层协议

先从FTP服务器上下载相应的软件包。

SQL

SQL(Structured Query Language)结构化查询语言是用于访问和处理数据库的标准语言。

SQL语言是关系代数的另一种表现形式。

SQL语言组成

  • 数据定义语言DDL(Data Definition Language)
    • 定义数据库的逻辑结构,包括数据库、基本表、视图和索引等,扩展DDL还支持存储过程、函数、对象、触发器等的定义
  • 数据操纵语言DML(Data Manipulation Language)
    • 对数据库的数据进行检索和更新,其中更新操作包括插入、删除和修改数据
  • 数据控制语言DCL(Data Control Language)
    • 对数据库的对象进行授权、用户维护(包括创建、修改和删除)、完整性规则定义和事务定义等
  • 其它
    • 主要是嵌入式SQL语言和动态SQL语言的定义,规定了SQL语言在宿主语言中使用的规则,扩展SQL还包括数据库数据的重新组织、备份与恢复等功能

SQL基本操作

分类 命令动词 功能
数据查询 SELECT 查询数据
数据定义 CREATE 建立基本表、视图等
DROP 删除基本表、视图等
ALTER 修改基本表、视图等
数据操纵 INSERT 插入记录
UPDATE 修改记录
DELETE 删除记录
数据控制 GRANT 授权
REVOKE 回收权限

SQL基本概念

  • 基本表
    • 数据中独立存在的表
    • SQL中一个关系对应一个基本表
  • 视图
    • 从若干基本表中导出的表,是虚表
    • 只存放视图的定义而不存放对应数据
  • 查询表
    • 查询结果对应的表(既无视图定义,也不存放数据)
  • 存储文件
    • 数据库中存放关系的物理文件

数据定义

如要对数据进行查询、添加、修改等各项操作,则应先运用SQL数据定义语言定义基本表索引视图

Create 创建表

1
2
3
4
5
6
7
8
9
create table 表名
(
列1 类型1 默认值 [列约束],
列2 类型2 默认值 [列约束],
列3 类型3 默认值 [列约束],
... ,
[表约束]
);
create table 表名 as (select ...); /* 利用结果集创建新表 */

其中,列约束定义一个完整性约束作为列定义的一部分,包括:

  • NULL / NOT NULL:数据是否可以为空。缺省允许为空。
  • UNIQUE:表示该列上所有行的数据必须是唯一的。
  • PRIMARY KEY:表示添加该列为主键。(一个表只能有一个主键)
  • REFERENCES 表名 列名:定义外键。
  • CHECK 条件表达式:定义CHECK约束。

表约束包括:

  • PRIMARY KEY (列名1, 列名2, ...):支持多个列名共同构造一个主键。

Alter 修改表

1
2
3
4
alter table 表名
add 列1 类型1 默认值 [列约束], ... ; /* 增加新列/约束 */
modify (列名 新约束) ; /* 修改列的约束 */
drop column 列名; /* 删除列/约束 */

其中,列/约束包括:

  • column 列名:指定的列。
  • primary 列名:表的主键约束。
  • unique 列名:列的UNIQUE约束。
  • constraint 约束名:完整性约束。
  • CASCADE:所有完整性约束。

Drop 删除表

1
drop table 表名;

数据查询

Select 选取

显然对于查询语言来说,筛选/选取是非常基本的操作。

1
2
3
4
5
select [列名] as [列名昵称] from [表]
where 条件表达式
group by 分组表达式
having 分组表达式
order by 排序表达式 [ASC / DESC]

As 昵称

1
select 列名表达式 as [昵称] from [表]

通过设计列名表达式,可以在查询结构中构造出想要的新列。

比如,select 产品名, 价格*库存 as 产品总值 from DB

其中,AS关键字可以省略,即:select 产品名, 价格*库存 产品总值 from DB

Distinct 唯一化

1
select distinct [列名] from [表]

对选取的结果进行唯一化。其中,all / distinct 为两个可选项,默认 all保留所有行。

Where 约束

1
2
select [列名] from [表]
where 条件表达式

WHERE语句可以帮助更加精确地筛选部分行数据,所有最终选取的数据都必须满足WHERE限定的表达式。

例如:select 学号 num, 姓名 name, 总学分 score from XSB where 专业='计算机'

Order By 排序

1
2
select [列名] from [表]
order by [列名]

ORDER BY 语句对结果按照指定列进行排序,默认升序。可以按照多个关键字进行排序。

例如:SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

数据更新

Insert 插入

1
2
3
4
5
6
insert into 表名
values (值1, 值2,....)
insert into 表名
(列1, 列2,...) values (值1, 值2,....) /* 指定列名 */
insert into 表名
(select ... from ...) /* 嵌套插入 */

INSERT INTO 语句用于向表格中插入新的行。

Update 更新

1
2
3
update 表名
set 列名 = 新值 # 支持对列进行批量表达式,比如:set col = col + 5
where 列名 = 某值

UPDATE 语句用于修改表中的数据。

例如:UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'

Merge 批量更新(Oracle 11g)

1
2
3
4
5
6
merge into 目标表名
using 源表名 on [条件表达式] # 模式匹配
when matched then # 找到对应项则更新
{update set ... / delete ...}
when not matched then # 找不到则直接插入
{insert (...) values(...)}

Delete 删除

1
2
delete from 表名
where [条件表达式]

DELETE 语句表示从指定的表中删除满足条件的行,若省略WHERE子句,则表示清空表。

条件表达式

PowerBuilder

windows安全模式下运行安装软件 PB 12.6