使用jsqlparser创建MySQL建表语句
语法
create table [IF NOT EXISTS] 表名 (
字段名 类型 [约束条件],
字段名 类型 [约束条件],
字段名 类型 [约束条件],
字段名 类型 [约束条件]
);
- 字段定义在括号内
- 约束条件可以有多个
- 多个字段定义之间用都会隔开
常见约束
- NOT NULL 非空
- DEFAULT 0 默认值
- AUTO_INCREMENT 自增长
- PRIMARY KEY 主键
示例
create table if not exists t_one (id bigint(20) UNSIGNED NOT NULL auto_increment primary key COMMENT '主键',name varchar(64) COMMENT '名称',age int(10) COMMENT '仙人寿命'
) engine=innoDB default charset=utf8mb4;
Jsqlparser创建建表语句
引入依赖
<dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId><version>4.3</version></dependency>
Demo
import net.sf.jsqlparser.schema.Table;
import net.sf.jsqlparser.statement.create.table.ColDataType;
import net.sf.jsqlparser.statement.create.table.ColumnDefinition;
import net.sf.jsqlparser.statement.create.table.CreateTable;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;public class CreateTableDemo {public static void main(String[] args)throws Exception {CreateTable createTable = new CreateTable();// 设置表名Table table = new Table("t_one");createTable.setTable(table);// 定义字段// idColDataType bigint = new ColDataType("BIGINT");bigint.setArgumentsStringList(Collections.singletonList("20"));ColumnDefinition id = new ColumnDefinition("id", bigint);id.setColumnSpecs(Arrays.asList("UNSIGNED", "NOT NULL", "PRIMARY KEY", "AUTO_INCREMENT", "COMMENT '主键'"));// nameColDataType varchar = new ColDataType("VARCHAR");varchar.setArgumentsStringList(Collections.singletonList("64"));ColumnDefinition name = new ColumnDefinition("name", varchar);name.setColumnSpecs(Collections.singletonList("COMMENT '名字'"));// ageColDataType anInt = new ColDataType("INT");ColumnDefinition age = new ColumnDefinition("age", anInt);age.setColumnSpecs(Collections.singletonList("COMMENT '仙人年龄'"));// 设置字段List<ColumnDefinition> columnDefinitionList = new ArrayList<>();columnDefinitionList.add(id);columnDefinitionList.add(name);columnDefinitionList.add(age);createTable.setColumnDefinitions(columnDefinitionList);// 设置IF NOT EXISTScreateTable.setIfNotExists(true);// 设置引擎、字符集、排序规则createTable.setTableOptionsStrings(Arrays.asList("ENGINE = InnoDB", "CHARACTER SET = utf8mb4", "COLLATE = utf8mb4_general_ci"));// 打印建表语句System.out.println(createTable);}
}
结果:
CREATE TABLE IF NOT EXISTS t_one (id BIGINT (20) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键', name VARCHAR (64) COMMENT '名字', age INT COMMENT '仙人年龄') ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci
相关文章:
使用jsqlparser创建MySQL建表语句
语法 create table [IF NOT EXISTS] 表名 ( 字段名 类型 [约束条件], 字段名 类型 [约束条件], 字段名 类型 [约束条件], 字段名 类型 [约束条件] ); 字段定义在括号内约束条件可以有多个多个字段定义之间用都会隔开 常见约束 NOT NULL 非空DEFAULT 0 默认值AUTO_INCREMENT…...
字符串思维题练习 DAY6 (CF 245H , CF 559B , CF 1731C , CF1109B)
字符串思维题练习 DAY6 (CF 245H , CF 559B , CF 1731C , CF1109B) CF 245 H. Queries for Number of Palindromes(字符串 dp) Problem - H - Codeforces 大意:给出一个字符串S (|S| ≤ 5000) , 给出 Q 次询问 , 每…...
Linux:Mac VMware Fusion13以及CentOS7安装包
Linux:Mac VMware Fusion13以及CentOS7安装包 1. Mac VMware Fusion132. CentOS7安装包3. 安装 1. Mac VMware Fusion13 下载官网地址:https:www.vmware.com/products/fusion/fusion-evaluation.html 2. CentOS7安装包 注意是m芯片需要使用arm架构的i…...
【微服务部署】十、使用Docker Compose搭建高可用Redis集群
现如今,业务系统对于缓存Redis的依赖似乎是必不可少的,我们可以在各种各样的系统中看到Redis的身影。考虑到系统运行的稳定性,Redis的应用和MySQL数据库一样需要做到高可用部署。 一、Redis 的多种高可用方案 常见的Redis的高可用方案有以下…...
【数据结构】树状数组C++详解
文章目录 引入树状数组定义什么是单点修改和区间查询工作原理区间查询代码实现单点修改实现代码242. 一个简单的整数问题AC代码如下:练习:AC代码如下:引入 242. 一个简单的整数问题 给定长度为 N的数列 A A A<...
机器人制作开源方案 | 扫地机器人
1. 功能描述 扫地机器人是现代家庭清洁的得力助手,能够自主规划清扫路径,避开障碍物,有效覆盖整个清洁区域。扫地机器人的出现极大地减轻了家庭清洁的负担,节省了时间和精力,它可以定期清理地面,确保家居环…...
10.2手动推导linux中file, cdev, inode之间的关系
是时候可以手动推导一下linux里面基类父类和子类的关系了 代码放最后把 简单说明版 详细流程 第一步注册驱动 cdev结构体能看做是一个基类,那么链表里面都是字符设备驱动的cdev连载一起,啥串口,lcd的,通过cdev->list_head连接 那cdev结构体里有主次设备号 第一步 使用r…...
JavaScript基础知识13——运算符:一元运算符,二元运算符
哈喽,大家好,我是雷工。 JavaScript的运算符可以根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符。 一、一元运算符 1、一元运算符:只需要一个表达式就可以运算的运算符。 示例:正负号 一元运算符有两…...
异步使用langchain
文章目录 一.先利用langchain官方文档的AI功能问问二.langchain async api三.串行,异步速度比较 一.先利用langchain官方文档的AI功能问问 然后看他给的 Verified Sources 这个页面里面虽然有些函数是异步函数,但是并非专门讲解异步的 二.langchain asy…...
抖音开放平台第三方代小程序开发,授权事件、消息与事件通知总结
大家好,我是小悟 关于抖音开放平台第三方代小程序开发的两个事件接收推送通知,是开放平台代小程序实现业务的重要功能。 授权事件推送和消息与事件推送类型都以Event的值判断。 授权事件推送通知 授权事件推送包括:推送票据、授权成功、授…...
华为9.20笔试 复现
第一题 丢失报文的位置 思路:从数组最小索引开始遍历 #include <iostream> #include <vector> using namespace std; // 求最小索引值 int getMinIdx(vector<int> &arr) {int minidx 0;for (int i 0; i < arr.size(); i){if (arr[i] …...
二十五、【色调调整基础】
文章目录 1、亮度/对比度a、亮度b、对比度 2、曝光度3、阈值4、色阶5、反相6、黑白7、渐变映射 1、亮度/对比度 a、亮度 亮度是指画面的明亮程度 b、对比度 对比度指的是一幅图像中,明暗区域最亮和最暗之间不同亮度层级的测量,如下图所示࿰…...
Android Studio SDK manager加载packages不全
打开Android Studio里的SDK manager,发现除了已安装的,其他的都不显示。 解决方法: 设置代理: 方便复制> http://mirrors.neusoft.edu.cn/ 重启Android Studio...
[esp32-wroom]基础开发
1、点亮LED灯 int led_pin2; void setup() {// put your setup code here, to run once:pinMode(led_pin,OUTPUT);}void loop() {// put your main code here, to run repeatedly:digitalWrite(led_pin,HIGH);delay(1000);digitalWrite(led_pin,LOW);delay(1000); } 2、LED流…...
利用Docker 实现 MiniOB环境搭建
官方文档有,但是感觉写的跟shift一样(或者是我的阅读理解跟shift一样 下面是自己的理解 一.下载docker 这个去官网下载安装,没什么说的 Docker: Accelerated Container Application Development 二.用docker下载MiniOB环境 1.打开powershell ( win r ,然后输入powershell…...
【DB2】—— 数据库表查询一直查不出来数据
问题描述 近日,数据库的测试环境中有一个打印日志表,一共有将近50w的数据,Java程序在查询的时候一直超时。 在DBvisualizer中查询数据无论是使用select * 还是 select count(*)查询的时候都是一直在执行,就是查询不到结果。 排查…...
【教程】使用vuepress构建静态文档网站,并部署到github上
官网 快速上手 | VuePress (vuejs.org) 构建项目 我们跟着官网的教程先构建一个demo 这里我把 vuepress-starter 这个项目名称换成了 howtolive 创建并进入一个新目录 mkdir howtolive && cd howtolive使用你喜欢的包管理器进行初始化 yarn init 这里的问题可以一…...
python 机器视觉 车牌识别 - opencv 深度学习 机器学习 计算机竞赛
1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于python 机器视觉 的车牌识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:3分 🧿 更多资…...
Hadoop3教程(十二):MapReduce中Shuffle机制的概述
文章目录 (95) Shuffle机制什么是shuffle?Map阶段Reduce阶段 参考文献 (95) Shuffle机制 面试的重点 什么是shuffle? Map方法之后,Reduce方法之前的这段数据处理过程,就叫做shuff…...
MySQL为什么用b+树
索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。 索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在[1,2,3,4]中找到4这个数据,直接对全数据检索也很快&am…...
FanControl:颠覆式开源风扇控制工具的全方位应用指南
FanControl:颠覆式开源风扇控制工具的全方位应用指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/…...
基于Altera Cyclone4 FPGA-EP4CE15F17C8核心板的硬件设计实战(原理图+PCB+AD09工程)
1. 从零开始搭建FPGA核心板硬件系统 第一次接触FPGA核心板设计时,我被密密麻麻的引脚和复杂的电源系统搞得头晕眼花。直到用AD09完整走完EP4CE15F17C8核心板的设计流程,才发现硬件开发就像搭积木——只要掌握模块化思维,菜鸟也能做出专业级设…...
零基础玩转OpenClaw:Qwen3-32B-Chat镜像云端体验指南
零基础玩转OpenClaw:Qwen3-32B-Chat镜像云端体验指南 1. 为什么选择云端体验OpenClaw? 第一次听说OpenClaw时,我正被各种本地部署的依赖项折磨得焦头烂额。作为一个习惯在MacBook上写代码的开发者,光是配置CUDA环境就让我望而却…...
高分辨率路面缺陷检测数据集:道路健康状态自动监测的关键资源
路面缺陷检测数据集yolo掌握道路健康状态对于维护和规划都至关重要。 本数据集精选6100张高清图像,专门标注了道路表面的四种常见缺陷,包括鳄鱼状裂纹、横向裂纹、纵向裂纹和坑洞,旨在为道路维护和自动化检测提供强有力的数据支持。 图像集已…...
C++的std--ranges算法自定义比较器与等价关系在集合操作中的运用
C20引入的std::ranges库为算法操作带来了革命性改进,其中自定义比较器与等价关系的灵活运用,显著提升了集合操作的表达能力。通过精确控制元素间的比较逻辑,开发者能够实现更复杂的业务需求,例如处理自定义对象集合或实现非标准排…...
棉花打包机的设计【说明书(论文)+CAD+solidworks】
棉花打包机作为农业机械化领域的关键设备,其核心作用在于将散状棉花高效压缩成标准化包型,以满足运输、仓储及后续加工的工艺需求。传统打包方式依赖人工或简单机械,存在效率低、包型不均、劳动强度大等问题,而现代棉花打包机通过…...
SignalAcquisition:嵌入式高精度信号采集与二进制串行传输框架
1. SignalAcquisition 库深度解析:面向嵌入式信号采集的高精度时序控制与二进制串行传输框架1.1 库定位与工程价值SignalAcquisition 是一个专为 Arduino IDE 设计的轻量级、高确定性信号采集库,其核心目标并非提供通用传感器驱动,而是构建一…...
HunyuanVideo-Foley实战案例:为纪录片自动匹配环境音效的完整工作流
HunyuanVideo-Foley实战案例:为纪录片自动匹配环境音效的完整工作流 1. 项目背景与需求 在纪录片制作过程中,环境音效的采集和匹配往往需要耗费大量时间和人力成本。传统方式需要音效师实地录制或从音效库中手动挑选,整个过程耗时且难以保证…...
s2-pro快速上手指南:3步完成文本转语音与音色迁移实操手册
s2-pro快速上手指南:3步完成文本转语音与音色迁移实操手册 1. 平台简介 s2-pro是Fish Audio开源的专业级语音合成模型镜像,它能够将文本内容转换为自然流畅的语音,并支持通过参考音频实现音色迁移功能。这意味着你可以上传一段参考音频&…...
AI 模型量化精度控制与评估方法
AI模型量化精度控制与评估方法 随着人工智能技术的快速发展,AI模型在边缘计算、移动设备等资源受限场景中的应用日益广泛。为了在有限的计算资源下保持模型性能,量化技术成为关键手段。量化过程中精度的损失直接影响模型的可靠性,因此量化精…...
