18 navcat链接数据库 MySQl部分语法 Nodejs简介操作MySL

1 navcat链接数据库

1-1 准备工作

​ 里面有Apache htdocs MySQL

​ Apache 打开80端口

​ htdocs 存放请求的资源

​ MySQL 数据库

1-2 MYSQL

1-2-1数据库的结构关系

​ 库 > 表 > 列(字段)和行(数据)

​ 每一个表都有一个id的字段,该字段是该表的主键,并且一般来说会不为空并自动自增。

1-2-2数据类型

* int 整型(整数数字)
* float 浮点型(小数)
* varchar 字符型(字符串)
* date 日期(YYYY-MM-DD)
* datetime 日期时间(YYYY-MM-DD HH:MM:SS)

1-2-3 SQL语句

	<!-- 查数据表内所有数据 -->
	SELECT * FROM 表名 
	<!-- 查根据条件查询数据 -->
	SELECT * FROM 表名 WHERE 字段名=某值
	SELECT * FROM 表名 WHERE 字段名=某值 AND 字段名=某值
	SELECT * FROM 表名 WHERE 字段名=某值 OR 字段名=某值
	
	<!-- 根据某个字段名进行排序 -->
	SELECT * FROM 表名 ORDER BY 字段名 
	<!-- 根据某个字段名进行反向排序 -->
	SELECT * FROM 表名 ORDER BY 字段名 DESC
	
	
	<!-- 删除表内所有数据 -->
	DELETE FROM 表名
	<!-- 查根据条件删除数据 -->
	DELETE FROM 表名 WHERE 字段名=某值
	
	<!-- 插入新数据 -->
	INSERT INTO 表名 (字段名1,字段名2,字段名3,....) VALUES (值1,值2,值3,.....)
	
	<!-- 根据条件修改数据 -->
	UPDATE 表名 SET 字段名=某值,字段名=某值.... WHERE 字段名=某值

2 node.js 操作数据库

2-1 模块

模块:用require()引入的一个对象;一类是系统模块,还有一类是第三方模块。

2-2 fs模块–fs.writeFile(file, data[, options], callback)

	let fs = require("fs");
	// 异步写入
	fs.writeFile("路径","写入的数据",function(err){
		
	})
	
	// 异步读取
	error  //读取失败
	data   //读取的数据
	       // data读取到的是2进制数据文件
	fs.readFile("test.txt",function(error,data){
		if(error){
			console.log("读取失败")
			return;
		}
		
		console.log(String(data))
		
	})

2-3 第三方模块下载的方法

将npm下载地址切换为国内淘宝镜像:npm config set registry http://registry.npm.taobao.org

下载安装第三方模块:npm install 模块名 --save

第三方模块官网集合:https://www.npmjs.com/

2-4 express(第三方模块)

	let server =  require("express")();
	
	require("express")这个东西是一个函数。
	require("express")()这个东西返回一个对象。
	


	// 计划监听来自前端的HTTP请求,如果请求地址是/a,则自动调用第二个参数的函数体
	// get两个参数 第一个参数是字符串
	server.get("/a",function(request,response){

         // request.query来自前端请求的所带参数的对象
		// 接收到来自前端的请求name参数,并赋值到name变量中
		let name = request.query.name;
		console.log("接收到来自前端的请求")
		// 向前端返回一段内容
		response.end() //有可能乱码,改用send();
		response.send(`${name},success!!!!`)
	})
	
	// 真正将上面的计划执行监听到本机的81端口上。
	server.listen(81)
let server = require("express")();
let fs = require("fs");
let mysql = require('mysql');

// 规划链接
let sql = mysql.createConnection({
	host: 'localhost',
	user: 'root',
	password: '123456',
	database: 'tech'
});

// 尝试链接
sql.connect();






// 计划监听来自前端的HTTP请求,如果请求地址是/a则自动调用第二个参数的函数体
server.get("/a", function (request, response) {

	// 接收到来自前端的请求name参数,并赋值到name变量中
	let name = request.query.name;
	console.log("接收到来自前端的请求")
	// 向前端返回一段内容
	response.send(`${name},success!!!!`)
})

// 计划监听来自前端的HTTP请求,如果请求地址是/a则自动调用第二个参数的函数体
server.get("/b", function (request, response) {
	console.log("接收到来自前端的请求")
	// 向前端返回一段内容
	response.end("ok!")
})

// 监听来自前端的studentsList路由请求
// 当接收到请求后使用fs模块的readFile方法去取服务器的students.json文件
// 并将其转换为字符串后向前端返回

server.get("/studentsList", function (request, response) {
	fs.readFile("students.json", function (error, data) {
        
		response.send(String(data))
         // response.end(data)  读取的本地文件乱码
         // response.send(data)  二进制文件,发送到前端会直接下载
         // response.send(String(data))  前端收到的是字符串,需要转换为杰森
	})
})

// 操作的是数据库
// 接收到来自前端的queryStudent路由请求
// 并且接收来自前端请求的id参数
// 从数据中找到与id值相对应的那个学生信息并将其返回。
server.get("/queryStudent", function (request, response) {

	// 接收到来自前端的请求id参数,并赋值到id变量中
	let id = request.query.id;

	// 执行sql任务
	sql.query(`SELECT * FROM students WHERE id=${id}`, function (error, data) {
		if (error) {
			console.log(error)
		} else {
            
			response.send(JSON.stringify(data[0]))
		}
	})


})


// 真正将上面的计划执行监听到本机的81端口上。
server.listen(81)

