美文网首页
_1_ SQL 了解SQL

_1_ SQL 了解SQL

作者: changsanjiang | 来源:发表于2018-06-20 00:08 被阅读12次

    SQL

    Structured Query Language. 简称SQL. 是一种专门用来与数据库沟通的语言.

    一些术语

    我们一直都在使用数据库, 但对究竟什么是数据库并不十分清楚. 更何况人们可能会使用相同的数据库术语表示不同的事物, 进一步加剧了这种混乱.

    因此, 我们首先需要了解一些最重要的数据库术语, 并加以说明:

    数据库

    从SQL的角度来看, 数据库是一个以某种有组织的方式存储的数据集合.

    最简单的办法是将数据库想象为一个文件柜.

    **数据库(database)**
    保存有组织的数据的容器(通常是一个文件或一组文件). 
    
    **注意: 误用导致混淆**
    人们通常使用数据库这个术语来代表他们使用的数据库软件, 这是不正确的, 也因此产生了许多混淆. 
    确切地说, 数据库软件应称为数据库管理系统(DBMS). 
    数据库是通过 DBMS 创建和操纵的容器, 而具体它究竟是什么, 形式如何, 各种数据库都不一样.
    

    你往文件柜里放资料时, 并不是随便将他们扔进某个抽屉就完事了, 而是在文件柜中创建文件, 然后将相关的资料放入特定的文件.

    在数据库领域中, 这种文件称为表. 表是一种结构化的文件, 可用来存储某种特定类型的数据. 例如表可以保存客户清单, 产品目录, 或者其他信息清单.

    **表(table)**
    某个特定类型数据的结构化清单. 
    

    这里关键的一点在于, 存储在表中的数据是同一种类型的数据或清单. 绝不应该将顾客与订单存储在同一个表中, 否则以后的检索和访问会很困难. 应该创建两个表, 或更多的表.

    数据库中的每个表都有一个名字来标识自己. 这个名字是唯一的, 即一个数据库中没有同名的表.

    **说明: 表名**
    虽然在相同数据库中表名不能有重复, 但在不同的数据库中完全可以使用相同的表名.
    使表名成为唯一的, 实际上是数据库名和表名等的组合.
    有的数据库还使用数据库拥有者的名字作为唯一名的一部分. 
    

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

    **模式**
    关于数据库和表的布局及特性的信息.
    

    列和数据类型

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

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

    理解列最好办法是将表想象为一个Excel表格那样. 每一列存储着某种特定的信息. 例如在顾客表中, 一列存储编号, 另一列存储姓名等

    **分解数据**
    正确地将数据分解为多个列极为重要. 例如, 城市, 州, 邮政编码应该总是彼此独立的列.
    通过分解这些数据, 才有可能利用特定的列对数据进行分类和过滤(如找出特定城市或州的所有顾客). 
    如果城市和州组合在一个列中, 当按州分类或过滤时就显得很困难.
    你可以根据自己的需求, 来决定把数据分解到何种程度. 例如, 一般可以把门牌号和街道名一起存储在地址里. 这没有问题, 除非你哪天想用街道名来排序, 这时, 最好将两者分开.
    

    数据库中每个列都有相应的数据类型. 数据类型(datatype)定义了列可以存储哪些数据类型. 例如, 如果列中存储的是数字, 则相应的数据类型应该为数值类型. 如果存储的是日期, 文本, 注释, 金额等, 则应该为其规定恰当的数据类型.

    **数据类型**
    所允许的数据的类型. 每列都有相应的数据类型, 它限制(或允许)该列中存储的数据.
    

    数据类型限定了可存储在列中的数据种类. 数据类型还帮助正确地分类数据, 并在优化磁盘使用方面起重要的作用. 因此, 在创建表时一定要特别关注所用的数据类型.

    **数据类型兼容**
    数据类型及其名称是SQL不兼容的一个主要原因. 虽然大多数基本数据类型得到了一致的支持, 但许多高级的数据类型却没有. 
    更糟的是, 偶然会有相同的数据类型在不同的DBMS中具有不同的名称. 对此用户毫无办法, 在创建表结构时要记住这些差异.
    

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

    例如, 顾客表可以每行存储一个顾客.

    **行(row)**
    表中的一个记录.
    
    **说明: 是记录还是行?**
    你可能听到用户在提到行时称其为数据库记录(record). 
    这两个术语多半可以交替使用, 但从技术上来说, 行才是正确的术语.
    

    主键

    表中每一行都应该有一列(也可是多列)可以唯一标识自己. 如顾客表可以使用顾客编号, 而订单可使用订单ID.

    **主键(primary key)**
    一列(或一组列), 其值能够唯一标识表中每一行.
    


    唯一标识表中每行的这个列(或这几列)称为主键. 主键用来表示一个特定的行. 没有主键, 更新或删除表中特定行极为困难, 因为你不能保证操作所涉及到的行.

    **提示: 应该总是定义主键
    虽然并不总是需要主键, 但多数数据库设计者都会保证他们创建的每个表具有一个主键, 以便于以后的数据操作和管理.
    

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

    • 任意行的主键值各不相同
    • 每一行都必须具有一个主键值(主键值不允许为NULL)
    • 主键不允许修改
    • 主键不能重用

    相关文章

      网友评论

          本文标题:_1_ SQL 了解SQL

          本文链接:https://www.haomeiwen.com/subject/epnzeftx.html