随笔分类 - SQL
摘要:网上面列举了很多方法,但是也都各自说明了一下弊端在哪里,所以我这里只记录其中我认为最好的一个, SELECT TIMESTAMPDIFF(YEAR, @birthday, CURDATE()) 算是最佳方法,暂时.涉及到两个函数. 这里也说明一下第一个函数TIMESTAMPDIFF()是如何使用的.
阅读全文
摘要:GREATEST()函数返回参数列表的最大值。 LEAST()函数返回参数列表的最小值。
阅读全文
摘要:报错信息:如下图 原因:在mybatis 3.3.0,对于时间参数进行比较时的一个bug. 如果拿传入的时间类型参数与空字符串’'进行对比判断则会引发异常. 所以在上面的代码中去该该判断, 只保留非空判断就可以了。 解决方法:在mapper.xml中去掉对于字符串为空的判读 即:去掉 字段名 !=
阅读全文
摘要:1、介绍 row_number() 函数多用于对数据进行排序,返回的数据项多增加一个序号。 如:按照年龄对用户进行排序,并返回序号: select row_number() over( order By age) as rownumber, u.name, u.age, u.email from u
阅读全文
摘要:查询sql报错 问题分析: 上面的写法子查询里又包含的了一层子查询,sql我们可以拆分为3块,其中1和2都是子查询,3是主表查询。报错的原因是:在1的子查询里,用了3的字段名,属于跨级调用,代码中报错不支持这样的跨级调用。 修改过程如下:去掉1的子查询 sql涉及到公司内容,所以没有粘贴显示,只要以
阅读全文
摘要:相信大家在使用持久层框架如hibernate或者mybatis时遇到过:No operator matches the given name and argument type(s). You might need to add explicit type casts.这样的报错!那么这个报错是什么
阅读全文
摘要:当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配。 只要您的数据包含的只是日期部分,运行查询就不会出问题。但是,如果涉及时间部分,情况就有点复杂了。 在讨论日期查询的复杂性之前,我们先来看看最重要的内建日期处理函数。 下面的表格列出了 MySQL 中最重要的内建
阅读全文
摘要:外键的级联删除:如果父表中的记录被删除,则子表中对应的记录自动被删除 父表——被外键引用的表 子表——引用父表中的键作为外键的表 1.解释: 父表中删除包含主键值的行的操作,该值由子表的现有行中的外键列引用。在级联删除中,删除父表中的记录时,同时删除子表中外键引用此主键的记录。 例: employe
阅读全文
摘要:跟标识列有关,搜索了一下,就看到了,学习记录一下。 MySQL中对于表上ID自增列可以在创建表的时候来指定列上的auto_increment属性;等同于SQL server中的identity属性;Oracle则是通过Sequence方式来实现。在MySQL中,系统变量auto_increment_
阅读全文
摘要:主键和唯一的大对比 保证唯一性 是否允许为空 表中个数 是否允许组合主键 √ X 最多一个,可以没有主键 是唯一 √ √ 可以有多个字段为unique 是
阅读全文
摘要:所描述的方法还请实际测试一下再使用. 1、复制表结构及数据到新表 CREATE TABLE 新表SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除。 不过这种方法的一个最不好的地方就是新表中没有了旧表的
阅读全文
摘要:coalesce函数在Maxcompute里面的官方解释如下: 具体怎么用呢? 上面的函数说明通俗来说coalesce()的作用是:返回传入的参数中第一个非null的值。expre1不为空值则返回expre1;否则判断expre2是否是空值,如果expre2不为空值则返回expre2;否则判断exp
阅读全文
摘要:一. insert into table2(字段1,字段2,字段3,新字段) select *,'表达式' from table1
阅读全文
摘要:待:使用存储过程: DELIMITER $ CREATE PROCEDURE add_property (IN database_name VARCHAR (10)) BEGIN DECLARE tb VARCHAR (20) ; DECLARE done INT DEFAULT FALSE ; D
阅读全文
摘要:第一种我们学过的: show tables; 第二种我第一次见到的: select table_name from information_schema.tables where table_schema='当前数据库' 是因为要写一个存储过程,第一种方式不适用。
阅读全文
摘要:在向数据库中插入数据时,如果数据量特别多,并且是在excel表中,那么我们怎么将数据插入到数据库中呢,不可能一条一条插入吧。 工作场景:excel,mysql ,Navicat for MySQL 1.打开excel表,按照程序提供的字段填写相应的数据.此时注意下面几点 字段名要和数据库里的一样 如
阅读全文
摘要:我们直接在数据库中查询一下看结果: CURDATE()和CURRENT_DATE()都可以查询到当前时间的年月日,CURRENT_DATE()+0是将当前查询到的时间转成数字输出 参考: https://blog.csdn.net/qq_20446879/article/details/100026
阅读全文
摘要:DATE_SUB() 函数从日期减去指定的时间间隔。 DATE_SUB(date,INTERVAL expr type) date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。 type 参数可以是下列值: Type 值 MICROSECOND SECOND MINUTE HOUR
阅读全文
摘要:首先举个例子来说:有个文章表里面有个type字段,它存储的是文章类型,有 1头条、2推荐、3热点、4图文等等 。现在有篇文章他既是头条,又是热点,还是图文,type中以 1,3,4 的格式存储。那我们如何用sql查找所有type中有4的图文类型的文章呢??这就要我们的 find_in_set 出马的
阅读全文
摘要:各种场景 1.判断字段是否包含数字 [但是这个我实际执行没有任何反应,百度也没有收到,可是实际工作中确实看到数据库中有人是这样写的,很奇怪] name like '%[0-9]%'; 2.使用like模糊查询包含某个数字 select * from table where name like '%1
阅读全文