概念

在一台设备安装了数据仓库管理系统,启动了这套系统以后,这台设备就可以提供数据仓库服务了,我们的服务端应用可以连接到这个数据仓库服务,然后存取应用的数据。


数据仓库

根据应用的需求,去设计一下数据的结构,就是设计一些数据表格,在这些数据表格里可以添加需要的字段。


创建数据仓库

在终端使用 mysql 这个命令行工具连接到在本地运行的数据仓库管理系统,然后在里面使用 DDL 为应用创建一个数据库。

1
2
3
4
5
6
mysql -u root -p  //如果不设置主机就会连接到本地运行的数据仓库服务

//登录成功后创建数据仓库
create database 名字;

show databases //列出系统所有的数据仓库,就可以看到刚才创建的数据仓库了

使用数据仓库

使用 tableplus 打开数据仓库,选择数据仓库进行操作


数据表格

在数据仓库中设计一些数据表格,每个表格里都可以包含一些栏目,或者叫字段。每个栏目都有一种特定的类型,来存储不同类型的数据。比如说文本,数字,日期等。我们的服务端应用里的数据最终就是要存储在数据仓库里的这些数据表格里面。

创建数据表格

打开 tableplus,输入:

1
2
3
4
5
CREATE TABLE `user`(
`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, /**INT表示数字,在括号里设置一下最大的位数,NOT NULL表示不能为空,AUTO_INCREMENT表示字段的值是自动增加的,就是添加的第一条记录ID是1,第二条是2,PRIMARY KEY将这个栏目设置为主键,主键一般是项目里的ID字段,值是唯一的,这样就可以通过唯一的值,就可以获取表格里指定的记录。**/
`name` VARCHAR(255) NOT NULL UNIQUE KEY /**VARCHAR表示可以存储字符串类型的值,最大长度为255,UNIQUE KEY表示字段的值在数据表格里必须是唯一的,不能让用户拥有同样的用户名**/
`password` VARCHAR(255) NOT NULL
);

处理数据 SQL

插入记录 INSERT,调取数据 SELECT,更新数据 UPDATE,删除数据 DELETE

插入:

1
2
3
INSERT INTO `post` (`title`,`content`) VALUES
('关山月','明月出天山,苍茫云海间'),
('望岳','会当凌绝顶,一览众山小');

调取:

1
2
3
4
5
6
7
SELECT * FROM `post`; //调取全部
SELECT * FROM `post` LIMIT 1; //调取一条
SELECT * FROM `post` LIMIT 1 OFFSET 1; //调取第二条
SELECT `id`,`title` FROM `post`; //调取id和title字段
SELECT `id`,`title` FROM `post` WHERE `id` = 2; //WHERE筛选,调取id为2的记录
SELECT `id`,`title` FROM `post` ORDER BY `id` DESC; //ORDER BY表示设置排序的标准 DESC表示降序
SELECT `id`,`title` FROM `post` ORDER BY `id` ASC; //ORDER BY表示设置排序的标准 DESC表示升序

更新:

1
2
3
UPDATE `post`
SET `content` = '一道残阳铺水中,半江瑟瑟半江红'
WHERE `id` = 3; //选择id为3的记录

删除:

1
2
DELETE FROM `post`
WHERE `id`= 4; //删除id为4的记录

数据关系

用户发布了一个内容,我们除了要存储内容本身,还得记录内容的作者是谁,创建两张数据表,一张存储用户账户的数据,一张存储用户发布的内容,在两张数据表之间建立一种关系,通过这种关系将两张数据表拼接在一起,利用这种关系去调取用户发布的内容列表,或者调取作者相关的信息。举例,在用户发布内容的表里添加一个存储用户 id 的栏目,保存用户发布内容的同时,记录一下用户在用户表里对应的 id 字段的值,这样通过用户的 id,就可以把两张表拼接在一起。


建立关系

1
2
3
4
5
6
7
ALTER TABLE `post`
ADD FOREIGN KEY(`userID`)
REFERENCES `user`(`id`)
ON DELETE NO ACTION // 设置删除动作,没有动作
ON UPDATE NO ACTION // 设置更新动作,没有动作

/**修改post数据表,添加一个外键,就是userID,这个字段关联的是user数据表里的id这个字段的值。**/