精华内容
下载资源
问答
  • mysql怎么建表
    千次阅读
    2021-07-12 08:57:49

    – 创建表
    DROP TABLE
    IF
    EXISTS department;
    CREATE TABLE department (
    id INT ( 11 ) NOT NULL AUTO_INCREMENT COMMENT ‘主键’,
    code VARCHAR ( 100 ) DEFAULT NULL COMMENT ‘编号’,
    name VARCHAR ( 255 ) DEFAULT NULL COMMENT ‘名称’,
    PRIMARY KEY ( id ),
    UNIQUE KEY index_code ( code ),
    INDEX index_name ( name )
    ) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT ‘部门表’;

    – 单独添加索引
    ALTER TABLE department ADD UNIQUE ( code );
    ALTER TABLE department 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 TABLE table_name ADD PRIMARY KEY ( column )
    UNIQUE(唯一索引)
    ALTER TABLE table_name ADD UNIQUE (column)
    INDEX(普通索引)
    mysql>ALTER TABLE table_name ADD INDEX index_name ( column )
    FULLTEXT(全文索引)
    ALTER TABLE table_name ADD FULLTEXT ( `col

    多列索引
    ALTER TABLE table_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:41
    JAVA编写,填写好excel模板,点击“点我运行.bat”,即可生成sql语句。没有积分下载的话可以看我的文章,有完成的源代码。
  • 好用的java实体转MySQL建表语句,非常实用,不好使你找我!
  • mysql建表时间字段规范用法
  • MySql建表规范与说明。建表的注意事项,以及mysql的示例建表,decimal或numeric在不指定小数位数时,默认小数位数为0
  • 本篇文章是对Mysql建表和索引使用规范进行了详细的分析介绍,需要的朋友参考下
  • oracle向mysql建表语句的迁移。 直接表结构的生成sql脚本
  • MYSQL建表脚本导入步骤详图;MYSQL建表脚本导入步骤详图;MYSQL建表脚本导入步骤1;MYSQL建表脚本导入步骤2;MYSQL建表脚本导入步骤3;MYSQL建表脚本导入步骤4;MYSQL建表脚本导入步骤5;MYSQL建表脚本导入步骤6;MYSQL建表...
  • 熟悉一些常用的建表语句可以提升你建表的速度效率,本文整理了一些,个人感觉还不错,希望对大家有所帮助
  • args) 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建表及样本数据的代码。减少人工时间成本。
  • MySql建表脚本转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的区别

    1. 如果字段声明为 not null它的默认值已由它的类型而定,不允许再为其设置默认值,比如int为0,String为空串。不需要显式声明
    2. 如果字段显式声明为null,默认值为NULL。
    3. 如果字段声明为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();
        }
    }
    
    展开全文
  • String 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 activity 5.17 mysql 建表sql activity 5.17 mysql 建表sql
  • mysql建表命令

    2021-10-19 16:09:39
    mysql建表命令 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建表语句Excel表结构模板Java 代码生成的MySql建表语句 Excel表结构模板 Java 代码 依赖EasyExcel <dependency> <groupId>com.alibaba</groupId> <artifactId>...
  • mysql建表的注意细节

    2021-12-16 16:00:41
    mysql设置自增的起点 mysql的row format相关 innodb 一般对应 Compact , MyISAM 一般对应静态与动态 FIXED && DYNAMIC mysql中若一张表里面存在varchar、text以及其变形、blob以及其变形的字段的话,那么...
  • mysql建表

    2022-03-15 18:08:14
    1. 登录数据库 ...mysql> show databases; +---------------------+ | Database | +---------------------+ | information_schema | | fairykunkundatabase | | mysql | | test | | wbj22011 | +------
  • mysql 建表及注释

    2021-09-30 14:52:20
    1.建表+注释 CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT COMMENT ‘学号’, name VARCHAR(200) COMMENT ‘姓名’, age int COMMENT ‘年龄’ ) COMMENT=‘学生信息’ 2.修改注释 修改表注释-ALTER ...
  • }).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:19
    mysql建表外键怎么设mysql建表时设置外键的方法:在“CREATE TABLE”语句中,通过“[CONSTRAINT ] FOREIGN KEY 字段名 [,字段名2,…] REFERENCES 主键列1 [,主键列2,…]”语句设置。MySQL 外键约束(FOREIGN KEY)是表...
  • MySQL建表注意事项

    千次阅读 2021-01-19 06:10:20
    1.建表规范-- 数据库名丶表名,全部使用小写字母,使用"_"下划线连接且长度小于12,做到见名知意2.建议使用 innodb 引擎,这也是MySQL的默认引擎3.字段类型选择-- 建议所有的表都有一个自增id ,可以经常作为主键-- 存储...
  • MySQL建表时,日期时间类型选择

    千次阅读 2021-01-18 18:39:47
    MySQL(5.5)所支持的日期时间类型有:DATETIME、TIMESTAMP、DATE、TIME、YEAR。几种类型比较如下:日期时间类型占用空间日期格式最小值最大值零值表示DATETIME8 bytesYYYY-MM-DD HH:MM:SS1000-01-01 00:00:009999-12-...
  • import re ddl = """ create table `device` ( `DeviceID` Decimal (19), `ClassID` int (11), `DeviceCode` varchar (300), `RegID` int (11), `DeptName` text , `OfficeName` varchar (192), ...
  • Excel生成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...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 126,047
精华内容 50,418
关键字:

mysql怎么建表

mysql 订阅