中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站的排名與權(quán)重網(wǎng)絡(luò)推廣方法有幾種

網(wǎng)站的排名與權(quán)重,網(wǎng)絡(luò)推廣方法有幾種,常州網(wǎng)站制作企業(yè),網(wǎng)頁(yè)設(shè)計(jì)制作作品目錄 一、基礎(chǔ)增刪改查 1.1、項(xiàng)目準(zhǔn)備 1.2、創(chuàng)建user_info表 1.3、查詢用戶(getList) 1.4、添加用戶(addUser) 1.5、修改用戶(updateUser) 1.6、刪除用戶(deleteUser) 1.7、數(shù)據(jù)庫(kù)基礎(chǔ)語(yǔ)法擴(kuò)展 首先: 1、數(shù)據(jù)庫(kù)管理工具:Navicat或者SQLyog都可以…

目錄

一、基礎(chǔ)增刪改查

1.1、項(xiàng)目準(zhǔn)備

1.2、創(chuàng)建user_info表

1.3、查詢用戶(getList)

1.4、添加用戶(addUser)

1.5、修改用戶(updateUser)

1.6、刪除用戶(deleteUser)

1.7、數(shù)據(jù)庫(kù)基礎(chǔ)語(yǔ)法擴(kuò)展

首先:

1、數(shù)據(jù)庫(kù)管理工具:Navicat或者SQLyog都可以

2、建立項(xiàng)目:這里可以直接借助 HBuilderX.exe 創(chuàng)建一個(gè)Node項(xiàng)目或者Express項(xiàng)目

3、測(cè)試接口工具:Apifox或者postman都可以

以上軟件自行下載

一、基礎(chǔ)增刪改查

1.1、項(xiàng)目準(zhǔn)備

在創(chuàng)建好的項(xiàng)目下直接npm i mysql

在app.js里面

var app = express();
app.listen(2323,()=>console.log('服務(wù)已啟動(dòng)在2323端口'))

在routes文件夾里的index.js

const mysql = require("mysql");
const conn = mysql.createConnection({host: "localhost",user: "root",password: "123456",port: 3307,database: "my-school", //自己本地建的數(shù)據(jù)庫(kù)名,node app.js成功后返回null,說(shuō)明鏈接成功
});
conn.connect((err) => {if (err) {console.error("數(shù)據(jù)庫(kù)連接失敗: ", err);return;}console.log("數(shù)據(jù)庫(kù)連接成功");
});

啟動(dòng)項(xiàng)目:node app.js

希望熱更新:npm install -g nodemon

將配置文件改成

  "scripts": {"start": "nodemon ./bin/www"},

1.2、創(chuàng)建user_info表

CREATE TABLE user_info (id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主鍵ID',selfName VARCHAR(50) NOT NULL COMMENT '姓名',PASSWORD VARCHAR(50) NOT NULL COMMENT '密碼',money DECIMAL(18,2) NOT NULL COMMENT '金額',userId VARCHAR(36) NOT NULL UNIQUE COMMENT '用戶ID',sex ENUM('F', 'M') NOT NULL COMMENT '性別',company VARCHAR(100) NOT NULL COMMENT '公司',job VARCHAR(50) NOT NULL COMMENT '職位',createdTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間'
);

sql語(yǔ)法解釋

  • AUTO_INCREMENT 屬性表示每當(dāng)有新記錄插入表中時(shí),該列的值會(huì)自動(dòng)增加。

  • PRIMARY KEY 表示這是一個(gè)主鍵,意味著每行的這個(gè)值都是唯一的,并且索引會(huì)建立在這個(gè)列上以優(yōu)化查詢性能,一般和AUTO_INCREMENT連用。

  • COMMENT 'XX' 是對(duì)該列的注釋。

  • NOT NULL 約束表示這個(gè)列不能包含 NULL 值。

  • UNIQUE 約束表示這個(gè)列的所有值都必須是唯一的,即不允許有重復(fù)的 user_id。

  • 可變長(zhǎng)字符串(VARCHAR),數(shù)字是最大長(zhǎng)度。

  • money 列,數(shù)據(jù)類型為定點(diǎn)數(shù)(DECIMAL),總共18位數(shù)字,其中2位是小數(shù)部分。

  • sex 列,數(shù)據(jù)類型為枚舉(ENUM),只能包含兩個(gè)值:'F' 或 'M'。

  • createdTime列,數(shù)據(jù)類型為時(shí)間戳(TIMESTAMP),默認(rèn)值為當(dāng)前時(shí)間戳(CURRENT_TIMESTAMP)。

