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>
            <% } %>

 

  

 

posted @ 2017-12-15 14:19  FallenLunatic  阅读(180)  评论(0编辑  收藏  举报