数据库
一.基本概念
1.1什么是数据库
用来组织,存储和管理数据的仓库
1.2常见的数据库及分类
MySQL
数据库Oracle
数据库SQL Server
数据库Mongodb
数据库
MySQL
,Oracle
,SQL Server
属于传统型数据库,关系型数据库或SQL
数据库
Mongodb
属于新型数据库,非关系型数据库或NoSQL
数据库
1.3传统型数据库的数据组织结构
数据组织结构:指的就是数据以什么样的结构进行存储
- 数据库
- 数据表
- 数据行
- 字段(列)
1.4安装MySQL
相关的软件
MySQL Server
:专门用来提供数据存储和服务的软件MySQL Workbench
:可视化的MySQL
管理工具,操作存储数据
二.使用SQL
管理数据库
2.1什么是SQL
SQL是结构化查询语言,专门用来访问和处理数据库的编程语言
让我们以编程的形式,操作数据库里面的数据
- SQL是一门数据库编程语言
- 使用SQL语言编写出来的代码,叫做SQL语句
- SQL语言只能在关系型数据库中使用
2.2SQL
能做什么
- 增删改查
- 创建新数据库
- 创建新表......
2.3SQL
的select语法
用于从表中查询数据
执行的结果被存储在一个结果表中
-- 这是注释
-- 从 from 指定的【表中】,查询出【所有的】数据 * 表示 【所有列】
select * from 表名称
-- 从FROM 指定的【表中】,查询出指定 列名称(字段)的数据
select 列名称,列名称 from 表名称
2.4SQL
的insert into
语句
用于向数据表中插入新的数据行
-- 解读:向指定的表中,插入如下几列数据,列的值通过values --指定
-- 注意:列和值要一一对应,多个列和多个值之间,使用英文的逗号分隔
insert into table_name (列1,列2,....) values (值1,值2......)
2.5SQL
的update
语句
用于修改表中的数据
-- 解读:
-- 用update 指定要更新哪个表中的数据
-- 用set 指定列对应的新值
-- 用where 指定更新的条件
update 表名称 set 列名称 = 新值 where 列名称 = 某值
2.6SQL
的delete
语句
删除表中的行
-- 解读:
-- 从指定的表中,根据where条件,删除对应的数据行
delete from 表名称 where 列名称 = 值
2.7SQL
的where
子句
限定选择的标准
-- 查询语句中的where条件
select 列名称 from 表名称 where 列 运算符 值
-- 更新语句中的where条件
update 表名称 set 列 = 新值 where 列 运算符 值
-- 删除语句中的where条件
delete from 表名称 where 列 运算符 值
操作符 | 描述 |
---|---|
= | 等于 |
<>,!= | 不等于 |
大于 | |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
between | 在某个范围 |
like | 搜索某种模式 |
2.8SQL
的and
和or
运算符
连接多条件
and
表示同时满足多个条件
or
表示只有满足任意一个条件即可
2.9SQL
的order by
子句
用于根据指定的列对结果集进行排序
默认升序
降序需使用desc
关键字
select * from users order by status
select * from users order by status desc
2.10SQL
的count(*)
函数
返回查询结果的总数据条数
select count(*) from 表名称
可使用as
为列设置别名
select count(*) as total from users where status=0
三.在项目中操作数据库
3.1步骤
- 安装操作
MySQL
数据库的第三方模块(mysql
) - 通过
mysql
模块连接到MySQL
数据库 - 通过
mysql
模块执行SQL
语句
3.2安装mysql
模块
npm install mysql
3.3配置mysql
模块
//导入mysql模块
const mysql = require('mysql')
//建立于MySQL数据库的连接
const db = mysql.createPool({
host:'127.0.0.1', //数据库的IP地址
user:'root', //登录数据库的账号
password:'admin123', //登录数据库的密码
database:'my_db_01' //指定要操作哪个数据库
})
3.4测试mysql
模块是否正常工作
//检测mysql模块能否正常工作
db.query('select 1',(err,results)=>{
if(err) return console.log(err.message)
//只要打印出 【RowDataPacket {'1': 1}】,就证明连接正常
console.log(results)
})
3.5mysql
模块查询
//查询users 表中所有的数据
const sqlStr = 'select * from users'
db.query(sqlStr,(err,results)=>{
//查询数据失败
if(err) return console.log(err.message)
//查询数据成功
console.log(results)
})
3.6mysql
模块插入
//要插入到users 表中的数据对象
const user = {username: 'Spider-Man',password:'pcc321'}
//待执行的SQL语句,其中英文的 ? 表示占位符
const sqlStr = 'insert into users (username , password) values (?,?)'
//使用数组的形式,依次为 ? 占位符指定具体的值
db.query(sqlStr,[user.username,user,password],(err,results)=>{
if(err) return console.log(err.message) //失败
if(results.affectedRows === 1 ){console.log('插入数据成功')} //成功
})
3.7mysql
模块更新
//更新的数据对象
const user = { id:7, username: 'aaa', password:'000'}
//要执行的SQL语句
const sqlStr = 'update users set username=?,password=? where id=?'
//调用 db.query() 执行 SQL 语句的同时,使用数组依次为占位符指定具体的值
db.query(sqlStr,[user.username,user.password,user.id],(err,results)=>{
if(err) return console.log(err.message) //失败
if(results.affectedRows === 1) { console.log('更新数据成功!')}
})
3.8mysql
模块删除
//要执行SQl语句
const sqlStr = 'delete from users where id = ?'
//调用 db.query() 执行 SQL 语句的同时,为占位符指定具体的值
db.query(sqlStr,7,(err,results)=>{
if(err) return console.log(err.message) //失败
if(results.affectedRows === 1) {console.log('删除数据成功!')} //成功
})