我们针对数据库的增删改查语句比较熟悉了,但是今天建立数据库的时候想在固定位置通过语句添加一列,做以下总结: ALTER TABLE:添加,修改,删除表的列,约束等表的定义。...查看列:desc 表名; 修改表名:alter table t_book rename to t_user; 添加列:ALTER TABLE t_userADD COLUMN tianjia INT...(后面表示是在id列后添加) AFTER id; 删除列:alter table 表名 drop column 列名; 修改列名MySQL: alter table t_user change...修改列名Oracle:lter table t_user rename column tianjia to xiugai int; 修改列属性:alter table t_book modify...namevarchar(22);** 注意:这里表名和列名是否加 ‘’ 都可以 针对上述部分语句做一个示例 1.我的是mysql数据库,t_user表: 2.在id的列后添加tianjia列:
1.3 列属性 1.3.1 是否为空(null|not null) null表示字段值可以为null not null字段值不能为空 练习 学员姓名允许为空吗?...在MySQL中只要是自动增长列必须是主键 1.3.4 主键(primary key) 主键概念:唯一标识表中的记录的一个或一组列称为主键。...insert into stu25 values (3,'tom'); -- 可以直接插入数字 Query OK, 1 row affected (0.06 sec) -- 自动增长列可以插入null,让列的值自动递增...truncate table删除数据后,再次插入从1开始 练习 在主键列输入的数值,允许为空吗? 不可以 一个表可以有多个主键吗?...不可以 在一个学校数据库中,如果一个学校内允许重名的学员,但是一个班级内不允许学员重名,可以组合班级和姓名两个字段一起来作为主键吗? 对 标识列(自动增长列)允许为字符数据类型吗?
如下,我的一个Windows下的项目移植到Linux环境中就因为MySQL严格区分大小写问题报错: ? ? ?...这个时候怎么办呢,显然改程序是不行的,时间上也不允许,所以只能设置MySQL数据库不区分大小写了,大家看以下步骤: 1、查询MySQL是否设置了区分大小写 show variables like "%case...其中lower_case_table_names代表了:0是区分大小写; 1是不区分大小写。显然我这个MySQL是区分大小写的。...拓展知识 MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的: 1、数据库名与表名是严格区分大小写的; 2、表的别名是严格区分大小写的; 3、列名与列的别名在所有的情况下均是忽略大小写的...; 4、变量名也是严格区分大小写的; MySQL在Windows下都不区分大小写。
而Windows下的MySQL却是大小写不敏感的,所有表名和数据库名都会变成小写。...对于怎么启用或者停用MySQL数据库的大小写敏感,这个网上随便都能找到,就是改改参数lower_case_table_names,然后重启即可。...为此,我们需要将MySQL改为大小写敏感的模式,然后去重命名每个表名和数据库名。...一个一个的数据库去这么做,然后再把MySQL的参数改为大小写不敏感,这样才能正常使用。...这里我只是做了表的迁移,接下来存储过程和视图的迁移,由于不涉及到数据,所以比较简单,找到当年的DDL或者我们在大小写敏感的时候就导出View和存储过程的定义,然后用文本编辑器把整个SQL变成小写的,然后到新数据库中去执行
MySQL 的参数(variables)决定了数据库的行为模式、性能表现、存储策略及安全规则等核心特性。即便数据库版本相同,若两个实例的关键参数存在差异,执行相同 SQL 时仍可能出现显著的性能偏差。...此外,参数一致性报告可纳入运维规范体系,同时为数据库升级或迁移提供重要参考,从而规避因实例间参数差异导致的迁移失败或性能下降风险。...以下是一个比较两个MySQL实例的参数输出差异,并保存到CSV的python脚本。#!...v2: diffs.append((k, v1, v2)) # ======== 保存为 CSV ========def save_to_csv(diffs, filename="mysql_diff.csv...diffs: print(f"{k:40s} {str(v1):35s} {str(v2)}") save_to_csv(diffs) else: print("✅ 两个实例参数完全一致
如果打算为项目选择一款免费、开源的数据库,那么你可能会在MySQL与PostgreSQL之间犹豫不定。MySQL与PostgreSQL都是免费、开源、强大、且功能丰富的数据库。...在选择数据库时,你所做的是个长期的决策,因为后面如果再改变决定将是非常困难且代价高昂的。你希望一开始就选择正确。两个流行的开源数据库MySQL与PostgreSQL常常成为最后要选择的产品。...对这两个开源数据库的高层次概览将会有助于你选择最适合自己需要的。 MySQL MySQL相对来说比较年轻,首度出现在1994年。它声称自己是最流行的开源数据库。...关系数据库系统都是非常复杂的,这两个数据库的学习曲线其实是差不多的。 标准兼容性 PostgreSQL旨在实现SQL兼容性(当前标准是ANSI-SQL:2008)。...结论 虽然有不同的历史、引擎与工具,不过并没有明确的参考能够表明这两个数据库哪一个能够适用于所有情况。
1、备份原来数据库表结构,在新库中恢复表结构,必须跟原库一模一样,包括索引等。...TABLES WHERE TABLE_SCHEMA = '数据库名' ) aa 3、在新库中执行以下语句,删除新库的.ibd数据文件 alter table 表名 discard...tablespace; 4、将原库上的表的.ibd文件和.cfg文件传输到新库 scp -r 老数据库服务器用户名@老数据库服务器ip:老数据库文件路径 新数据库路径 如: scp -r root@...127.0.0.1:/mysql/data/wang/table.ibd /mysql/data/wang 5、原库解锁表,会删除.cfg文件 unlock tables; 6、新库修改文件权限,数据文件抽过来之后默认为...root 权限,改为 mysql 权限 chown -R mysql.mysql * 7、在新库中执行以下语句,导入新抽取的数据文件 alter table 表名 import tablespace;
好了,先来解答上节课留下的问题:【注:由于周末临时用了别的电脑,所以数据会有所不同】我们在数据库表中新增一列user_height表示身高,然后拿到所有数据:图片我们如果单单用user_age来分组看看结果如何...我来总结一下吧:简而言之就是这里边user_id不是聚合列,在功能上也不是groug by所需要的字段。你:user_id不行?那user_name呢?...黄啊码:我发觉大聪明最近有长进了select user_age from user_info group by user_age;图片确实是可以的,这里就相当于把user_age当成聚合列来使用。...你:【下次再也不出风头了】select user_age,user_height from user_info group by user_age,user_height;图片好了,多个列进行group
seq_stu.nextval) 如何重置数据表中自增 1、删除该序列,再重新创建该序列即可 2、 truncate table 表名; 注意:截断表,即删除所有数据,只保留表结构 Mysql...auto_increment = 1000; --auto_increment = 1000作用是从字段数字从1000开始 如何重置数据表中自增 TRUNCATE TABLE 表名; 注意:会删除表中的数据,只有在MySQL
好了,先来解答上节课留下的问题: 我们在数据库表中新增一列user_height表示身高,然后拿到所有数据: 我们如果单单用user_age来分组看看结果如何: 你:这也太简单了吧,我来: select...我来总结一下吧:简而言之就是这里边user_id不是聚合列,在功能上也不是groug by所需要的字段。 你:user_id不行?那user_name呢?...黄啊码:我发觉大聪明最近有长进了 select user_age from user_info group by user_age; 确实是可以的,这里就相当于把user_age当成聚合列来使用...你:【下次再也不出风头了】 select user_age,user_height from user_info group by user_age,user_height; 好了,多个列进行group
Tezer分别从数据库支持的数据类型、优势、劣势、何时应该使用以及何时不应该使用该数据库这5个方面对SQLite、MySQL和PostgreSQL做了比较。...MySQL MySQL是最受欢迎的一个大规模数据库服务器。它是一款功能丰富的开源产品,许多网站和在线应用程序都使用该数据库。...MySQL的入门相对比较简单,开发者可以从Internet上获取到大量与该数据库相关的信息。 注意:鉴于该产品的受欢迎程度,使用该数据库可以让我们受益于大量第三方应用程序、工具以及集成类库。...尽管MySQL并没有尝试实现完整的SQL标准,但是它依然为用户提供了大量功能。作为一个独立的数据库服务器,应用程序需要与MySQL守护进程通信才能访问数据库——不同于SQLite。...复制 对于缺少数据库和系统管理经验的人而言使用MySQL实现复制要更简单,除非你愿意花费时间、精力和资源。 原文: SQLite vs MySQL vs PostgreSQL:关系型数据库比较
通过 vim /etc/my.cnf 修改配置文件, 在 mysqld 模块下面添加 lower-case-table-names=1, 参数 1 代表大小不敏感,0 代表大小写敏感。...再通过 service mysql restart 或 service mysqld restart 命令重启下服务就生效了。...效果演示: 下面是我修改配置文件之前,默认是大小写敏感的,我的表名本身是小写的。 这时通过大写表名查询可以看到查不到。 修改配置文件后,再查询一下就可以查到了。
原文 | http://1t.click/FAB 在数据库设计的时候,我们经常会需要设计时间字段,在 MYSQL 中,时间字段可以使用 int、timestamp、datetime 三种类型来存储,那么这三种类型哪一种用来存储时间性能比较高...d_timestamp)>400000 AND UNIX_TIMESTAMP(d_timestamp)<600000 查询花费 0.2944 秒 对于 timestamp 类型,有了索引,反倒不建议使用 MYSQL...d_datetime)>400000 AND UNIX_TIMESTAMP(d_datetime)<600000 查询花费 0.9994 秒 对于 datetime 类型,同样有了索引,反倒不建议使用 MYSQL...直接和时间比较)> UNIXTIMESTAMP(datetime) 。...一句话,对于 MyISAM 引擎,采用 UNIX_TIMESTAMP(timestamp) 比较;对于InnoDB 引擎,建立索引,采用 int 或 datetime直接时间比较。
作者 | 哒波甜 来源 | https://juejin.cn/post/6844903701094596615 数据库中可以用datetime、bigint、timestamp来表示时间,那么选择什么类型来存储时间比较合适呢...前期数据准备 通过程序往数据库插入50w数据 数据表: CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `time_date...useGeneratedKeys = true,keyProperty = "id",keyColumn = "id") int saveUsers(Users users); } 测试类往数据库插入数据...存储引擎下,通过时间范围查找,性能bigint > datetime > timestamp sql分组速率测试 使用bigint 进行分组会每条数据进行一个分组,如果将bigint做一个转化在去分组就没有比较的意义了...timestamp > datetime 小结 如果需要对时间字段进行操作(如通过时间范围查找或者排序等),推荐使用bigint,如果时间字段不需要进行任何操作,推荐使用timestamp,使用4个字节保存比较节省空间
本文学习是MySQL中识别符大小写敏感性学习,在MySQL中,数据库对应数据目录中的目录。数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎)。...索引、存储子程序和触发器名在任何平台上对大小写不敏感,列的别名也不敏感。...1 表名在硬盘上以小写保存,名称比较对大小写敏感。MySQL将所有表名转换为小写以便存储和查找。该行为也适合数据库名和表的别名。该值为Windows和Mac OS X系统中的默认值。...2 表名和数据库名在硬盘上使用CREATE TABLE或CREATE DATABASE语句指定的大小写进行保存,但MySQL将它们转换为小写以便查找。名称比较对大小写敏感。...要想避免由于数据库或表名的大小写造成的数据转移问题,可使用两个选项: · 在任何系统中可以使用lower_case_tables_name=1。
collation可以被支持 基于以上的问题,我们已经了解到collation的重要性,他是一个规则,满足数据库中表的数据进行比较和排序的重要标记属性。...下面我们带着几个问题,来看MYSQL 的COLLATION 的问题 问题1 ,怎么能让我的数据库在比对英文大小写的时候,能产生差异 create table change_letter_i (id int...问题 2 在MYSQL 中两个不同 collation的表对比字符会产生什么结果?...SQL 可以看出,虽然我们的原有列大小写是不敏感的,但是在我们针对查询中,指出,这个列要大小写敏感的情况下,查询的结果是根据SQL 最终的collation 设定进行查询结果的输出的。...通过以上的介绍,我们可以联想出,在一些中文字符的比较中,可以针对中午的特殊的列进行特殊的 collation的设置。
: Table 'zup.Domain_System' doesn't exist] with root cause 解决问题 首先可以肯定我数据库中是存在这个表的,只是全是小写的,而SpringBoot...在mysql 5.7.x版本中默认是大小写区分的。...可以登录mysql之后查看show variables like "%case%";: lower_case_table_names=0,默认为0,则区分大小写 truedei@truedei:/...Your MySQL connection id is 2 Server version: 5.7.29 MySQL Community Server (GPL) Copyright (c) 2000...[(none)]> 所以解决方法就是修改mysql中的配置文件,让其忽略大小写: 因为我使用的是docker安装的mysql5.7,并且把配置文件映射到 了:/data/mysql/conf/my.conf
USE my_database; 二、字符集和校验规则 在MySQL中,字符集(Character Set)和校验规则(Collation)是两个重要的概念,它们共同决定了数据库中字符串的存储和比较方式...在MySQL中,字符集决定了数据库中字符串的存储方式。 ASCII:共收录128个字符,包括空格、标点符号、数字、大小写字母和一些不可见字符。...2.2 校验规则(Collation) 校验规则,也称为排序规则,定义了字符的比较规则。在同一个字符集内,字符之间的比较和排序都是基于校验规则来进行的。...大小写敏感:如utf8_bin,在这种校验规则下,字符的比较是区分大小写的。 大小写不敏感:如utf8_general_ci,在这种校验规则下,字符的比较是不区分大小写的。...字符集决定了数据库中可以存储哪些字符,而校验规则决定了这些字符如何进行比较和校验。
这两个字符集是类似的,utf8是utf8mb3的别名,所以之后在MySQL中提到utf8就意味着使用1~3个字节来表示一个字符,如果大家有使用4字节编码一个字符的情况,比如存储一些emoji表情啥的,需要使用...比较规则可以作用于四个级别,分别是:服务器级别、数据库级别、表级别、列级别。...服务器级别的比较规则由collation_server参数控制,如果创建数据库、表、列时没有显式的指定比较规则,则会继承上一级的比较规则。...下面给出创建及修改库、表、列的比较规则的示例语句: # 创建数据库指定比较规则 修改数据库的比较规则 CREATE DATABASE 数据库名 [[DEFAULT] CHARACTER SET...如果某个表或列字段要求区分大小写,可以单独指定该表或字段使用utf8_bin比较规则。 最后以思维导图的方式总结下本文的主要内容: ?
服务配置说明: 服务器名称 服务器地址 数据库名称 用户名 密码 端口 数据库服务器A 121.xx.xx.xx youjihui_zs root youjihui 3306 数据库服务器B 120.yy.yy.yy...由于映射后,这两个表的数据和操作是完全同步的,也就是说,在其中任何一个表上执行插入、更新和删除操作,引擎会在另外一个表中执行同样的操作。...由于t_index是正式数据库的表,t_index_cx是查询数据库的表。如果在查询数据库中操作数据,引发正式库的数据变化,是相当有风险的。 4.方案 方案结构图如下: 过程说明: 4.1....查询库授权正式库的操作权限 授权可以从ip为121.xx.xx.xx的服务器A上,用root用户密码是root,访问当前服务器B的mysql服务: GRANT ALL PRIVILEGES ON *.*...t_index_zs ( id VARCHAR(50) not null, mc VARCHAR(200), PRIMARY KEY(id) )ENGINE=FEDERATED CONNECTION=’mysql