sql
文章平均质量分 74
花和尚也有春天
会收集一些不错的文章,时常品读,也学着自己总结一些东西,坚持努力的方向!
展开
-
如何保证接口的幂等性?常见的实现方案有哪些?
。。转载 2022-06-13 23:22:30 · 3329 阅读 · 0 评论 -
sql:mysql:MySql 不存在则插入,存在则更新或忽略
前言在插入数据时,可能需要忽略或替换掉重复的数据(依据某个字段),这时可以在应用层处理,也可以使用复杂的 SQL 语句来处理(如果仅仅知道一些简单的 SQL 语法的话),当然也可以使用一些简单的 SQL 语法,不过它并不是通用所有的数据库类型。以下所有实例仅针对MySQL而言,并不能随意用于其它数据库实例表名称:student表字段:Column Name Primary Key Auto Increment Unique id true tru转载 2020-10-23 10:40:20 · 2984 阅读 · 2 评论 -
mysql:索引常用的规则
数据库建立索引常用的规则如下:1、表的主键、外键必须有索引;2、数据量超过300的表应该有索引;3、经常与其他表进行连接的表,在连接字段上应该建立索引;4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;5、索引应该建在选择性高的字段上;6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:A、正确选择复合索引中的主列字段,一般是选择性较好的字段;B、复合索引的几个字段是否经常同...原创 2020-07-10 19:04:31 · 1034 阅读 · 0 评论 -
sql:mysql:截取某个字符 1.最后一次出现的之前的字符串 2.最后出现那次的之后的字符串
mysql 截取某个最后一个字符前的字符串,比如字符串“vip_cc_99”,现在截取最后一个'_'前面的字符串如下:REVERSE(SUBSTR(REVERSE('vip_cc_99') , INSTR(REVERSE('vip_cc_99)','_')+1)) AS name比如字符串“vip_cc_99”,现在截取最后一个'_'后面的字符串如下:REVERSE(left(REVERSE('vip_cc_99'),LOCATE('_',REVERSE('vip_cc_99'))-1)..原创 2020-07-08 15:36:56 · 3067 阅读 · 1 评论 -
sql:hive:mysql:group by与distinct 去重
源数据(mysql)id userid subject score1 001 语文 90.02 001 数学 92.03 001 英语 80.04 002 语文 88.05 002 数学 90.06 002 英语 75.57 003 语文 70.08 003 数学 85.09 003 英语 90.010 003 政治 82.011 001 语文 91.012 001 语文 92.0源数据(hive)C1 C2 C3 C4.原创 2020-06-17 10:32:15 · 1111 阅读 · 0 评论 -
sql:hive:mysql:函数:NVL、NVL2、NULLIF,IFNULL、Coalesce
NVL:第一个参数为空(注意这里是指null,不是空串)那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值select NVL(age,9999999 ) from tmp.testage223999999977...mysql中没有nvl ()函数,使用ifnull代替SELECT ifnull(valuess,'11111') a FROM test_regexp;NVL2:格式:NVL2(expr1,expr2, expr3)如果该.原创 2020-05-27 17:10:42 · 2155 阅读 · 1 评论 -
sql:mysql:查询所有数据库+表名+字段名+字段类型+注释
select TABLE_SCHEMA '数据库',TABLE_NAME '表名',COLUMN_NAME '字段名',COLUMN_TYPE '字段类型',COLUMN_COMMENT '注释'from information_schema.columns where table_schema in (SELECT SCHEMA_NAME AS `Database` FROM INFORMATION_SCHEMA.SCHEMATA)原创 2020-05-26 16:38:08 · 300 阅读 · 0 评论 -
sql:mysql:分词
SELECT * FROM tags_table1 t WHERE locate(t.tag_name, "岗位职责:1.参与公司涉及法律事务的业务沟通或谈判,提供专业建议及解决方案;2.主导公司相关业务法律...原创 2020-04-29 15:34:17 · 2474 阅读 · 0 评论 -
sql:mysql:mysql中函数greatest 与MAX区别
greatest (a,b,c,d,d)max(a)这样就能看明白了,greatest 求的是某几列的最大值,横向求最大(一行记录)max(a) 一看就明白了,是给纵向求最大(多行记录)。原创 2020-03-03 19:32:08 · 2094 阅读 · 0 评论 -
sql:mysql:on和where区别,on后可跟多个条件
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。在使用left jion时,on和where条件的区别如下:1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为...原创 2019-08-16 17:11:41 · 14886 阅读 · 3 评论 -
sql:mysql:在查询结果列表前添加一列递增的序号列
set @rownum=0;SELECT@rownum:= @rownum +1 AS 序号, a.id, a.username, SUBSTRING_INDEX(SUBSTRING_INDEX(a.tags, ',', b.help_topic_id + 1), ',',-1) AS tag FROM `testmysql_hangzhuanlie` AS...原创 2020-01-17 19:50:28 · 1156 阅读 · 0 评论 -
sql:mysql:函数:行转列(转为一个字段),利用help_topic表把以逗号分隔的字符串转换成行
建表语句:CREATE TABLE `testmysql_hangzhuanlie` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `username` varchar(50) DEFAULT NULL, `tags` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`)...原创 2020-01-17 18:39:57 · 1360 阅读 · 0 评论 -
sql:mysql:函数:列转行(转为一个字段):GROUP_CONCAT,分组后将某列的值合并成一行
CREATE TABLE `testmysql_group_concat` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `userid` varchar(50) DEFAULT NULL, `name` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=I...原创 2020-01-17 18:29:00 · 1201 阅读 · 0 评论 -
sql:mysql:自定义函数
一、基本语法 delimiter 自定义符号 -- 如果函数体只有一条语句, begin和end可以省略, 同时delimiter也可以省略 create function 函数名(形参列表) returns 返回类型 -- 注意是retruns begin 函数体 -- 函数内定义的变量如:set @x = 1; 变量x为全局变量,在函数外面也可以使用 ...原创 2020-01-16 18:06:11 · 1953 阅读 · 0 评论 -
sq:mysql:存储过程
存储过程简介 SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过...原创 2020-01-16 15:12:48 · 310 阅读 · 0 评论 -
sql:mysql:列转行(转为多个字段)
建表语句:CREATE TABLE tb_score1( id INT(11) NOT NULL auto_increment, userid VARCHAR(20) NOT NULL COMMENT '用户id', cn_score DOUBLE COMMENT '语文成绩', math_score DOUBLE COMMENT '数学成绩', en...转载 2020-01-14 16:56:43 · 2063 阅读 · 1 评论 -
sql:mysql:行转列(转为多个字段)
行转列即将原本同一列下多行的不同内容作为多个字段,输出对应内容。建表语句:DROP TABLE IF EXISTS tb_score; CREATE TABLE tb_score( id INT(11) NOT NULL auto_increment, userid VARCHAR(20) NOT NULL COMMENT '用户id', subject VA...转载 2020-01-14 16:50:56 · 2862 阅读 · 0 评论 -
sql:mysql:IFNULL() 函数
IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。IFNULL() 函数语法格式为:IFNULL(expression, alt_value)参数 描述 expression 必须,要测试的值 alt_value 必须,expression 表达式为 NULL 时返回...原创 2020-01-14 14:52:48 · 353 阅读 · 0 评论 -
hive/mysql:函数:repeat() 重复
用来复制字符串,如下’ab’表示要复制的字符串,2表示复制的份数select repeat('ab',2);//ababselect repeat('a',2);//aa原创 2020-01-14 14:21:02 · 3823 阅读 · 0 评论 -
hive/mysql:函数:concat 和 concat_ws 以及 mysql中的 group_concat()
concat 函数:直接合并n个字段 select concat("你好","明天","后天") filed;返回:你好明天后天select concat("你好","明天","后天",null) filed;返回:nullconcat_ws函数:以指定字符连接n个字符串或字段select concat_ws("_","你好","明天","后天") fil...原创 2019-06-25 10:07:05 · 1745 阅读 · 0 评论 -
sql:mysql:like模糊查询基本用法
--like 匹配/模糊匹配,会与 % 和 _ 结合使用'%a' //以a结尾的数据'a%' //以a开头的数据'%a%' //含有a的数据'_a_' //三位且中间字母是a的'_a' //两位且结尾字母是a的'a_' //两位且开头字母是a的以下是示例:数据:select * from sparksql_hive_tes...原创 2019-11-19 17:29:32 · 614 阅读 · 0 评论 -
sql:mysql:正则的基本使用(REGEXP),regexp_extract 和 regexp_replace 匹配手机号
一.介绍正则表达式用来描述或者匹配符合规则的字符串。它的用法和like比较相似,但是它又比like更强大,能够实现一些很特殊的规则匹配;正则表达式需要使用REGEXP命令,匹配上返回"1"匹配不上返回"0",默认不加条件REGEXP相当于like '%%'。在前面加上NOT相当于NOT LIKE。 命令 说明 ^ ...转载 2019-11-19 16:57:17 · 9039 阅读 · 0 评论 -
sql:mysql:已存在的表新增id并给已有记录生成id
alter table sparksql_hive_test modify id bigint primary key auto_increment ;然后可以调整表字段顺序:alter table sparksql_hive_test modify mobile varchar(25) after id原创 2019-11-19 10:15:13 · 423 阅读 · 0 评论 -
sql:函数:FIND_IN_SET(str,strList)
str 要查询的字符串 strList 字段名,参数以“,”分隔,如(1,2,6,8) 查询字段(strList)中包含的结果,返回结果null或记录。假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。 一个字符串列表就是一个由一些被 ‘,’ 符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则FIND...原创 2019-11-13 16:52:43 · 1228 阅读 · 0 评论 -
sql:常用:DateTime,Timestamp,Time和Date有什么区别?
场景:用Mysql出现时间问题Incorrect datetime value: '' for column 'createtime',查明原因数据库中用的是TIMESTAMP格式,时间为1970-2038年范围之外的日期无法入库。解决:使用datetime字段类型总结如下:使用MySQL作为一个例子(如果没有其他原因,因为它是最流行的),你有DATE,DATETIME,TIME和...转载 2018-11-22 09:19:37 · 13791 阅读 · 0 评论 -
sql:mysql:日期函数--今天昨天
mysql今天和昨天日期及格式化-- 今天日期+时间select now() ; --返回2018-04-25 17:33:21-- 今天日期select curdate(); --返回2018-04-25-- 今天日期格式化select date_format(curdate(),'%Y-%m-%d'); --返回2018-04-25-- 昨天日期select ...转载 2019-04-28 14:00:14 · 3596 阅读 · 0 评论 -
sql:mysql:正则表达式
select * from test_regexp--regexp_like--查询valuess中含有:此正则表达式代表的此“字符串”。SELECT valuess FROM test_regexp WHERE valuess REGEXP '1[0-9]{3}60';SELECT valuess FROM test_regexp WHERE valuess REGEXP '1...原创 2019-04-14 23:18:16 · 1428 阅读 · 0 评论 -
sql:mysql:数据库优化
前言数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷.1. 优化一览图2. 优化笔者将优化分为了两大类,软优化和硬优化,软优化一般是操作数据库即可,而硬优化则是操作服务器硬件及参数设置.2.1 软优化2.1.1 查询语句优化1.首先我...转载 2019-03-28 15:32:33 · 925 阅读 · 0 评论 -
sql:mysql:唯一索引不区分大小写
因为:mysql的唯一索引不区分大小写解决办法:alter table t_company modify company_name varchar(100) binary;//加上binary 唯一索引即可区分大小写或创建表的时候加上binary的标识如:CREATE TABLE t_company ( id bigint NOT NULL AUT...原创 2019-03-22 16:15:29 · 6166 阅读 · 4 评论 -
sql:mysql:5.0升级到5.7,且置mysql5.7编码集为utf8mb4
最近遇到一个问题,移动端的表情或者一些emoji是4字节的,但是utf-8是3字节的,查了很多网上的解决方法,最后提供一套自己的解决方案。如果当前的困境是:自己的mysql版本为5.5.3以前(版本为5.5.3以前将不能使用utf-8mb4编码),需要重装更高版本的mysql,然后获得该编码。1,检查自己当前数据库版本使用命令: select version();升级前:如果发现...转载 2019-03-25 10:35:47 · 1559 阅读 · 1 评论 -
sql:oracle:oracle所有账户密码都忘了怎么办?
参考:https://www.cnblogs.com/bluestorm/archive/2013/04/19/3030871.html1、运行到C盘根目录2、输入:SET ORACLE_SID = 你的SID名称3、输入:sqlplus/nolog4、输入:connect/as sysdba5、输入:altre user sys identified by sys...转载 2019-05-13 23:34:01 · 965 阅读 · 0 评论 -
sql:oracle:基本使用
--创建用户create user tzb111 identified by tzb111 ;--赋予权限grant connect,resource to tangzhanbo;grant dba to tangzhanbo;--查看用户所属表空间select username,default_tablespace from dba_users where username='S...原创 2019-05-13 23:39:28 · 102 阅读 · 0 评论 -
mysql:本地mysql不能被其他主机连接解决方法
本地mysql不能被其他主机连接我用一台电脑的sql客户端去连接同局域网下的零另一台电脑的mysql失败,但是可以ping通,如下图:换成其他不存在的ip应该是这样报错的:解决办法:SELECT User, Host FROM mysql.user;把localohst改为%,相当于任何用户都可以连接。刷新权限信息:FLUSH P...原创 2019-05-18 23:17:41 · 5543 阅读 · 0 评论 -
sql:mysql:DAYOFMONTH函数和INTERVAL搭配的使用
SELECT id, source AS source, DATE(DATE_SUB(statistic_time, INTERVAL DAYOFMONTH(statistic_time) - 1 DAY)) AS __timestam...原创 2019-05-20 12:41:30 · 2533 阅读 · 0 评论 -
sql:mysql:docker安装了mysql5.7,中文乱码了
docker安装mysql,然后插入数据,发现中文乱码,考虑配置文件不好改,还得做文件映射,当然如果你需要改为utf8mb4可能要这样做,需要改配置文件,但是我后来解决办法是 连接数据库设置编码:配置数据库连接时加上:数据库名 + ?generateSimpleParameterMetadata=true&useUnicode=true&characterEnco...原创 2019-05-21 01:15:39 · 713 阅读 · 0 评论 -
sql:mysql:int 与 tinyint 有什么区别
mysql的基本数据类型里几个int如下:类型 大小 范围(有符号) 范围(无符号) 用途TINYINT 1字节 (-128,127) (0,255) 小整数值SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值INT或INTEGER...转载 2019-05-17 10:06:37 · 5288 阅读 · 0 评论 -
sql:mysql:变量的使用
SET @ID = 16833194; --设置变量SELECT @ID; --查询变量 结果为16833194select * from t_ca_po_cus where id= (SELECT @ID) --作为id查询SELECT @ID:=@ID+1 AS ID --ID自增1,注意这里:=是赋值的意思...原创 2019-07-15 11:17:03 · 685 阅读 · 0 评论 -
sql:mysql:if 条件语句的用法
IF 表达式IF( expr1 , expr2 , expr3 )expr1表达式 的值为 TRUE,则返回值为 expr2expr1表达式 的值为FALSE,则返回值为 expr3如下:SELECT IF(TRUE,1+1,1+2);-> 2SELECT IF(FALSE,1+1,1+2);-> 3SELECT IF(STRCMP("111","222"...原创 2019-08-08 16:31:44 · 1715 阅读 · 0 评论 -
sql:mysql:修改表注释、字段注释、查看与修改注释(修改备注)
1 创建表的时候写注释create table test1(field_name int comment '字段的注释')comment='表的注释';2 修改表的注释alter table test1 comment '修改后的表的注释';3 修改字段的注释alter table test1 modify column field_name int comment '修改后的字段注释...转载 2019-03-21 16:22:35 · 25900 阅读 · 1 评论 -
sql:mysql:分析为什么like模糊查询效率低
相比update和insert,一般查询应该是数据库中操作最频繁的。而在有些应用场景需要用到like模糊查询,那么对于大数据,查询的时候就要注意了。现在来分析一下为什么like语句查询的效率会很低,测试数据共4000000条,如下图:第一步:不使用索引下图可以看出,不使用索引的时候普通查询与like查询的耗时相当,like略长,这也是必然的,因为它要进行额外...转载 2019-03-20 17:13:35 · 4005 阅读 · 2 评论