RDBMS简记(一)

什么是数据库

数据库是指集中起来经计算机加工后可以高效访问的数据集合,称为DataBase(DB)。平时常说的Mysql,Oracle,Postgresql数据库其实是对数据进行管理的软件,称为DBMS(DataBase Management System)。

为什么需要数据库

理由如下:
① 方便多人协同
如果使用文本文件来保存数据,特定时刻只能一个用户打开编辑,无法共享。
② 提高开发者效率,降低代码耦合性
开发者通过数据库软件提供的接口来操控数据,无需自行编写代码,不用关心数据是如何存储的。
③ 更好管理数据
数据集中起来更易管理,提高了安全性、易用性。

数据库软件的分类

数据库按照数据结构来组织、存储和管理数据,实际上,数据库分为下列五种类型:

  • 层次数据库
  • 关系数据库
  • 面向对象数据库(OODB)
  • XML数据库
  • 键值数据库

下文只介绍关系型数据库(RDBMS)。

SQL

SQL全名是结构化查询语言。用户使用它来与RDBMS进行沟通。SQL语句分为如下三类:

  • DDL(数据定义语言)
    创建或删除或修改数据库以及数据库中的表等对象。
  • DML(数据操纵语言)
    查询或变更表中的记录。
  • DCL(数据控制语言)
    确认或取消对数据库中数据的变更,对用户权限的设置。

SQL书写规则

①语句以英文分号;结尾

②SQL不区分关键字、表名、列名的大小写,通常写法为关键字大写,表名首字母大写,其余(列名)小写。注意:表中的数据区分大小写。

③SQL语句中直接书写的日期、字符串需要用单引号括起来,而数字不需要。

④SQL语句单词间需要换行符或者英文半角状态下空格分隔。

RDBMS的系统结构

构建RDBMS的常用架构为C/S结构,即客户端/服务器结构。

其基本结构是:
RDBMS客户端\Longleftrightarrow RDBMS服务器 \Longleftrightarrow 数据库(保存在硬盘等存储设备上)

客户端通过SQL语句向服务器端发起请求,服务器端收到请求并从数据库中获取数据,然后通过二维表的形式返回给客户端。

客户端和服务器端可以安装在不同的主机上,通过网络实现多个客户端访问一个服务器端。

RDBMS中的表

关系数据库通过二维表来管理数据,简称为表。
表的每一行称为一条记录,每一列称为一个字段

关系数据库必须以行为单位进行数据读写

表、数据库、列名称只能用半角英文字母开头,只能由数字,下划线,英文字母组成。

字段的数据类型可以是整型,字符串,日期,浮点型,可以通过添加约束来对字段中的数据进行限制。例如字段不能为空,可设置为NOT NULL。所有列都必须指定数据类型。

表与表的关系可以分为“一对一”,“一对多”,“多对一”,“多对多”四种关系,这样才能够按照应用程序的逻辑来组织和存储数据。这三种关系是通过“主键”“外键”来进行维护的。

主键

主键:能够唯一区分出两条不同记录的某个字段,并且要求主键与业务无关,即主键默认不要更改,因为它是用来唯一定位记录的字段。主键不能为空。

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

所以,选取主键的一个基本原则是:不使用任何业务相关的字段作为主键。

因此,身份证号、手机号、邮箱地址这些看上去可以唯一的字段,均不可用作主键。

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

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

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

对于大部分应用来说,通常自增类型的主键就能满足需求。

外键

关系数据库通过外键可以实现一对多、多对多和一对一的关系。外键既可以通过数据库来约束,也可以不设置约束,仅依靠应用程序的逻辑来保证。

多对多关系是通过一个中间表来实现的,设置外键会降低应用程序的性能。

SQL语句

CREATE DATABASE shop; -- 创建数据库shop

CREATE TABLE Product   -- 创建表product
(product_id   CHAR(4)      NOT NULL,       -- 定义字段 包括数据类型和约束
 product_name VARCHAR(100) NOT NULL,
 product_type VARCHAR(32)  NOT NULL,
 sale_price   INTEGER      ,
 regist_date  DATE         ,
 PRIMARY KEY  (product_id));     -- 最后定义主键约束

DROP TABLE Product; -- 永久删除表product

ALTER TABLE Product RENAME TO Goods; -- 重命名表名为Goods

ALTER TABLE Product ADD COLUMN purchase_price INTEGER; -- 向表中添加列

ALTER TABLE Product DROP COLUMN purchase_price; -- 删除刚才添加的列

BEGIN TRANSACTION; --开始插入记录的指令
INSERT INTO Product VALUES('0001','帽子','衣服',100,'2019-9-21');  -- 插入一条记录

参考

廖雪峰的SQL教程
《SQL基础教程》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343