2024年3月27日

MySQL: MySQL删除数据库中所有的表

MySQL如何删除数据库中所有的表 需求: 方法1(他人之见) 方法2(常用) 方法3(最方便): 方法4(鄙人之见): 1.行转列的查询 2 复制查询出的数据 3. 使用Navicat、idea 等数据库软件 4. 执行sql 5. 可能出现的问题: 6.总结 需求: 删除数据库所有表,此处数据库为 activiti_db。 方法1(他人之见) SELECT concat('DROP TABLE IF EXISTS ', table_name, ';') FROM information_schema.tables WHERE table_schema = 'mydb'; mydb换成你想删除的数据库的名字 这样可以生成一个批量处理的sql语句,你需要再运行一次这个结果集 就可以删除所有的表而不删除数据库了 例如: ①新建查询: ②返回的结果集,复制出来再运行一次。(复制,可以shift…
2024年3月10日

MySQL: MySQL计算字段长度/大小函数的对比 (length / bit_length / char_length)

适用于MySQL 5.6及以上 注意: char_length、length、bit_length函数只是用于计算字符串数据的长度。 CHAR和VARCHAR实际存储开销比数据要大,详情参见《MySQL中VARCHAR最大长度是多少?CHAR和VARCHAR有哪些区别?》 非字符串类型,在《MySQL所有类型的字段长度、取值范围、存储开销(区分显示宽度/有无符号)》中有详细拆解。 如需评估数据库/表/行的存储开销,可以参考《MySQL如何评估数据量(行大小、数据存储和索引存储)》 定义 char_length、length、bit_length都是MySQL内置的字符串函数,用于计算字符串的长度1。 非字符串会先转为字符串,再执行长度计算 char_length与CHARACTER_LENGTH函数作用相同 区别 三个函数计算的单位不…
2024年2月10日

MySQL: MySQL设置动态的创建时间(create_time)和修改时间(update_time)

我这里用的是Navicat,直接在字段属性修改 这个适用于5.7及更高版本,5.7之前的版本会出现问题~~ 当前时间戳:CURRENT_TIMESTAMP 一般情况下,创建时间、修改时间都是用datetime类型; datetime类型在没有默认值的情况下是不会自动赋值的; 在开发阶段,不想传这两个值,但又想不为null,所以就需要用到CURRENT_TIMESTAMP这个参数。 创建时间: 一般是在创建数据时才会赋值,使用SQL的话,就需要在字段上添加默认值: DEFAULT CURRENT_TIMESTAMP(0) 使用Navicat的情况下,就需要添加CURRENT_TIMESTAMP为默认值。 修改时间: 一般是在创建数据、修改数据时才会赋值,使用SQL的话,就需要在字段上添加默认值: DEFAULT CURRENT_TIMEST…
2024年1月15日

MySQL: MySQL查询报错 Error: #1060 列名重复 'id' Error: 1060 Duplicate column name 'id'

1. 问题概述: 为了便于演示,创建表 contacts,并向其中插入一些样本数据: CREATE TABLE IF NOT EXISTS `contacts` ( `id` int(11) PRIMARY KEY AUTO_INCREMENT NOT NULL, `first_name` varchar(50) NOT NULL, `last_name` varchar(50) NOT NULL, `email` varchar(255) NOT NULL ) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; INSERT INTO `contacts` (`id`, `first_name`, `last_name`, `email`) VALUES (1, 'Carine ', 'Schmitt', 'carine.schmitt@veriz…
2024年1月12日

MySQL: MySQL中的COLLATE详解

MySQL COLLATE是校对集的意思,可以理解为,排序规则等,下面详细介绍关于MySQL中COLLATE 前言 在MySQL中执行show create table 指令,可以看到一张表的建表语句,example如下: CREATE TABLE `table1` (     `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,     `field1` text COLLATE utf8_unicode_ci NOT NULL COMMENT '字段1',     `field2` varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '字段2',     PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=u…
2024年1月9日

MySQL: MySQL删除重复行

概括:在这个教程中,你将会学到多种用在 MySQL 中的删除重复行的方法。 一、准备样本数据 为了便于演示,我们用下面的脚本创建了表 contacts,并向其中插入了一些样本数据。 DROP TABLE IF EXISTS contacts; CREATE TABLE contacts ( id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(50) NOT NULL, last_name VARCHAR(50) NOT NULL, email VARCHAR(255) NOT NULL ); INSERT INTO contacts (first_name,last_name,email) VALUES ('Carine ','Schmitt','[email protected]'), ('Jean','King'…
2024年1月2日

MySQL: MySQL设置 auto_increment 重新计数 主键id从1开始

在使用auto_increment时,应该注意一个小问题, 当进行delete from 表名称 清空表的时候,重新插入数据 , 发现auto_increment主键字段计数不是从1开始的,而是接着最新插入的数据id开始! 那么如何重新计数呢? 可以使用以下命令: 方法1 delete from 表名称; alter table 表名称 auto_increment=1 #--这种方法处理的好处就是 可以设置auto_increment 为任意值开始自增 #--提示:如果表列和数据很多,速度会很慢,如90多万条,会在10分钟以上, 所以注意使用场景 方法2 #--直接一句话搞定 truncate table 表名称 #--(好处就是简单,auto_increment值重新开始从1计数) 重点注意 : 一般情况下我们使用第二个就可以了,记住以上情况都是彻底删除所有记录, 所…
2024年1月2日

MySQL: MySQL中插入一列自增序号 / 数字序列

在查询结果中加一个序号列实现自增,实验如下: 只给了id和name两个字段,方便测试。 随便插入了几条数据 select @rd := @rd + 1 as rownum, b.name from (select @rd := 0, name from test) b 取出name属性,然后给变量rd自增1赋给rownum,看结果:…
2024年1月2日

MySQL: 在MySQL中生成数字序列 / 序号

在MySQL中生成整数序列的最简单方法是什么?换句话说,我应该写哪个SELECT <something>语句以获得0、1、2…N – 1? 这是我多年来一直在苦苦挣扎的问题,看起来我终于找到了答案(尽管我必须承认我必须付出一些开发努力,并在服务器代码中添加几百行)。 适用于MySQL 8.0.20-11的Percona Server包含专门用于解决此问题的新功能。 但是,在揭示所有秘密之前,让我们首先考虑现有的解决方案。因此,我们希望获得以下信息: SELECT ??? +-------+ | value | +-------+ | 0 | | 1 | | ... | | N - 1 | +-------+ N rows in set (0.00 sec) 我们有什么选择呢? 老派方式 让我们从最简单的解决方案开始。 UNION to the Rescue 听起来有些原始,但最简单的解…
2023年12月21日

MySQL: MySQL的日志文件及配置

对MySQL中的6种日志文件,以及配置做简单的记录。 二进制日志(binlog) 记录所有引起数据变化的操作,用于备份和还原,使用主从复制时也需要开启binlog 默认存放在datadir目录下,在刷新和重启数据库是会滚动二进制文件,产生新的binlog; [mysql@localhost mysql]$ vi /etc/my.cnf 修改[mysqld]下的配置 #以下为 my.cnf 部分配置 [mysqld] basedir=/home/mysql/mysql-5.7/ datadir=/home/mysql/mysql-5.7/data/ #序列号 server_id=1 #不指定log文件,默认mysqld-bin.00000* 作为文件名称; log-bin=mysql-bin #基于SQL语句的复制(statement-based rep…