数据库
1.1 数据库的基本概念
1.2 常见的数据库及分类
市面上的数据库有很多种,最常见的数据库有如下几个:
-
MySQL 数据库(目前使用
最广泛、流行度最高
的开源免费数据库;Community + Enterprise) -
Oracle 数据库(收费)
-
SQL Server 数据库(收费)
-
Mongodb 数据库(Community + Enterprise)
其中,MySQL、Oracle、SQL Server 属于传统型数据库
(又叫做:关系型数据库 或 SQL 数据库),这三者的设计理念相同,用法比较类似。
而 Mongodb 属于新型数据库
(又叫做:非关系型数据库 或 NoSQL 数据库),它在一定程度上弥补了传统型数据库的缺陷。
1.3 传统型数据库的数据组织结构
**数据的组织结构:**指的就是数据以什么样的结构进行存储。
传统型数据库的数据组织结构,与 Excel 中数据的组织结构比较类似。
在传统型数据库中,数据的组织结构分为数据库(database)、数据表(table)、数据行(row)、字段(field)
这4大部分组成。
① 数据库类似于 Excel 的工作簿
② 数据表类似于 Excel 的工作表
③ 数据行类似于 Excel 的每一行数据
④ 字段类似于 Excel 的列
⑤ 每个字段都有对应的数据类型
2 安装并配置 MySql
2.1 需要安装的工具
对于开发人员来说,只需要安装 MySQL Server 和 MySQL Workbench 这两个软件,就能满足开发的需要了。
lMySQL Server:专门用来提供数据存储和服务的软件
。
lMySQL Workbench:可视化的 MySQL 管理工具
,通过它,可以方便的操作存储在 MySQL Server 中的数据。
3 MySQL的基本使用
3.1 使用 SQL 管理数据库
1 什么是 SQL
SQL(英文全称:Structured Query Language)是结构化查询语言
,专门用来访问和处理数据库
的编程语言。能够让我们以编程的形式,操作数据库里面的数据。
三个关键点:
① SQL 是一门数据库编程语言
② 使用 SQL 语言编写出来的代码,叫做 SQL 语句
③ SQL 语言只能在关系型数据库中使用(例如 MySQL、Oracle、SQL Server)。非关系型数据库(例如 Mongodb)不支持 SQL 语言
2 SQL 能做什么?
① 从数据库中查询数据
② 向数据库中插入新的数据
③ 更新数据库中的数据
④ 从数据库删除数据
⑤ 可以创建新数据库
⑥ 可在数据库中创建新表
⑦ 可在数据库中创建存储过程、视图
⑧ etc…
3 SQL 学习目标
重点掌握如何使用 SQL 从数据表中:
查询数据(select)
、
插入数据(insert into)
、
更新数据(update)
、
删除数据(delete)
额外需要掌握的 4 种 SQL 语法:
where 条件
、
and 和 or 运算符
、
order by 排序
、
count(*) 函数
3.2 sql的select语句
1 语法
``select 语句用于
从表中查询数据`。
执行的结果被存储在一个结果表
中(称为结果集)。语法格式如下:
-- 从 form 指定的表中,查询所有的数据,* 表示所有列
select * from 表名称-- 从 form 指定的表中,查询指定列名称的数据
select 列名称 from 表名称
注意:SQL 语句中的关键字对大小写不敏感。SELECT 等效于 select,FROM 等效于 from。
2 示例
-- 通过 * 把 users 表中所有的数据查询出来
select * from users-- 从 users 表中把 username, password 对应的数据查询出来
select username, password from users
3.3 sql的insert into语句
inster into
语句用于向数据表中插入新的数据行
。
语法:
-- 向指定的表中,插入如下几列数据,列的值通过 values 指定
-- 列和值要一一对应,多个列和多个值之间使用英文的逗号insert into tableName (列1, 列2, 列3...) values (值1, 值2, 值3...)
示例:
-- 向 users 表中,插入一条 username 为 xiaoxu,password 为 123123 的用户数据insert into users (username, password) values ('xiaoxu', '123123');
3.4 sql的update语句
update
语句用于修改表中的数据
。
语法:
-- 1 用 update 指定要更新的表名
-- 2 用 set 指定列对应的新值
-- 3 用 where 指定更新的条件update tableName set 列名称 = 新值 where 列名称 = 某值-- 多个被更新的列之间用英文逗号, 进行分割
update tableName set 列名称1 = 新值, 列名称2 = 新值2 where 列名称 = 某值
示例:
-- 把 users 表中 id 为 7 的用户密码,更新为 888888。示例如下:
update users set password = 888888 where id = 7
3.5 sql的delete语句
delete
语句用于删除表中的行
。
语法:
-- 从指定的表中,根据 where 条件,删除对应的数据行
delete from tableName where 列名称 = 值
示例:
-- 从 users 表中删除 id 为 4 的记录
delete from users where id = 4
3.6 sql的where子句
where
子句用于限定选择的标准
。在 select、update、delete语句中,皆可使用 where
子句来限定选择的标准。
-- 查询语句中的 where 条件
select 列名称 from 表名称 where 列 运算符 值-- 更新语句中的 where 条件
update 表名称 set 列 = 新值 where 列 运算符 值-- 删除语句中的 where 条件
delete from 表名称 where 列 运算符 值
可在where字句中使用的运算符有:
操作符 | 描述 |
---|---|
= | 等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
between | 在二者之间 |
like | 搜索某种模式 |
!= | 也是不等于 |
3.7 sql的and和or运算符
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来
。
AND 表示必须同时满足多个条件
,相当于 JavaScript 中的 && 运算符,例如 if (a !== 10 && a !== 20)
OR 表示只要满足任意一个条件即可
,相当于 JavaScript 中的 || 运算符,例如 if(a !== 10 || a !== 20)
3.8 sql的order by字句
ORDER BY 语句用于根据指定的列对结果集进行排序
。
默认升序 ASC ,降序 DESC。
select * from users order by status; -- 默认升序
select * from users order by status ASC; -- 与上方等价select * from users order by status DESC; -- 降序
多重排序。
-- 对users表中的数据,先按照status字段进行降序排序,再按照username的字母顺序,进行升序排序select * from users order by status DESC, username ASC;
3.9 sql的count(*)函数
COUNT(*) 函用于返回查询结果的总数据条数
,
语法:
select count(*) from 表名称
示例:
-- 查询 users 表中 status 为 0 的总数据条数
select count(*) from users where status = 0
3.10 sql的as设置别名
如果希望给查询出来的列名称设置别名,可以使用AS关键字,示例如下:
-- 将列名 count(*) 修改为 total
select count(*) as total from users where status = 0
4 在项目中操作 MySQL
4.1 在项目中操作数据库的步骤
①安装操作 MySQL 数据库的第三方模块(mysql)
②通过 mysql 模块连接到 MySQL 数据库
③通过 mysql 模块执行 SQL 语句
4.2 安装与配置 mysql 模块
1 安装 mysql 模块
mysql 模块是托管于 npm 上的第三方模块。它提供了在 Node.js 项目中连接和操作 MySQL 数据库的能力。
运行如下命令,将 mysql 安装为项目的依赖包:
npm install mysql
2 配置 mysql 模块
在使用mysql模块操作MySQL数据库之前,必须先对 mysql 模块进行必要的配置。
主要的配置步骤如下:
// 1 导入 mysql 模块
const mysql = require('mysql')// 2 建立与 MySQL 数据库的链接
const db = mysql.createPool({host: '127.0.0.1', // 数据库的 ip 地址user: 'root', // 登录数据库的账号password: 'admin123', // 登录数据库的密码database: 'my_db_o1', // 指定要操作哪个数据库
})
3 测试 mysql 模块能否正常工作
调用db.query()函数
,指定要执行的SQL语句,通过回调函数拿到执行的结果:
// 检测 mysql 模块能否正常工作
db.query('select 1', (err,result) => {if(err) return console.log(err.message)// 只要打印出 [ RowDataPacket {'1':1 } ] 的结果,就证明数据库链接正常console.log(result)
})
4.3 使用mysql模块操作MySQL数据库
1 查询数据
查询users表中所有的数据:
// 查询 users 表中所有的用户数据db.query('select * from users', (err,result) => {// 查询失败if(err) return console.log(err.message)// 查询成功console.log(result)
})