2-5 mysql(第三方模块)

	let mysql      = require('mysql');

	// 规划链接
	let sql = mysql.createConnection({
	  host     : 'localhost',
	  user     : 'root',
	  password : '123456',
	  database : 'tech'
	});
	 
	// 尝试链接
	sql.connect();


	// 执行sql任务
	//data数据从数据库拿到的是Json对象,向前端发送需要先转换成字符串
	sql.query("SELECT * FROM students",function(error,data){
		if(error){
			console.log(error)
		}
		else{
			console.log(data)
		}
	})

2-6 解决跨域 服务器反向代理代码

	server.all("*",function(req,res,next){
	    //设置允许跨域的域名,*代表允许任意域名跨域
	    res.header("Access-Control-Allow-Origin","*");
	    //允许的header类型
	    res.header("Access-Control-Allow-Headers","content-type");
	    //跨域允许的请求方式 
	    res.header("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");
	    if (req.method.toLowerCase() == 'options')
	        res.send(200);  //让options尝试请求快速结束
	    else
	        next();
	})

2-6 expresse-static:NodeJS环境中向前端提供静态服务的第三方模块,可以代替Apache

const server = require("express")();
const expressStatic = require("express-static")
const mysql = require('mysql');
const port = 8080;
// 拦截所有请求,并且声明静态请求目录
server.use(expressStatic(`${__dirname}/static`));

3 打开数据库文件出错

SET NAMES utf8mb4;删掉这句话
SET FOREIGN_KEY_CHECKS = 0;

/*
 Navicat Premium Data Transfer

 Source Server         : heihei
 Source Server Type    : MySQL
 Source Server Version : 50090
 Source Host           : localhost:3306
 Source Schema         : tech

 Target Server Type    : MySQL
 Target Server Version : 50090
 File Encoding         : 65001

 Date: 24/11/2020 17:58:01
*/

/*SET NAMES utf8mb4;删掉这句话*/
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for flights
-- ----------------------------
DROP TABLE IF EXISTS `flights`;
CREATE TABLE `flights`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `airNo` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `destination` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `DepTime` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `landTime` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  PRIMARY KEY USING BTREE (`id`)
) ENGINE = MyISAM AUTO_INCREMENT = 37 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of flights
-- ----------------------------
INSERT INTO `flights` VALUES (7, 'CES2321', 'Karamay (KRY)', '14:51 CST', '18:26 CST');
INSERT INTO `flights` VALUES (11, 'CES2321', 'Karamay (KRY)', '14:51 CST', '18:26 CST');
INSERT INTO `flights` VALUES (12, 'CES2259', 'Lüliang (LLV)', '14:44 CST', '15:31 CST');
INSERT INTO `flights` VALUES (14, 'CES2259', 'Lüliang (LLV)', '14:44 CST', '15:31 CST');
INSERT INTO `flights` VALUES (15, 'CES2321', 'Karamay (KRY)', '14:51 CST', '18:26 CST');
INSERT INTO `flights` VALUES (16, 'CES2259', 'Lüliang (LLV)', '14:44 CST', '15:31 CST');
INSERT INTO `flights` VALUES (17, 'CES2321', 'Karamay (KRY)', '14:51 CST', '18:26 CST');
INSERT INTO `flights` VALUES (18, 'CES2321', 'Karamay (KRY)', '14:51 CST', '18:26 CST');
INSERT INTO `flights` VALUES (19, 'CES2259', 'Lüliang (LLV)', '14:44 CST', '15:31 CST');
INSERT INTO `flights` VALUES (20, 'CES2321', 'Karamay (KRY)', '14:51 CST', '18:26 CST');
INSERT INTO `flights` VALUES (21, 'CES2321', 'Karamay (KRY)', '14:51 CST', '18:26 CST');
INSERT INTO `flights` VALUES (22, 'CES2259', 'Lüliang (LLV)', '14:44 CST', '15:31 CST');
INSERT INTO `flights` VALUES (23, 'CES2321', 'Karamay (KRY)', '14:51 CST', '18:26 CST');
INSERT INTO `flights` VALUES (24, 'CES2321', 'Karamay (KRY)', '14:51 CST', '18:26 CST');
INSERT INTO `flights` VALUES (25, 'CES2259', 'Lüliang (LLV)', '14:44 CST', '15:31 CST');
INSERT INTO `flights` VALUES (26, 'CES2321', 'Karamay (KRY)', '14:51 CST', '18:26 CST');
INSERT INTO `flights` VALUES (27, 'CES2321', 'Karamay (KRY)', '14:51 CST', '18:26 CST');
INSERT INTO `flights` VALUES (28, 'CES2259', 'Lüliang (LLV)', '14:44 CST', '15:31 CST');
INSERT INTO `flights` VALUES (29, 'CES2321', 'Karamay (KRY)', '14:51 CST', '18:26 CST');
INSERT INTO `flights` VALUES (30, 'CES2321', 'Karamay (KRY)', '14:51 CST', '18:26 CST');
INSERT INTO `flights` VALUES (31, 'CES2259', 'Lüliang (LLV)', '14:44 CST', '15:31 CST');
INSERT INTO `flights` VALUES (32, 'CES2321', 'Karamay (KRY)', '14:51 CST', '18:26 CST');
INSERT INTO `flights` VALUES (33, 'CES2321', 'Karamay (KRY)', '14:51 CST', '18:26 CST');
INSERT INTO `flights` VALUES (34, 'CES2259', 'Lüliang (LLV)', '14:44 CST', '15:31 CST');
INSERT INTO `flights` VALUES (35, 'CES2321', 'Karamay (KRY)', '14:51 CST', '18:26 CST');
INSERT INTO `flights` VALUES (36, 'CES2259', 'Lüliang (LLV)', '14:44 CST', '15:31 CST');

SET FOREIGN_KEY_CHECKS = 1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值