Node09 - MySQL
1、数据基本概念:
(01)、两种单位
1、库:文件夹 - 用来管理,本身没法存数据
2、表:文件 - 存数据的
(02)、表 => Excel
1、行 -- 一条数据
2、列 -- (字段、域)一个数据项
2、基本用法
(01)、先建库再建表
(02)、名、类型、长度、小数点、不是null
(03)、主键:唯一标识符(特点:唯一的、性能高)
3、下载MySQL依赖 => npm(或cnpm) -i mysql
4、SQL => 结构化查询语句 标准:1、关键字大写;2、库、表、字段需要加上 ``
(01)、增 - INSERT
语法:INSERT INTO 表名称 VALUES (值1, 值2,....)
INSERT INTO 表 (字段列表) VALUES(值列表)
例子:INSERT INTO `user_table` ( `ID`, `username`, `password` ) VALUES ( 0, 'bule2', '123456' );
(02)、删 - DELETE 语句用于删除表中的行
语法:DELETE FROM 表名称 WHERE 列名称 = 值
(03)、改 - UPDATE 语句用于修改表中的数据
语法:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
(04)、查 - SELECT
语法:SELECT 列名称 FROM 表名称
SELECT 选择什么 FROM 表
例子:SELECT *(*: 代表所有) FROM user_table
例子:SELECT * FROM article_table WHERE ID=${req.query.id}(当ID和地址栏的id相等时)
(05)、运算符 - SQL AND & OR
AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤。
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
(06)、排序 - ORDER BY 语句用于对结果集进行排序。
ORDER BY 语句
ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
(07)、聚类 - GROUP 合并相同
例子:查看班级出现次数,COUNT:计数
SELECT class,COUNT(class)FROM student_table GROUP BY class;
//nodejs 代码 const mysql = require('mysql'); //1、连接 //createConnection(哪台服务器,用户名,密码,数据库名) var db = mysql.createConnection({ host: 'localhost', user: 'root', password: '123456', database: '20171215',
charset: "UTF8_GENERAL_CI", // 字符编码 ( 必须大写 )
typeCast: true, // 是否把结果值转换为原生的 javascript 类
supportBigNumbers: true, // 处理大数字 (bigint, decimal), 需要开启 ( 结合 bigNumberStrings 使用 )
bigNumberStrings: true, // 大数字 (bigint, decimal) 值转换为javascript字符对象串
multipleStatements: false, // 允许每个mysql语句有多条查询, 未防止sql注入不开启
//connectTimeout: 5000, // 数据库连接超时时间, 默认无超时
}); //2、查询 //query(查询操作(删除、添加、修改),回调) //"":SQL 语句 db.query("SELECT * FROM user_table12", function(err, data){ if (err){ console.log('请求出错!', err); }else{ console.log('请求成功!', data); } });
5、nodejs中MySQL实例:
1、MySQL表
//nodejs 代码 const express = require('express'); const static = require('express-static'); const cookieParser = require('cookie-parser'); const cookieSession = require('cookie-session'); const bodyParser = require('body-parser'); const ejs = require('ejs'); const consolidate = require('consolidate'); const multer = require('multer'); const mysql = require('mysql'); //连接数据库 const db = mysql.createConnection({host: 'localhost', user: 'root', password: '123456', database: 'blog'}); var server = express(); server.listen(8080); //1、解析cookie server.use(cookieParser('fjalskdjasdoasjdlaskd')); //2、使用session var arr = []; for (var i=0; i<100000; i++){ arr.push('win_bin' + Math.random()); } server.use(cookieSession({name: 'bin_win', keys: arr, maxAge: 20*3600*1000})); //3、post数据 server.use(bodyParser.urlencoded({extended: false})); //4、配置模板 //4.1、输出什么东西 server.set('view engine', 'html'); //4.2、模板输出放在哪 server.set('views','./views'); //4.3、以哪种模板形式输出 server.engine('html', consolidate.ejs); //4.4、接受用户数据 server.get('/', function (req, res) { //查询数据库 db.query('SELECT * FROM banner_table', function (err, data) { if (err){ console.log(err); res.status(404).send('访问数据库错误'+err); }else { console.log(data); res.render('index.ejs', {banners: data}); } }); }); //5、static数据 server.use(static('./www'));
ejs代码
<% for (var i=0; i<banners.length; i++) { %> <li><img src="<%= banners[i].src %>" alt=""/> <div class="text-box"> <h2><%= banners[i].title %></h2> <p><%= banners[i].sub_title %> / 文</p> </div> </li> <% } %>