什么是数据库 存储数据的仓库。 常见的数据库: MySQL、 Oracle、 Sqlserver、 DB2等。
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品
数据表的结构和excel一模一样:
表结构: 和excel表的结构是一样的。每一列都是一类数据 — 字段每一行代表一条数据 — 记录使用SQL语句就能很方便对数据库进行增删改查操作 数据查询 语法格式:
SELECT 字段名1, 字段名2, …
FROM 表名 [ WHERE <条件表达式> ] [ ORDER BY <字段名> [ ASC|DESC ]] [ LIMIT START, LENGTH]
#基本的查询语法 SELECT 字段1,字段2,... FROM 表名 #查询所有的字段 SELECT * FROM 表名 #带条件的查询 SELECT * FROM 表名 WHERE 条件 ....带where子句的查询 select field1, field2… from 表名 查询表中的所有数据 where 可以使用条件来筛选查询出的结果 模糊查询 通配符: %: 代表任意长度(包括0)的任意字符 _: 代表1位长度的任意字符
a%b : ab abb asdfb a_b: acb atb a_b%: acb a&baaadlike: 在执行模糊查询时,必须使用like来作为匹配条件
查询结果排序 order by 可以对查询结果按某个字段进行升序或者降序排列 升序 asc (默认值) , 降序 desc 可进行排序的字段通常是 整型 英文字符串型 日期型 (中文字符串也行,但一般不用) 如果SQL语句中,有where和order by,where一定要放到order by之前。 限制查询结果 limit 用来限制查询结果的起始点和长度 格式: limit var1, var2 var1: 起始点。 查询结果的索引,从0开始。 0代表第一条数据 var2: 长度 where、order by、limit如果一起使用,是有顺序的,where在最前面、其次是order by、limit要放到最后。
** 添加数据** 格式: insert into 表名(字段名1,字段名2,…) values(值1,值2,…) 注意: 字段的顺序要和值的顺序是完全匹配的 自增长类型的主键,可以使用null来填充;MySQL会自动填充数据 如果每个字段都有数据,那么表名后面可以不跟字段名,但是values里面的顺序必须正确
修改数据 格式:
update 表名 set 字段1=值1, 字段2=值2,… where 修改条件 修改表中的哪一条(几条)数据的 字段1=值1… 不指定修改条件会修改所有的数据
删除数据 格式: delete from 表名 where 删除条件 注意:不指定条件将删除所有数据
mysql模块的作用 mysql模块是一个第三方模块,专门用来操作MySQL数据库。 可以执行增删改查操作。
# 如果前面没有安装过其他模块,需要先初始化 npm i mysqlmysql基本用法 在Node中使用MySQL模块一共需要5个步骤:
加载 MySQL 模块创建 MySQL 连接对象连接 MySQL 服务器执行SQL语句关闭链接 //1. 加载 mysql 模块 const mysql = require('mysql'); //2. 创建mysql链接对象 const conn = mysql.createConnection({ host: '127.0.0.1', //指定mysql服务器的ip地址 user: 'root', //设置用户名 password: 'root', //用户名对应的密码 database: 'study' }); //3. 链接mysql服务器 conn.connect(); //4. 执行SQL语句 const sql = 'select * from student'; conn.query(sql, (err, results, fields) => { console.log(err); // 错误信息 console.log(results); // 查询结果 console.log(fields); // 字段 }) //5. 关闭链接 conn.end(); 查询 — read执行查询类型的SQL语句,查询结果(result)是一个数组,每个单元是对象,对象的属性是数据表的字段名
//1. 加载 mysql 模块 const mysql = require('mysql'); //2. 创建mysql链接对象 const conn = mysql.createConnection({ host: '127.0.0.1', //指定mysql服务器的ip地址 user: 'root', //设置用户名 password: 'root', //用户名对应的密码 database: 'study' }); //3. 链接mysql服务器 conn.connect(); //4. 执行SQL语句 const sql = 'select * from student'; conn.query(sql, (err, results, fields) => { console.log(err); console.log(results); console.log(fields); }) //5. 关闭链接 conn.end();占位符模式: 当SQL语句中使用了占位符,则query方法需要使用参数2
//1. 加载mysql模块 const mysql = require('mysql'); //2. 创建mysql链接对象 const conn = mysql.createConnection({ host: '127.0.0.1', user: 'root', password: 'root', database: 'study', port: 3306 // 设置mysql服务器的端口号,默认的3306可以省略 }); //3. 链接mysql服务器 conn.connect(); //4. 执行SQL语句 //在sql语句中出现的 ? 就是占位符 const sql = 'select * from student where sgender=?'; //当sql语句中有?时,就使用参数2来设置占位符代表的具体值 conn.query(sql, "男", (err, result) => { if (err) { return console.log(err); } console.log(result); }) //5. 关闭链接 conn.end();如果SQL中有多个占位符,则传递数组
let sql = 'select * from student where sage > ? or sgender = ?'; conn.query(sql, [20, '男'], (err, result) => { if (err) throw err; console.log(result); }); 添加 — create执行添加类型的SQL语句,查询结果(result)是一个对象,该对象中有两个属性需要记住
affectedRows: 受影响行数insertID: 查询数据的主键值 const mysql = require('mysql'); const conn = mysql.createConnection({ host: '127.0.0.1', user: 'root', password: 'root', database: 'study' }); conn.connect(); //4. 执行SQL语句 let sql = "insert into student(sname, sage) values ('小明', 16)"; //当执行添加的SQL语句时,返回值是一个对象,在该对象中有两个属性需要记住 // affectedRows: 受影响函数 // insertId: 添加的新数据的主键值,此处就是 sno conn.query(sql, (err, result) => { if (err) { return console.log(err); } console.log(result); }) //5. 关闭链接 conn.end(); 修改 — update执行修改类型的SQL语句,查询结果(result)是一个对象,该对象中有 affectedRows 属性
//1. 加载mysql模块 const mysql = require('mysql'); //2. 创建mysql链接对象 const conn = mysql.createConnection({ host: '127.0.0.1', user: 'root', password: 'root', database: 'study', port: 3306 // 设置mysql服务器的端口号,默认的3306可以省略 }); //3. 链接mysql服务器 conn.connect(); //4. 执行SQL语句 const sql = "update student set sname='初音未来',sgender='女' where sno=6"; conn.query(sql, (err, result) => { if (err) { return console.log(err); } console.log(result); }) //5. 关闭链接 conn.end();占位符模式: 数据修改通常需要两个占位符。 占位符1是要修改的数据,对象形式,属性是数据表字段;占位符2是修改条件,通常是主键值
//1. 加载mysql模块 const mysql = require('mysql'); //2. 创建mysql链接对象 const conn = mysql.createConnection({ host: '127.0.0.1', user: 'root', password: 'root', database: 'study', port: 3306 // 设置mysql服务器的端口号,默认的3306可以省略 }); //3. 链接mysql服务器 conn.connect(); //4. 执行SQL语句 --- 占位符形式 const sql = "update student set ? where sno=?"; //set 之后是要修改的数据,需要使用对象形式,下标是数据表的字段名 const obj = { sname: "未来战士", sgender: "女", sage: 20 } const sno = 7; //当sql语句中出现多个占位符时,参数可以使用数组来设置 //数组中的单元会按照顺序填充到sql语句的?位置 conn.query(sql, [obj, sno], (err, result) => { if (err) { return console.log(err); } console.log(result); }) //5. 关闭链接 conn.end(); 删除 — delete执行删除类型的SQL语句,查询结果(result)是一个对象,该对象中有 affectedRows 属性
//1. 加载mysql模块 const mysql = require('mysql'); //2. 创建mysql链接对象 const conn = mysql.createConnection({ host: '127.0.0.1', user: 'root', password: 'root', database: 'study', port: 3306 // 设置mysql服务器的端口号,默认的3306可以省略 }); //3. 链接mysql服务器 conn.connect(); //4. 执行SQL语句 const sql = 'delete from student where sno=6'; conn.query(sql, (err, result) => { if (err) { return console.log(err); } console.log(result); }) //5. 关闭链接 conn.end();占位符模式:
//1. 加载mysql模块 const mysql = require('mysql'); //2. 创建mysql链接对象 const conn = mysql.createConnection({ host: '127.0.0.1', user: 'root', password: 'root', database: 'study', port: 3306 // 设置mysql服务器的端口号,默认的3306可以省略 }); //3. 链接mysql服务器 conn.connect(); //4. 执行SQL语句 --- 占位符形式 const sql = 'delete from student where sno=?'; conn.query(sql, 7, (err, result) => { if (err) { return console.log(err); } console.log(result); }) //5. 关闭链接 conn.end();