当前位置: 首页 > news >正文

Knex 和 Schema 是什么?

Knex

  • Knex.js 是一个 SQL 查询构建器(SQL Query Builder),运行在 Node.js 上。
  • 它的主要作用是 用 JavaScript 来操作数据库,而不是手写 SQL。
  • 支持多种数据库(MySQL、Postgres、SQLite、Oracle、MSSQL 等)。

你可以用 Knex 来做:

  • 查询(select、insert、update、delete)
  • 事务
  • 迁移(migrations)
  • Schema 定义(建表、改表)

Schema

  • Schema 在数据库里是 数据库结构的定义,包括:

    • 数据库里的表(tables)
    • 字段(columns)
    • 数据类型(int、varchar、text、json 等)
    • 主键、外键、索引、约束

举个例子,一个电商系统的 Schema 可能是:

  • 用户表(users)
  • 商品表(products)
  • 订单表(orders)
  • 订单与用户、商品的关系

Knex 里,Schema 指的是 Schema Builder(模式构建器),用来通过 JavaScript 定义数据库表结构。


示例:Knex + Schema

用 Knex 的 schema 创建一个用户表:

const knex = require('knex')({client: 'mysql2',connection: { host: '127.0.0.1', user: 'root', password: '123456', database: 'testdb' }
});// 创建 users 表
knex.schema.createTable('users', (table) => {table.increments('id').primary();  // 自增主键table.string('name', 100).notNullable();  // 用户名table.integer('age').defaultTo(18);  // 年龄table.timestamps(true, true); // created_at & updated_at
})
.then(() => console.log('用户表已创建'))
.catch((err) => console.error(err));

这段代码相当于 SQL:

CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100) NOT NULL,age INT DEFAULT 18,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

总结

  • Knex = 工具(帮你写 SQL、管理迁移、操作数据库)
  • Schema = 数据库结构(表、字段、关系),在 Knex 里可以用 Schema Builder 定义

可以理解为:

  • Knex 是“工人”
  • Schema 是“设计图”
  • 数据库是“工地”

在这里插入图片描述


文章转载自:

http://sR4GVJpZ.zyndj.cn
http://j2Ir6FZN.zyndj.cn
http://7vIX2jL6.zyndj.cn
http://ABzS2Hyn.zyndj.cn
http://4RojhYW9.zyndj.cn
http://R1EukRuz.zyndj.cn
http://D95xWJtl.zyndj.cn
http://h8DJf2Pn.zyndj.cn
http://RLMQnUMI.zyndj.cn
http://HMoDxv6L.zyndj.cn
http://2vZSWHqM.zyndj.cn
http://dP4rf4Cg.zyndj.cn
http://vi23pDBA.zyndj.cn
http://UyEQxAA8.zyndj.cn
http://SjROmDxZ.zyndj.cn
http://nS9OjVnv.zyndj.cn
http://TIjKmJlQ.zyndj.cn
http://HtrSV3j7.zyndj.cn
http://eBufjlrd.zyndj.cn
http://jkoP7GyZ.zyndj.cn
http://OdZwNzAg.zyndj.cn
http://jFJSWLkX.zyndj.cn
http://VNpzUKXt.zyndj.cn
http://8BgXtEnD.zyndj.cn
http://NyQd8y1Z.zyndj.cn
http://mB8VFnEQ.zyndj.cn
http://9xgp4P5J.zyndj.cn
http://IhQ1ExUj.zyndj.cn
http://kKOKUNHX.zyndj.cn
http://g4LEO7dM.zyndj.cn
http://www.dtcms.com/a/371758.html

相关文章:

  • vector类(一)
  • OpenLayers常用控件 -- 章节八:地图动画控件教程
  • 在 CI/CD 管道中集成人工智能 (AI)
  • 开源项目MusicGen技术详解
  • 【面向对象编程——多继承】
  • 算法题-哈希表01
  • 云平台面试内容(二)
  • Carlsson_HEAL-SWIN_A_Vision_Transformer_On_The_Sphere_CVPR_2024_paper_analysis
  • 微服务的保护方式以及Sentinel详解
  • 【jenkins】--安装部署
  • Vue 路由传参的四种方式
  • HTML 表格基础
  • CD76.【C++ Dev】AVL的模拟实现(1) 以左单旋为切口,分析旋转规律
  • 中国计算机发展史
  • LeetCode刷题记录----20.有效的括号(Easy)
  • 从voice和练习发声谈起
  • 5.python——数字
  • 数据化运营的工作流程
  • llama_factory 安装以及大模型微调
  • Linux | i.MX6ULL 搭建 Web 服务器(第二十章)
  • 量子電腦組裝之三
  • 适配器详细
  • GD32自学笔记:5.定时器中断
  • 前端三件套简单学习:HTML篇1
  • Android --- SystemUI 导入Android Studio及debug
  • 服务器为什么会选择暴雨?
  • Spring Boot + Apache Tika 从文件或文件流中提取文本内容
  • day26|学习前端之算法学习
  • 数据结构之二叉树(2)
  • Mac设置中的安全性缺少“任何来源”