zoukankan      html  css  js  c++  java
  • 了解SQL

    数据库(database) 保存有组织的数据的容器(通常是一个文 件或一组文件)。

    误用导致混淆人们通常用数据库这个术语来代表他们使用的数据库软件。
    这是不正确的,它是引起混淆的根源。
    确切地说,数据库软件应称为DBMS(数据库管理系统)。
    数据库是通过DBMS创建和操纵的容器。
    数据库可以是保存在硬设备上的文件,但也可以不是。
    在很大程度上说,数据库究竟是文件还是别的什么东西并不重要,因为你并不直接访问数据库;
    你使用的是DBMS,它替你访问数据库。

    表(table) 某种特定类型数据的结构化清单。

    这里关键的一点在于,存储在表中的数据是一种类型的数据或一个 清单。决不应该将顾客的清单与订单的清单存储在同一个数据库表中。这 样做将使以后的检索和访问很困难。应该创建两个表,每个清单一个表。

    数据库中的每个表都有一个名字,用来标识自己。此名字是唯一的, 这表示数据库中没有其他表具有相同的名字。

    表名的唯一性取决于多个因素,如数据库名和表名等的结合。
    这表示,虽然在相同数据库中不能两次使用相同的表名,
    但在不同的数据库中却可以使用相同的表名。

    表具有一些特性,这些特性定义了数据在表中如何存储,如可以存 储什么样的数据,数据如何分解,各部分信息如何命名,等等。描述表 的这组信息就是所谓的模式,模式可以用来描述数据库中特定的表以及 整个数据库(和其中表的关系)。

    模式(schema) 关于数据库和表的布局及特性的信息。

    是模式还是数据库? 有时,模式用作数据库的同义词。遗憾
    的是,模式的含义通常在上下文中并不是很清晰。本书中,模
    式指的是上面给出的定义。

    表由列组成。列中存储着表中某部分的信息。

    列(column) 表中的一个字段。所有表都是由一个或多个列组成的。

    理解列的最好办法是将数据库表想象为一个网格。网格中每一列存 储着一条特定的信息。例如,在顾客表中,一个列存储着顾客编号,另 一个列存储着顾客名,而地址、城市、州以及邮政编码全都存储在各自 的列中。

    1 分解数据 正确地将数据分解为多个列极为重要。
    2 例如,城市、州、邮政编码应该总是独立的列。
    3 通过把它分解开,才有可能利用特定的列对数据进行排序和过滤(如,找出特定州或特定城市的所有顾客)。
    4 如果城市和州组合在一个列中,则按州进行排序或过滤会很困难。

    数据库中每个列都有相应的数据类型。数据类型定义列可以存储的 数据种类。例如,如果列中存储的为数字(或许是订单中的物品数),则 相应的数据类型应该为数值类型。如果列中存储的是日期、文本、注释、 金额等,则应该用恰当的数据类型规定出来。

    数据类型(datatype) 所容许的数据的类型。每个表列都有相 应的数据类型,它限制(或容许)该列中存储的数据。

    数据类型限制可存储在列中的数据种类(例如,防止在数值字段中 录入字符值)。数据类型还帮助正确地排序数据,并在优化磁盘使用方面 起重要的作用。因此,在创建表时必须对数据类型给予特别的关注。

    表中的数据是按行存储的,所保存的每个记录存储在自己的行内。 如果将表想象为网格,网格中垂直的列为表列,水平行为表行。

    行(row) 表中的一个记录。

    是记录还是行? 
    你可能听到用户在提到行(row)时称其为数据库记录(record)。
    在很大程度上,这两个术语是可以互相替代的,但从技术上说,行才是正确的术语。

    表中每一行都应该有可以唯一标识自己的一列(或一组列)。一个顾 客表可以使用顾客编号列,而订单表可以使用订单ID,雇员表可以使用 雇员ID或雇员社会保险号。

    主键(primary key)一列(或一组列),其值能够唯一区分表中每个行。

    唯一标识表中每行的这个列(或这组列)称为主键。主键用来表示 一个特定的行。没有主键,更新或删除表中特定行很困难,因为没有安 全的方法保证只涉及相关的行。

    应该总是定义主键 
    虽然并不总是都需要主键,但大多数数据库设计人员都应保证他们创建的每个表具有一个主键,
    以便于以后的数据操纵和管理。

    表中的任何列都可以作为主键,只要它满足以下条件:

      任意两行都不具有相同的主键值;

      每个行都必须具有一个主键值(主键列不允许NULL值)。

    主键值规则 这里列出的规则是MySQL本身强制实施的。

    主键通常定义在表的一列上,但这并不是必需的,也可以一起使用 多个列作为主键。在使用多列作为主键时,上述条件必须应用到构成主 键的所有列,所有列值的组合必须是唯一的(但单个列的值可以不唯一)。

    还有一种非常重要的键,称为外键,将在后续介绍。

    SQL(发音为字母S-Q-L或sequel)是结构化查询语言(Structured Query Language)的缩写。SQL是一种专门用来与数据库通信的语言。

    与其他语言(如,英语以及Java和Visual Basic这样的程序设计语言) 不一样,SQL由很少的词构成,这是有意而为的。设计SQL的目的是很好 地完成一项任务,即提供一种从数据库中读写数据的简单有效的方法。

    DBMS专用的SQL 
    SQL不是一种专利语言,而且存在一个标准委员会,他们试图定义可供所有DBMS使用的SQL语法,
    但事实上任意两个DBMS实现的SQL都不完全相同。
    本书讲授的SQL是专门针对MySQL的,虽然书中所讲授的多数语法也适
    用于其他DBMS,但不要认为这些SQL语法是完全可移植的。
  • 相关阅读:
    nginx 限流配置
    redis-sentinel 高可用方案实践
    redis之 主从复制和哨兵
    MySQL架构与业务总结图
    MGR实现分析
    通过 SCQA 的框架来讲故事
    MECE分析法
    如何提高问题的认知高度
    Mac 应用程序不能打开解决方法
    vscode打开文件在同一个tab的问题
  • 原文地址:https://www.cnblogs.com/koss/p/14465894.html
Copyright © 2011-2022 走看看