剑指MySQL 8.0:入门、精练与实战
学习MySql中遇到的问题
这该死迷人的编程
这个作者很懒,什么都没留下…
展开
-
MySQL第十个问题 set 类型添加注意
INSERT INTO t7(email, address, work_place) VALUES (‘zhangsan@atguigu.com’, ‘北京市昌平区’, ‘work_place SET(‘北京’, ‘上海’, ‘广州’, ‘深圳’) NOT NULL DEFAULT ‘北京’报错 Data truncated for column ‘work_place’ at row 1。选择集合的多个值时,一定要注意值之间不要有空格!原创 2024-09-26 09:10:49 · 135 阅读 · 0 评论 -
MySQL第九个问题 有自增的记录添加不上?
答案:大家一定不要忘记在添加记录时 设置为自增的那个字段 要是它不是默认值的话一定要记得加上它!而且一定要注意看报错内容,明明说得很明白就是列的数量和值的数量不一样(哭,我没有仔细看,导致我花了好长时间才解决)报错[21S01][1136] Column count doesn’t match value count at row 1。) VALUES (‘张三’), (‘李四’), (‘王五’);) VALUES (NULL,‘赵都是’);) VALUES (NULL,‘赵都是’);原创 2024-09-24 17:04:06 · 122 阅读 · 0 评论 -
MySQL 天数差
如果需要更详细的时间间隔信息,则可以考虑使用减法运算。这种方式返回的结果是一个 INTERVAL 类型,包含了日期差值以及单位信息(如天数、月数等)。DATEDIFF(CURDATE(), birthday) 返回的是两个日期之间的天数差。(CURDATE() - birthday) 同样可以用来计算两个日期之间的差距。这个函数专门用于计算两个日期之间的差异,并返回一个整数值。减法运算返回的是一个包含更多时间单位信息的间隔对象。DATEDIFF 只返回天数差,结果是一个整数。返回的结果是不一样的!原创 2024-09-20 11:21:59 · 325 阅读 · 0 评论 -
MySQL第八个问题 使用group by报错sql_mode=only_full_group_by
当你有一个表,并且你想基于某些列进行分组,但同时又想选择那些没有包含在 GROUP BY 子句中的其他列时,可以使用 ANY_VALUE() 来避免错误。在 MySQL 中,ANY_VALUE() 是一个聚合函数,用于返回被聚合的第一行的列值。当查询结果只需要一行记录,并且不需要保证特定的值时,可以使用 ANY_VALUE()。ANY_VALUE() 返回的是分组中的任意一个值,不一定是第一个或最后一个。解决办法:上网上查询了下any_value()函数可以解决,将代码改为。原创 2024-09-19 20:11:54 · 394 阅读 · 0 评论 -
MySQL第七个问题 右连接
问题二:代码是对于t_job表和t_department表是右连接,但是为什么在下图中倒数第二行只有部门id不为空(姓名什么的其他字段都为空目的是验证右连接)的那条记录成功显示了,而最后一行只有job_id不为空的那行记录没有成功显示呢?只成功显示了t_department的右连接?job_id=3在t_job中是有对应记录的,下图。最后一行的did就为空了呢?问题一:上述代码显示。但是为什么将代码改成。原创 2024-09-19 12:09:07 · 291 阅读 · 0 评论 -
MySQL第六个问题 REGEXP、LIKE不区分大小写?
SELECT ENAME, EMAIL FROM t_employee WHERE email REGEXP '\d’返回结果不一样呢;问题:为什么SELECT ENAME, EMAIL FROM t_employee WHERE email REGEXP ‘\D’;查询 SELECT ENAME, EMAIL FROM t_employee WHERE email REGEXP ‘\D’;在正则表达式中,\ 表示转义字符,D 表示非数字字符(即除了数字0-9以外的任何字符)。原创 2024-09-12 15:03:01 · 177 阅读 · 0 评论 -
MySQL第五个问题 CAST(待解决)
问题:为什么SELECT * FROM t6_binary WHERE b1 = ‘a’;背景:CREATE TABLE t6_binary(通过CAST函数将二进制字符串显示为文本字符串。b2不是已经转换为字符串了吗?原创 2024-09-10 11:27:34 · 159 阅读 · 0 评论 -
MySQL第四个问题 int(M)问题
解答:问GPT说是 MySQL 实际显示可能会受不同的配置和版本影响?有些懒得换版本尝试,先挖个坑,后续再解决,希望有大佬可以解救我。为什么num2宽度不是3位而是十位?背景:CREATE TABLE t2_int(为什么num2不是显示1314?按照理论来说应该显示两行下图的。依旧显示的是INT默认宽度10。继续尝试,添加1314。原创 2024-09-08 19:40:39 · 320 阅读 · 3 评论 -
MySQL第三个问题 SET AUTOCOMMIT = 0
解答:理解错误,在一个事务内运行结果是会改变的,但是写rollback的话再select。问题:为什么SET AUTOCOMMIT = 0;未在程序中运行commit。说明SET AUTOCOMMIT = 0后面的添加删除操作都被提交了?则会回到设置SET AUTOCOMMIT = 0前的表的状态;说明SET AUTOCOMMIT = 0后的语句被提交表被改变。而运行commit的话再select则。下面的操作还是被自动提交了呢?原创 2024-09-08 17:43:14 · 186 阅读 · 0 评论 -
MySQL第二个问题 insert into
初步想法:要是想使用完全不指定字段名的方式插入记录,一定要保证插入的列数与表的列数完全一致(看网上有的人因为有某一列是自增的忘记插入自增的那一项的值,也和我报同样的错误),所以我这个插入是否只能用指定所有字段名来插入记录呢?报错Column count doesn’t match value count at row 1;但是INSERT INTO tb_student(SID, SNAME, CHINESE, MATH, ENGLISH) VALUES (2, ‘SDS’, 88, 99, 96);原创 2024-09-08 17:24:43 · 104 阅读 · 0 评论 -
MySQL第四章 drop delete truncate
truncate table也是删除表中所有的记录,但删除数据表中的所有记录是直接删除原来的表,并重新创建一个表,所以运行truncate table提示0条记录受影响。由于“TRUNCATE TABLE”语句是直接删除表而不是删除记录,因此执行速度比DELETE块。但是使用“TRUNCATE TABLE”语句删除数据是不支持事务回滚的。delete from是删除表中所有的记录。drop是删除整张表。原创 2024-09-08 11:26:54 · 129 阅读 · 0 评论 -
MySQL第一个问题 utf8mb3是utf8别名!!!
原创 2024-09-08 10:43:25 · 184 阅读 · 0 评论