数据库

55 阅读3分钟

数据库

一.基本概念

1.1什么是数据库

用来组织,存储和管理数据的仓库

1.2常见的数据库及分类

  • MySQL数据库
  • Oracle数据库
  • SQL Server数据库
  • Mongodb数据库

MySQLOracleSQL 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能做什么

  1. 增删改查
  2. 创建新数据库
  3. 创建新表......

2.3SQL的select语法

用于从表中查询数据

执行的结果被存储在一个结果表中

-- 这是注释
-- 从 from 指定的【表中】,查询出【所有的】数据    * 表示 【所有列】
select * from 表名称
​
-- 从FROM 指定的【表中】,查询出指定 列名称(字段)的数据
select 列名称,列名称 from 表名称

2.4SQLinsert into语句

用于向数据表中插入新的数据行

-- 解读:向指定的表中,插入如下几列数据,列的值通过values --指定
-- 注意:列和值要一一对应,多个列和多个值之间,使用英文的逗号分隔
insert into table_name (列1,列2,....) values (值1,值2......)

2.5SQLupdate语句

用于修改表中的数据

-- 解读:
-- 用update 指定要更新哪个表中的数据
-- 用set 指定列对应的新值
-- 用where 指定更新的条件
update 表名称 set 列名称 = 新值 where 列名称 = 某值

2.6SQLdelete语句

删除表中的行

-- 解读:
-- 从指定的表中,根据where条件,删除对应的数据行
delete from 表名称 where 列名称 =

2.7SQLwhere子句

限定选择的标准

-- 查询语句中的where条件
select 列名称 from 表名称 where 列 运算符 值
-- 更新语句中的where条件
update 表名称 set= 新值 where 列 运算符 值
-- 删除语句中的where条件
delete from 表名称 where 列 运算符 值
操作符描述
=等于
<>,!=不等于
大于
<小于
>=大于等于
<=小于等于
between在某个范围
like搜索某种模式

2.8SQLandor运算符

连接多条件

and表示同时满足多个条件

or表示只有满足任意一个条件即可

2.9SQLorder by子句

用于根据指定的列对结果集进行排序

默认升序

降序需使用desc关键字

select * from users order by status
select * from users order by status desc

2.10SQLcount(*)函数

返回查询结果的总数据条数

select count(*) from 表名称

可使用as 为列设置别名

select count(*) as total from users where status=0

三.在项目中操作数据库

3.1步骤

  1. 安装操作MySQL数据库的第三方模块(mysql
  2. 通过mysql模块连接到MySQL数据库
  3. 通过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('删除数据成功!')} //成功
})