为什么要建数据库

1. 为什么要建数据库

应用程序需要保存用户的数据,比如 Word 需要把用户文档保存起来,以便下次继续编辑或者拷贝到另一台电脑。要保存用户的数据,一个最简单的方法是把用户数据写入文件。

例如,要保存一个班级所有学生的信息,可以向文件中写入一个CSV文件(Comma-Seperated Values,逗号分隔值文件):

id,name,gender,score
1,小明,M,90
2,小红,F,95
3,小军,M,88
4,小丽,F,88

如果要保存学校所有班级的信息,可以写入另一个CSV文件。

但是,随着应用程序的功能越来越复杂,数据量越来越大,如何管理这些数据就成了大问题。

  • 读写文件并解析出数据需要大量重复代码。
  • 从成千上万的数据中快速查询出指定数据需要复杂的逻辑。

如果每个应用程序都用各自设计的读写数据的代码,一方面效率低,容易出错,另一方面,每个应用程序访问数据的接口都不相同,数据难以复用。所以,数据库作为一种专门管理数据的软件就出现了。应用程序不需要自己管理数据,而是通过数据库软件提供的接口来读写数据,至于数据本身如何存储到文件,那是数据库软件的事情,应用程序自己并不关心。

┌──────────────┐
│ application │
└──────────────┘
▲│
││
read││write
││
│▼
┌──────────────┐
│ database │
└──────────────┘

这样一来,编写应用程序的时候,数据读写的功能就被极大地简化了。
数据库按照数据结构来组织、存储和管理数据。实际上,数据库一共有三种模型:

  • 层次模型
  • 网状模型
  • 关系模型

随着时间的推移和市场竞争,最终,基于关系模型的关系数据库获得了绝对的市场份额

2. 关系数据库

关系数据库(Relational Database)的本质是二维表(也叫关系表),而关系表的核心概念是主键(PRIMARY KEY)、外键(FOREIGN KEY)及索引(INDEX)。

主键

能够唯一区分不同记录的字段称为主键。

对主键的要求,最关键的一点是:记录一旦插入到表中,主键最好不要再修改。因为主键是用来唯一定位记录的,修改了主键,会造成一系列的影响。

由于主键的作用十分重要,如何选取主键会对业务开发产生重要影响。如果我们以学生的身份证号作为主键,似乎能唯一定位记录。然而,身份证号也是一种业务场景,如果身份证号升位了,或者需要变更,作为主键,不得不修改的时候,就会对业务产生严重影响。

所以,选取主键的一个基本原则是:不使用任何业务相关的字段作为主键。因此,身份证号、手机号、邮箱地址这些看上去可以唯一的字段,均不可用作主键。

主键最好是完全业务无关的字段,我们一般把这个字段命名为id。常见的可作为 id 字段的类型有:

  • 自增整数类型
    数据库会在插入数据时自动为每一条记录分配一个自增整数,这样我们就完全不用担心主键重复,也不用自己预先生成主键;

  • GUID 类型(Globally Unique Identifier)
    使用一种全局唯一的字符串作为主键,类似 8f55d96b-8acc-4636-8cb8-76bf8abc2f57。GUID 算法通过网卡 MAC 地址、时间戳和随机数保证任意计算机在任意时间生成的字符串都是不同的,大部分编程语言都内置了GUID算法,可以自己预算出主键。

外键

如果某列属性在一个关系中是主键,那么这个属性被称为另一个关系的外键。

可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主键的表称为主表,具有此外键的表称为主表的从表。

外键是建立一对多、多对多关系的关键。

3. 什么是 SQL

SQL是结构化查询语言(Structured Query Language)的缩写,用来访问和操作数据库系统。

SQL 语句既可以查询数据库中的数据,也可以添加、更新和删除数据库中的数据,还可以对数据库进行管理和维护操作。

不同的数据库,都支持 SQL。这样,我们通过学习 SQL 这一种语言,就可以操作各种不同的数据库。

虽然 SQL 已经被ANSI组织定义为标准,不幸的是,各个不同的数据库对标准的SQL支持不太一致。并且,大部分数据库都在标准的SQL上做了扩展。也就是说,如果只使用标准SQL,理论上所有数据库都可以支持,但如果使用某个特定数据库的扩展SQL,换一个数据库就不能执行了。例如,Oracle 把自己扩展的SQL称为PL/SQL,Microsoft 把自己扩展的SQL称为T-SQL

现实情况是,如果我们只使用标准SQL的核心功能,那么所有数据库通常都可以执行。不常用的SQL功能,不同的数据库支持的程度都不一样。

总的来说,SQL语言定义了这么几种操作数据库的能力:

  • DDL:Data Definition Language
    DDL 允许用户定义数据,也就是创建表、删除表、修改表结构这些操作。通常,DDL由数据库管理员执行。

  • DML:Data Manipulation Language
    DML 为用户提供添加、删除、更新数据的能力。

  • DQL:Data Query Language
    DQL 允许用户查询数据,这也是通常最频繁的数据库日常操作。

SQL语言关键字不区分大小写!!!但是,针对不同的数据库,对于表名和列名,有的数据库区分大小写,有的数据库不区分大小写。同一个数据库,有的在Linux上区分大小写,有的在Windows上不区分大小写。

posted @   BodhiLeaf  阅读(410)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
点击右上角即可分享
微信分享提示