-
2021-07-12 08:57:49
– 创建表
DROP TABLE
IF
EXISTSdepartment
;
CREATE TABLEdepartment
(
id
INT ( 11 ) NOT NULL AUTO_INCREMENT COMMENT ‘主键’,
code
VARCHAR ( 100 ) DEFAULT NULL COMMENT ‘编号’,
name
VARCHAR ( 255 ) DEFAULT NULL COMMENT ‘名称’,
PRIMARY KEY (id
),
UNIQUE KEYindex_code
(code
),
INDEXindex_name
(name
)
) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT ‘部门表’;– 单独添加索引
ALTER TABLEdepartment
ADD UNIQUE (code
);
ALTER TABLEdepartment
ADD INDEX index_name ( NAME );SELECT * from department
– 查看索引
SHOW INDEX FROM department;SHOW department;
– 执行计划
EXPLAIN SELECT * FROM department WHERE code = ‘9527’;
EXPLAIN SELECT * FROM department WHERE name = ‘外联平台部’;
查看索引 show index from 数据库表名
alter table 数据库add index 索引名称(数据库字段名称)
PRIMARY KEY(主键索引)
ALTER TABLEtable_name
ADD PRIMARY KEY (column
)
UNIQUE(唯一索引)
ALTER TABLEtable_name
ADD UNIQUE (column
)
INDEX(普通索引)
mysql>ALTER TABLEtable_name
ADD INDEX index_name (column
)
FULLTEXT(全文索引)
ALTER TABLEtable_name
ADD FULLTEXT ( `col多列索引
ALTER TABLEtable_name
ADD INDEX index_name (column1
,column2
,column3
)
1.普通索引。
这是最基本的索引,它没有任何限制。它有以下几种创建方式:
(1)创建索引:CREATE INDEX indexName ON tableName(tableColumns(length));如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB 和 TEXT 类型,必须指定length,下同。
(2)修改表结构:ALTER tableName ADD INDEX [indexName] ON (tableColumns(length))
(3)创建表的时候直接指定:CREATE TABLE tableName ( […], INDEX [indexName] (tableColumns(length)) ;2.唯一索引。
它与前面的"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
(1)创建索引:CREATE UNIQUE INDEX indexName ON tableName(tableColumns(length))
(2)修改表结构:ALTER tableName ADD UNIQUE [indexName] ON (tableColumns(length))更多相关内容 -
Excel生成MYSQL建表语句
2020-12-25 17:11:41JAVA编写,填写好excel模板,点击“点我运行.bat”,即可生成sql语句。没有积分下载的话可以看我的文章,有完成的源代码。 -
java实体转mysql建表语句
2019-12-29 21:19:59好用的java实体转MySQL建表语句,非常实用,不好使你找我! -
mysql建表时间字段规范用法
2018-09-05 16:29:59mysql建表时间字段规范用法 -
MySql建表规范与说明.docx
2020-03-09 10:59:34MySql建表规范与说明。建表的注意事项,以及mysql的示例建表,decimal或numeric在不指定小数位数时,默认小数位数为0 -
Mysql建表与索引使用规范详解
2020-09-10 19:50:49本篇文章是对Mysql建表和索引使用规范进行了详细的分析介绍,需要的朋友参考下 -
oracle到mysql建表语句迁移
2015-03-19 16:51:22oracle向mysql建表语句的迁移。 直接表结构的生成sql脚本 -
MYSQL建表脚本导入步骤详图130328.pptx
2020-05-30 11:21:18MYSQL建表脚本导入步骤详图;MYSQL建表脚本导入步骤详图;MYSQL建表脚本导入步骤1;MYSQL建表脚本导入步骤2;MYSQL建表脚本导入步骤3;MYSQL建表脚本导入步骤4;MYSQL建表脚本导入步骤5;MYSQL建表脚本导入步骤6;MYSQL建表... -
mysql建表常用sql语句个人经验分享
2020-09-10 16:54:18熟悉一些常用的建表语句可以提升你建表的速度效率,本文整理了一些,个人感觉还不错,希望对大家有所帮助 -
【MySQL建表语句转PostgreSQL建表语句】MySQL建表语句转PostgreSQL建表语句
2022-03-10 20:12:37args) throws IOException, JSQLParserException { // 你的MySQL DDL路径 String mysqlDDLPath = “C:\Users\wb_xg20\Desktop\finance_super1.sql”; String dDLs = FileUtils.readFileToString(new File...1.首先加一下依赖
<dependency> <groupId>com.github.jsqlparser</groupId> <artifactId>jsqlparser</artifactId> <version>1.2</version> </dependency>
2.加下脚本
/**-
@author Ben.Zhou
-
@version 1.0
-
@description
-
@data 2022/3/10 16:51
*/
public class MysqlDdl2PgDdlUtil {
public static void main(String[] args) throws IOException, JSQLParserException {
// 你的MySQL DDL路径
String mysqlDDLPath = “C:\Users\wb_xg20\Desktop\finance_super1.sql”;
String dDLs = FileUtils.readFileToString(new File(mysqlDDLPath));System.out.println(dDLs); dDLs = dDLs.replaceAll("current_timestamp\\(\\) ON UPDATE current_timestamp\\(\\)", "current_timestamp") .replaceAll("current_timestamp\\(\\)", "current_timestamp") .replaceAll("current_timestamp\\(\\)", "current_timestamp") .replaceAll("int\\([0-9]*\\)", "INT") .replaceAll("tinyint\\([0-9]*\\)", "INT") .replaceAll("tinyINT","INT") .replaceAll("double\\([0-9]*,[0-9]*\\)","float8") .replaceAll("DEFAULT 00000000000","DEFAULT 0") .replaceAll("unsigned zerofill","") .replaceAll("bigint\\([0-9]*\\) NOT NULL AUTO_INCREMENT", "BIGSERIAL PRIMARY KEY") .replaceAll("bigint\\([0-9]*\\)","INT8"); //dDLs = dDLs.replaceAll("bigint\\(19\\)","int8"); System.out.println("++++++++++开始转换SQL语句+++++++++++++"); Statements statements = CCJSqlParserUtil.parseStatements(dDLs); statements.getStatements() .stream() .map(statement -> (CreateTable) statement).forEach(ct -> { Table table = ct.getTable(); List<ColumnDefinition> columnDefinitions = ct.getColumnDefinitions(); List<String> comments = new ArrayList<>(); List<ColumnDefinition> collect = columnDefinitions.stream() .peek(columnDefinition -> { List<String> columnSpecStrings = columnDefinition.getColumnSpecStrings(); int commentIndex = getCommentIndex(columnSpecStrings); if (commentIndex != -1) { int commentStringIndex = commentIndex + 1; String commentString = columnSpecStrings.get(commentStringIndex); String commentSql = genCommentSql(table.toString(), columnDefinition.getColumnName(), commentString); comments.add(commentSql); columnSpecStrings.remove(commentStringIndex); columnSpecStrings.remove(commentIndex); } columnDefinition.setColumnSpecStrings(columnSpecStrings); }).collect(Collectors.toList()); ct.setColumnDefinitions(collect);
-
-
MySQL建表样本数据代码.rar
2020-03-14 12:30:18MySQL建表及样本数据的代码。减少人工时间成本。 -
Mysql建表脚本转ClickHouse建表脚本
2022-03-09 12:32:36MySql建表脚本转CK 前置知识 主要是类型的转换、和空、非空的问题 整形 ClickHouse则直接使用Int8、Int16、Int32和Int64指代4种大小的Int类型,其末尾的数字正好表明了占用字节的大小(8位=1字节) mysql中: ...MySql建表脚本转CK
前置知识
主要是类型的转换、和空、非空的问题
整形
-
ClickHouse则直接使用Int8、Int16、Int32和Int64指代4种大小的Int类型,其末尾的数字正好表明了占用字节的大小(8位=1字节)
-
mysql中
: int(M)的作用于int的范围明显是无关的,int(M)只是用来显示数据的宽度,我们能看到的宽度。当字段被设计为int类型,那么它的范围就已经被写死了(-2147483648~2147483647),与M无关。
CK的NOT NULL、NULL和Nullable的区别
- 如果字段声明为
not null
它的默认值已由它的类型而定,不允许再为其设置默认值,比如int为0,String为空串。不需要显式声明 - 如果字段显式声明为
null
,默认值为NULL。 - 如果字段声明为
Nullable
,默认为NULL,可设置默认值,损耗性能。
/** * @Author yhchen * @Date 2022/3/8 10:22 */ public class MysqlToCK2 { public static void main(String[] args) { //将sql复制到这里 String createTable = "DROP TABLE IF EXISTS `runoob_tbl`;\n" + "CREATE TABLE IF NOT EXISTS `runoob_tbl`(\n" + " `runoob_id` int UNSIGNED AUTO_INCREMENT,\n" + " `runoob_title` VARCHAR(100) NOT NULL,\n" + " `runoob_author` VARCHAR(40) NOT NULL,\n" + " `submission_date` DATE,\n" + " PRIMARY KEY ( `runoob_id` )\n" + ")ENGINE=InnoDB DEFAULT CHARSET=utf8;"; System.out.println("请检查语句,不要有空行 也就是只有'\\n'"); String res = changeMysqlTableToClickHouse(createTable); System.out.println("转换后的建表语句为:"); System.out.println(res); System.out.println("需要删除ENGINE的上一行最后的一个逗号"); } public static String changeMysqlTableToClickHouse(String tableName) { String tables = tableName; String primaryKey = "`id`";//默认id String[] rows = tables.split("\n"); StringBuilder replaceTables = new StringBuilder(); Boolean haveKey = false; int i = 0; for (String row : rows) { // 注释,不处理 if (row.contains("--")) { replaceTables.append(row + "\n"); continue; } if (row.contains("KEY")) { if (row.contains("PRIMARY")) { haveKey = true; primaryKey = row.substring(row.indexOf("(") + 1, row.indexOf(")")); } // 跳过、不添加 continue; } if (row.contains("ENGINE=InnoDB")) { // 引擎替换 row = ") ENGINE = ReplacingMergeTree"; } // 无关删除 String changeRow = row.replaceAll("AUTO_INCREMENT", "") .replaceAll("CHARACTER SET utf8mb4", "") .replaceAll("CHARACTER SET utf8", "") .replaceAll("ON UPDATE CURRENT_TIMESTAMP", "") .replaceAll("CURRENT_TIMESTAMP", "") .replaceAll("( DEFAULT CHARSET).*", "") // 时间替换 .replaceAll("datetime DEFAULT NULL", " DateTime ") .replaceAll(" datetime ", " DateTime "); /*String规则*/ // 为空,字符串 changeRow = changeRow.replaceAll("(` ).*(char).*(DEFAULT NULL)", "` String NULL"); changeRow = changeRow.replaceAll("(` ).*(char).*(DEFAULT '')", "` String"); // changeRow = changeRow.replaceAll("(DEFAULT '')", "NULL"); // 非空,字符串 changeRow = changeRow.replaceAll("(` ).*(char).*(NOT NULL)", "` String"); changeRow = changeRow.replaceAll("text", "String"); changeRow = changeRow.replaceAll("(DEFAULT NULL)", "NULL"); changeRow = changeRow.replaceAll("(NOT NULL)", ""); // 以空格分割 String[] changeColumns = changeRow.split("[ ]"); // System.out.println(changeRow); // 含有int的替换规则 if (changeColumns[3].contains("int") || changeColumns[3].contains("bigint") ||changeColumns[3].contains("INT")) { changeColumns[3].replaceAll("INT","int"); changeColumns[3].replaceAll("BIGINT","bigint"); // 将括号内的数字拿出来 int length = Integer.parseInt(changeColumns[3] .replaceAll("bigint", "") .replaceAll("tinyint", "") .replaceAll("int", "") .replaceAll("\\(", "") .replaceAll("\\)", "")); // 获取数据类型 String type = changeColumns[3].substring(0, changeColumns[3].indexOf("(")); // 处理int 是否可以为空值 String last = " NULL"; String[] _int = {"Int8", "Int16", "Int32", "Int64"}; if (changeRow.contains("DEFAULT NULL")) { changeRow = changeRow.replaceAll("DEFAULT NULL", ""); for (int j = 0; j < _int.length; j++) { _int[j] = _int[j] + last; } } if ("tinyint".equals(type)) { changeRow = changeRow .replaceFirst(type + "\\(" + length + "\\)", _int[0]); } else if ("smallint".equals(type)) { changeRow = changeRow .replaceFirst(type + "\\(" + length + "\\)", _int[1]); } else if ("int".equals(type) || "mediumint".equals(type)) { changeRow = changeRow .replaceFirst(type + "\\(" + length + "\\)", _int[2]); } else { changeRow = changeRow .replaceFirst(type + "\\(" + length + "\\)", _int[3]); } } replaceTables.append(changeRow.trim() + "\n"); if (i == 0) { replaceTables.append("\n"); } i++; } if (replaceTables.toString().contains(",) ENGINE = Memory")) { String temp = replaceTables.substring(0, replaceTables.indexOf(",) ENGINE = Memory")); replaceTables = new StringBuilder(temp + ") ENGINE = Memory "); } replaceTables.toString().replaceAll("CREATE TABLE `" + tableName + "`", tableName + "_local"); if (haveKey) { replaceTables.append("PRIMARY KEY " + primaryKey); } replaceTables.append("\nORDER BY " + primaryKey); replaceTables.append(";"); return replaceTables.toString(); } }
-
-
【MySQL建表语句转PostgreSQL建表语句】MySQL建表语句转PostgreSQL建表语句 接上一篇
2022-03-10 20:22:05String createSQL = ct.toString() .replaceAll("`", “”") //.replaceAll(“bigint (19)”,“int8”) .replaceAll(“BIGINT UNIQUE NOT NULL AUTO_INCREMENT”, “BIGSERIAL PRIMARY KEY”) .replaceAll(“BIGINT ...String createSQL = ct.toString()
.replaceAll("`", “”")
//.replaceAll(“bigint (19)”,“int8”)
.replaceAll(“BIGINT UNIQUE NOT NULL AUTO_INCREMENT”, “BIGSERIAL PRIMARY KEY”)
.replaceAll(“BIGINT NULL AUTO_INCREMENT”, “BIGSERIAL PRIMARY KEY”)
.replaceAll(“BIGINT NOT NULL AUTO_INCREMENT”, “BIGSERIAL PRIMARY KEY”)
.replaceAll(“INT NOT NULL AUTO_INCREMENT”, “BIGSERIAL PRIMARY KEY”)
.replaceAll(“INT NULL AUTO_INCREMENT”, “BIGSERIAL PRIMARY KEY”)
//.replaceAll(“int8 NOT NULL AUTO_INCREMENT”, “BIGSERIAL PRIMARY KEY”)
.replaceAll(“IF NOT EXISTS”, “”)
.replaceAll(“TINYINT”, “SMALLINT”)
.replaceAll(“DATETIME”, “TIMESTAMP”)
.replaceAll(", PRIMARY KEY \(“id”\)", “”);// 如果存在表注释 if (createSQL.contains("COMMENT")) { String substring = createSQL.substring(createSQL.indexOf("= '")+2); String commentSql = genCommentSql(table.toString(), substring); comments.add(commentSql); createSQL = createSQL.substring(0, createSQL.indexOf("COMMENT")); createSQL = createSQL.substring(0, createSQL.indexOf("ENGINE")); } System.out.println(createSQL + ";"); comments.forEach(t -> System.out.println(t.replaceAll("`", "\"") + ";")); }); }
/**
* 获得注释的下标
*
* @param columnSpecStrings columnSpecStrings
* @return 下标
*/
private static int getCommentIndex(List columnSpecStrings) {
for (int i = 0; i < columnSpecStrings.size(); i++) {
if (“COMMENT”.equalsIgnoreCase(columnSpecStrings.get(i))) {
return i;
}
}
return -1;
}/** * 生成COMMENT语句 * * @param table 表名 * @param column 字段名 * @param commentValue 描述文字 * @return COMMENT语句 */ private static String genCommentSql(String table, String column, String commentValue) { return String.format("COMMENT ON COLUMN %s.%s IS %s", table, column, commentValue); } /** * 生成COMMENT语句 * * @param table 表名 * @param commentValue 描述文字 * @return COMMENT语句 */ private static String genCommentSql(String table, String commentValue) { return String.format("COMMENT ON TABLE %s IS %s", table, commentValue); }
}
-
activity 5.17 mysql 建表sql
2018-02-01 16:43:03activity 5.17 mysql 建表sql activity 5.17 mysql 建表sql activity 5.17 mysql 建表sql -
mysql建表命令
2021-10-19 16:09:39mysql建表命令 CREATE TABLE javafind2 ( id varchar(10) not null primary key, image varchar(30) NOT NULL, password varchar(20) NOT NULL ); 学的都还回去了,建表命令频频写错。。。。 2.插入命令 ... -
mysql建表模板
2022-06-30 17:57:27记录一个数据库的建表模板,以后需要建表的时候,直接拿来,修改字段即可,把更多时间用在逻辑梳理上。 -
Excel表结构模板生成MySql建表语句
2021-11-16 14:25:39Excel表结构模板生成MySql建表语句Excel表结构模板Java 代码生成的MySql建表语句 Excel表结构模板 Java 代码 依赖EasyExcel <dependency> <groupId>com.alibaba</groupId> <artifactId>... -
mysql建表的注意细节
2021-12-16 16:00:41mysql设置自增的起点 mysql的row format相关 innodb 一般对应 Compact , MyISAM 一般对应静态与动态 FIXED && DYNAMIC mysql中若一张表里面存在varchar、text以及其变形、blob以及其变形的字段的话,那么... -
mysql建表
2022-03-15 18:08:141. 登录数据库 ...mysql> show databases; +---------------------+ | Database | +---------------------+ | information_schema | | fairykunkundatabase | | mysql | | test | | wbj22011 | +------ -
mysql 建表及注释
2021-09-30 14:52:201.建表+注释 CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT COMMENT ‘学号’, name VARCHAR(200) COMMENT ‘姓名’, age int COMMENT ‘年龄’ ) COMMENT=‘学生信息’ 2.修改注释 修改表注释-ALTER ... -
Hive Schema导出Mysql建表语句
2022-05-19 16:44:57}).collect().mkString(",") //创建建表语句模板 //生成建表语句 val createTableSql = s""" |DROP TABLE IF EXISTS `${tableName}`; |CREATE TABLE IF NOT EXISTS `${tableName}` ( |${fieldSql} |) ENGINE = ... -
mysql建表以及列属性
2021-01-20 20:09:23一、整型( int, tinyint, smallint 等 )------------------------------------------------------------------------------------------------------------------------------------------------------#创建表CREATE... -
mysql建表外键怎么设
2021-03-15 20:14:19mysql建表外键怎么设mysql建表时设置外键的方法:在“CREATE TABLE”语句中,通过“[CONSTRAINT ] FOREIGN KEY 字段名 [,字段名2,…] REFERENCES 主键列1 [,主键列2,…]”语句设置。MySQL 外键约束(FOREIGN KEY)是表... -
MySQL建表注意事项
2021-01-19 06:10:201.建表规范-- 数据库名丶表名,全部使用小写字母,使用"_"下划线连接且长度小于12,做到见名知意2.建议使用 innodb 引擎,这也是MySQL的默认引擎3.字段类型选择-- 建议所有的表都有一个自增id ,可以经常作为主键-- 存储... -
MySQL建表时,日期时间类型选择
2021-01-18 18:39:47MySQL(5.5)所支持的日期时间类型有:DATETIME、TIMESTAMP、DATE、TIME、YEAR。几种类型比较如下:日期时间类型占用空间日期格式最小值最大值零值表示DATETIME8 bytesYYYY-MM-DD HH:MM:SS1000-01-01 00:00:009999-12-... -
mysql 建表语句转成 clickhouse
2022-02-22 14:13:43import re ddl = """ create table `device` ( `DeviceID` Decimal (19), `ClassID` int (11), `DeviceCode` varchar (300), `RegID` int (11), `DeptName` text , `OfficeName` varchar (192), ... -
Excel生成MYSQL建表语句(附完整代码)
2020-12-25 16:45:43Excel生成MYSQL建表语句 背景:工作需要根据标准文档创建数据库表,但是体量太大了,一张表可能有100+字段,一行一行录入实在是太吃力了(使用的Navicat,建表时没办法复制粘贴换行录入,不知道其他数据库工具有... -
mysql建表且设置主键自增
2021-01-25 11:48:47/*Navicat MySQL Data TransferSource Server : 192.192.192.4Source Server Version : 50632Source Host : 192.192.192.4:3306Source Database : srapp_stshjzTarget Server Type : MYS...