1.3、查詢用戶(getList)

// 訪問(wèn) http://localhost:2323/getList 即可拿到數(shù)據(jù)
router.get("/getList", (req, res) => {let sql = "select * from user_info";conn.query(sql, (err, result) => {if (err) {console.error("查詢失敗: ", err);res.json({ code: 500, data: null, msg: err.message });return;}res.json({ code: 200, data: result, msg: "成功" });});
});

1.4、添加用戶(addUser)

效果展示

?

?

核心代碼interface.js

const addUser = (conn, req, res) => {const params = req.body;console.log(params, "params");const ret = {};if (params.selfName == "") {ret.code = 501;ret.data = null;ret.msg = "請(qǐng)輸入用戶名";res.json(ret);return;} else if (params.password == "") {ret.code = 501;ret.data = null;ret.msg = "請(qǐng)輸入密碼";res.json(ret);return;} else {conn.query(`INSERT INTO userlist(selfName,password,money,userId,sex,company,job) VALUES('${params.selfName}','${params.password}','${params.money}','${randomId()}','${params.sex}','${params.company}','${params.job}')`,function (err, results, fields) {if (err) {ret.code = 500;ret.data = null;ret.msg = err.sqlMessage;} else if (results.length === 0) {ret.code = 501;ret.msg = "請(qǐng)傳遞正確的參數(shù)";} else {ret.code = 200;ret.data = null;ret.msg = "添加成功";}res.json(ret);});}
};
const randomId = function uuid() {return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {var r = (Math.random() * 16) | 0,v = c == "x" ? r : (r & 0x3) | 0x8;return v.toString(16);});
};
exports.addUser = addUser;

在routes文件夾里的index.js

var interface = require("./interface");
//添加用戶接口
router.post("/addUser", (req, res) => {interface.addUser(conn, req, res);
});

數(shù)據(jù)庫(kù)手動(dòng)插入一條數(shù)據(jù):

INSERT INTO user_info (selfName, PASSWORD, money, userId, sex, company, job)
VALUES 
('AA', '123456', 634452.00, 'c10f5828-af92-4cff-a7e1-0b6ef53b2c8c8', 'F', 'XX集團(tuán)', '經(jīng)理');

增加數(shù)據(jù),請(qǐng)求發(fā)送成功后,報(bào)錯(cuò)Data too long for column 'userId' at row 1,可以將數(shù)據(jù)庫(kù)原有長(zhǎng)度36改成255

ALTER TABLE user_info MODIFY COLUMN userId VARCHAR(255);

1.5、修改用戶(updateUser)

效果展示

核心代碼interface.js

const updateUser = (conn, req, res) => {const params = req.body;console.log(params, "修改信息");const ret = {};if (params.selfName == "") {ret.code = 501;ret.data = null;ret.msg = "用戶名不能為空";res.json(ret);return;} else if (params.password == "") {ret.code = 501;ret.data = null;ret.msg = "密碼不能為空";res.json(ret);return;} else if (params.userId == "") {ret.code = 501;ret.data = null;ret.msg = "用戶ID不能為空";res.json(ret);return;} else {conn.query(`UPDATE user_info SET selfName='${params.selfName}',password='${params.password}',money='${params.money}',sex='${params.sex}',company='${params.company}',job='${params.job}' WHERE userId='${params.userId}'`,function (err, results, fields) {if (err) {ret.code = 500;ret.data = null;ret.msg = err.sqlMessage;} else if (results.length === 0) {ret.code = 501;ret.msg = "請(qǐng)傳遞正確的參數(shù)";} else {ret.code = 200;ret.data = null;ret.msg = "更新成功";}res.json(ret);});}
};
exports.updateUser = updateUser;

在routes文件夾里的index.js

// 修改用戶接口
router.post("/updateUser", (req, res) => {interface.updateUser(conn, req, res);
});

數(shù)據(jù)庫(kù)手動(dòng)修改該條數(shù)據(jù)【根據(jù)userId】:

UPDATE user_info
SET selfName = 'AAupdate', company = 'XX集團(tuán)update'
WHERE userId IN ('eff7f9b01-8e59-46ba-a4fdb-9294a29e3e79', 'another-userid-value');

1.6、刪除用戶(deleteUser)

效果展示

核心代碼interface.js

