zoukankan      html  css  js  c++  java
  • SQL编程思想

      在计算机领域中有许多伟大的设计理念和思想;在Unix中,一切皆文件;在面向对象的编程语言中,一切皆对象;在关系型数据库中,一切皆关系。

    一、SQL编程思想

    关系模型

      关系模型以集合论中的关系概念为基础;无论是现实世界的实体对象还是它们之间的联系都用关系表示。我们在数据库中看到的关系就是二维表,由行和列组成。所以可以说是关系表是由数据行构成的集合。

      关系模型由数据结构、关系操作、完整性约束三部分组成:

    • 数据结构:关系模型中的数据结构就是关系表,包括基础表、派生表(查询结果)和虚拟表(视图)。
    • 关系操作:增加、删除、修改、和查询,使用的就是SQL语言。其中查询操作最为复杂,包括选择、投影、并集、交集、差集以及笛卡尔积。
    • 完整性约束:用于维护数据的完整性或者满足业务约束的需求,包括实体完整性(主键约束)、参照完整性(外键约束)以及用户定义的完整性(非空约束、唯一约束、检查约束和默认值)。

    面向集合

      SQL是操作关系数据库的标准语言。我们通常只需要说明想要的结果,而将数据处理的过程交给数据库管理系统。SQL是一种面向集合的编程语言,它的操作对象是集合,操作的结果也是集合。(在关系数据库中,关系、表、集合三者通常表示相同的概念)

    SELECT  

    select id,name,age,create_time
    from student;
    select *
    from (select id,name,age,create_time from student)t

      第一个SQL的作用是从学生表中查询学生信息。from之后是一个表,不仅如此查询结果也是一个表,我们可以将查询的结果作为一个表使用,()内的内容被称为派生表,指定了一个别名叫做t。

      select字句用于指定需要查询的字段,可以包括表达式、函数值等。select在关系操作中被称作为投影。选择自己想要的结果重新组成一个集合。

      where用于指定数据过滤的条件,在关系运算中被称作为选择。

      order by用于对查询的结果进行排序,总之,SQL可以完成各种数据操作,过滤、分组、排序、限定数量等,所有这些操作的对象是关系表,结果也是关系表。

    分组GROUP BY

      分组操作和其他的关系操作不同,因为它改变了关系的结构。

    select max(id),max(name),age,count(*)
    from student
    group by age

      分组的其他字段,查询时都需要套用函数字段进行取值,否则出现多个值时不知道取哪个值,会出现报错。所以,group by 改变了集合元素的结构,创建了一个全新的关系。

    UNION

      SQL面向集合特性最明显的体现就是union、intersect、except/minus,这些集合运算符的作用都是将两个集合并成一个集合,必须满足一下条件:

    • 两边的集合中字段的数量和顺序必须相同
    • 两边的集合中对应字段的类型必须匹配或者兼容

    集合操作运算符具体操作:

    • union:计算两个集合的并集,排除了结果中的重复数据
    • union all:计算两个集合的并集,保留了重复数据
    • intersect:返回两个集合中的共同部分,并且排除了结果中的重复数据
    • except:返回出现在第一个结果集中,但不出现在第二个结果集中的记录,并且排除了结果中的重复数据
    • minus:返回出现在第一个结果集中,但不出现在第二个结果集中的记录,并且排除了结果中的重复数据
    • distinct:用于消除重复数据,排除集合中的重复元素

    JOIN

      在SQL中,不仅实体对象存储在关系表中,对象之间的联系也存储在关系表中。当我们需要获取这些相关的数据时,需要使用到另外一个操作:连接查询。

      JOIN:连接查类型包括内连接、外连接、交叉连接等,外连接分为左外连接、右外连接以及全外连接:

    • 内连接:返回两个表中满足连接条件的数据
    • 左外连接:返回左表中所有的数据,对于右表,返回满足连接条件的数据,如果没有就返回空值
    • 右外连接:返回右表中所有的数据,对于左表,返回满足连接条件的数据,如果没有就返回空值
    • 全外连接:同时返回左表和右表中的所有数据,对于两个表中不满足条件的数据返回空值
    • 交叉连接:笛卡尔积

    DML

      表示数据操作语言,也就是插入、更新和删除。由于我们经常插入单条记录,并没有意思到实际上是以表为单位进行操作。update和delete语句都是以关系表尾单位的操作,只不过我们习惯说更新一行

    数据或者删除几条记录。

  • 相关阅读:
    Canvas
    FastDFS 下载与安装
    Oracle 表空间错误集锦
    Sql Server 网络配置
    telnet 功能启用并测试端口是否正常
    UIBarButtonItem 上按钮切换/隐藏的简单例子 转载
    UIScrollView详解
    warning:performSelector may cause a leak because its selector is unknown
    dispatch_once优化代码性能 转
    UIView 和 CALayer的那点事
  • 原文地址:https://www.cnblogs.com/yfstudy/p/13548755.html
Copyright © 2011-2022 走看看