const deleteUser = (conn, req, res) => {const params = req.body;console.log(params, "刪除信息");const ret = {};if (params.userId == "") {ret.code = 501;ret.data = null;ret.msg = "請(qǐng)傳遞用戶id";res.json(ret);return;} else {conn.query("DELETE FROM user_info where userId=?",[params.userId],function (err, result) {if (err) {ret.code = 500;ret.data = null;ret.msg = err.sqlMessage;} else {ret.code = 200;ret.data = null;ret.msg = "刪除成功";}res.json(ret);});}
};
exports.deleteUser = deleteUser;

在routes文件夾里的index.js

// 刪除用戶接口
router.post("/deleteUser", (req, res) => {interface.deleteUser(conn, req, res);
});

數(shù)據(jù)庫(kù)手動(dòng)刪除該條數(shù)據(jù)【僅需要userId】:

DELETE FROM user_info WHERE userId='e0399a97-2956-4c3a-b19d-13f3bbc12c8d'

1.7、數(shù)據(jù)庫(kù)基礎(chǔ)語(yǔ)法擴(kuò)展

增刪改:

查詢方法比較多樣化

http://www.risenshineclean.com/news/3174.html

相關(guān)文章:

  • 有了自己的域名怎么做網(wǎng)站公司專業(yè)網(wǎng)站建設(shè)
  • win7系統(tǒng)做網(wǎng)站服務(wù)器站長(zhǎng)素材網(wǎng)
  • 陜西企業(yè)營(yíng)銷型網(wǎng)站建設(shè)市場(chǎng)調(diào)研方法有哪些
  • 廣西建設(shè)廳官方網(wǎng)站文件通知廣州網(wǎng)絡(luò)推廣策劃公司
  • 網(wǎng)站qq交談怎么做的百度合作平臺(tái)
  • 網(wǎng)站建設(shè)前臺(tái)和后臺(tái)設(shè)計(jì)如何讓百度快速收錄新網(wǎng)站
  • 實(shí)驗(yàn)室網(wǎng)站建設(shè)的調(diào)查報(bào)告今日重大新聞?lì)^條財(cái)經(jīng)
  • 國(guó)外有哪些做服裝的網(wǎng)站百度指數(shù)對(duì)比
  • dede怎么設(shè)置wap網(wǎng)站云客網(wǎng)平臺(tái)
  • wordpress 手機(jī)注冊(cè)網(wǎng)站優(yōu)化推廣培訓(xùn)
  • 網(wǎng)站怎么做展現(xiàn)量網(wǎng)站運(yùn)營(yíng)推廣方案
  • 男女直接做的視頻網(wǎng)站北京關(guān)鍵詞優(yōu)化平臺(tái)
  • 湖南網(wǎng)站建設(shè) 安全還踏實(shí)磐石網(wǎng)絡(luò)百度平臺(tái)聯(lián)系方式
  • 湖南網(wǎng)站開(kāi)發(fā) 嵐鴻外貿(mào)營(yíng)銷網(wǎng)站
  • 照片做3d網(wǎng)站網(wǎng)絡(luò)平臺(tái)銷售
  • 一級(jí)a做爰片免費(fèi)網(wǎng)站孕交視頻開(kāi)封網(wǎng)站seo
  • 個(gè)人網(wǎng)站備案取消百度app客服電話
  • 聊城網(wǎng)站建設(shè)價(jià)位國(guó)外域名注冊(cè)網(wǎng)站
  • 廣西柳州網(wǎng)站建設(shè)百度手機(jī)app
  • 做液氮冰淇淋店網(wǎng)站建設(shè)網(wǎng)站的網(wǎng)絡(luò)公司
  • 惠城東莞網(wǎng)站建設(shè)最有效的100個(gè)營(yíng)銷方法
  • 怎么做網(wǎng)頁(yè)平臺(tái)太原網(wǎng)站seo
  • 東莞企業(yè)網(wǎng)站找誰(shuí)搜索引擎優(yōu)化理解
  • 企業(yè)網(wǎng)站微信公眾號(hào)的建設(shè)事跡東莞seo整站優(yōu)化
  • 中國(guó)行業(yè)網(wǎng)站聯(lián)盟重慶網(wǎng)絡(luò)推廣外包
  • 紅安縣建設(shè)局網(wǎng)站西地那非片的功效與作用
  • 選服務(wù)好的網(wǎng)站建設(shè)公司廣州私人做網(wǎng)站
  • 武漢做網(wǎng)站哪家公司好優(yōu)化大師如何刪掉多余的學(xué)生
  • 陽(yáng)江兼職招聘網(wǎng)最新招聘站外seo是什么
  • 企業(yè)網(wǎng)站模板建站seo工作內(nèi)容