清平乐的技术博客
学如逆水行舟,不进则退。
展开
-
SQL求列表中最大值GREATEST() 函数
MySQL 中的 GREATEST() 函数用于返回一组值中的最大值。它接受多个参数,并返回这些参数中的最大值。此函数用于从列表中获取最大的数字。原创 2024-09-12 22:21:50 · 149 阅读 · 0 评论 -
Presto时间函数
最近项目中用到了Presto,负责后台的搭建和接口开发,Presto部分语法和常用SQL有些区别,特为大家整理如下,避免踩坑。原创 2023-05-17 15:15:01 · 1308 阅读 · 0 评论 -
MySQL实现row_number排序功能(不用函数)
这篇文章主要介绍了mysql使用自定义序列实现row_number功能,本文分步骤通过实例代码给大家介绍的非常详细,需要的朋友可以参考下原创 2023-02-27 11:33:50 · 692 阅读 · 0 评论 -
MySQL生成排序序号RN
(select @i:=0) b:每次查询时都会重新排序;如果想要每次查询有累加的效果,可以去掉。原创 2023-02-27 11:25:02 · 324 阅读 · 0 评论 -
【小技巧】Navicat查看数据库密码
打开这个网址:https://tool.lu/coderunner,将如下PHP代码复制进去。找到这行代码 $decode = $navicatPassword->decrypt(‘然后在网页上面执行代码,就可以得到密码了。’这几个字替换为步骤三复制出的的密码。原创 2022-11-29 10:10:59 · 1442 阅读 · 0 评论 -
MONTHS_BETWEEN函数使用
MONTHS_BETWEEN (date1, date2)用于计算date1和date2之间有几个月。 date1-date2-- 间隔月份:时间格式 结果带小数 16.516SELECT MONTHS_BETWEEN('2022-05-28','2021-01-12') -- 间隔月份:月份格式 结果整数:16-- 方法一:拼接SELECT MONTHS_BETWEEN(CONCAT(SUBSTR('2022-05-28',1,7),'-01'),CONCAT(SUBSTR('2021-原创 2022-05-27 16:58:56 · 5365 阅读 · 0 评论 -
MySQL和Hive的DATE_ADD用法区别
一、MySQL语法说明DATE_ADD(date, INTERVAL num TYPE)date 只要是合法的日期表达式即可num 是希望添加的时间间隔值TYPE 是时间间隔的单位MICROSECOND 间隔单位:毫秒SECOND 间隔单位:秒MINUTE 间隔单位:分钟HOUR 间隔单位:小时DAY 间隔单位:天 WEEK 间隔单位:星期MONTH 间隔单位:月QUARTER 间隔单位:季度YEAR 间隔单位:年SECOND_MICROSECOND 复合型,间隔单位:秒、毫原创 2022-05-11 15:59:44 · 517 阅读 · 0 评论 -
SQL去掉最大值与最小值求均值
今天遇到一道SQL题,SQL去掉最大值与最小值求均值,觉得不错,跟大家分享一下。情况一:除去所有重复的最大值和重复的最小值,然后求平均SELECT AVG(SALARY)FROM EMPLOYEESWHERE SALARY NOT IN ((SELECT MIN(SALARY) FROM EMPLOYEES),(SELECT MAX(SALARY) FROM EMPLOYEES))情况二:最值存在多个重复值,仅需除去一个最大值和最小值,然后求平均值SELECT (SUM(SALARY)原创 2022-04-28 21:30:56 · 2804 阅读 · 2 评论 -
MySQL全套笔记(代码精讲,从零到一)
带你玩转MySQL,以代码实战代替枯燥的文字,小白入门从零到一原创 2022-04-23 14:06:42 · 333 阅读 · 0 评论 -
MySQL中IN和EXISTS语法改写(SQL优化案例)
一、IN和EXISTS说明(1)IN和NOT IN常用于where表达式中,其作用是查询某个范围内的数据。(2)IN和NOT IN语句分别可以用EXISTS和NOTEXISTS 进行改写(3)EXISTS某些情况下可以比IN提高运行效率;而用NOT EXISTS都比NOT IN要快(4)如果两个表中一个较小,一个是大表, 则建议子查询表大的用exists,子查询表小的用in【注意】具体用法可以参考博文《MySQL中EXISTS的用法》二、示例表A(小表),表B(大表)示例一:-- I原创 2022-04-22 10:13:01 · 2996 阅读 · 0 评论 -
MySQL中EXISTS的用法(五大要点)
EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False要点1 等价关系select * from user where exists (select 1);对user表的记录逐条取出,由于子查询中的select 1永远能返回记录行,那么user表的所有记录都将被加入结果集,等同于 select * from user;要点2 not exists与exists相反总的来说,如果A表有n条记录,那么exists查询就是将这n条记录逐条取出,原创 2022-04-21 21:15:13 · 7197 阅读 · 2 评论 -
SQL面试题整理_数据库知识点
我觉得获得高薪的关键:就是高效的准备面试。如果当初有个人能给我一份总结好的面试锦囊,我就不至于慌成那样。对于程序员来说,面试内容一般分为两个部分:编程面试题部分 + 数据库面试题部分。的,所以所关注的问题和面试内容也是不同的,所以具备面试知识点广的特点;考察的知识点较深入,以阿里巴巴为例,这些大厂的面试都是类似的,通常从一个大的面试点切入,然后层层深入,直到问到你不会为止,比如,你了解哪些数...原创 2020-04-15 18:01:08 · 871 阅读 · 1 评论 -
SQL server本地安装步骤(Win10为例)
一、安装包下载https://jingyan.baidu.com/article/76a7e40909b961fc3b6e1519.html二、安装步骤https://jingyan.baidu.com/article/76a7e40909b961fc3b6e1519.html原创 2021-04-27 11:38:18 · 1920 阅读 · 0 评论 -
MySQL字符切割函数总结(4种类型)
一、从左开始截取字符串格式:left(str, length)说明:left(被截取字段,截取长度)select left('刀锋所划之地,便是疆土',6) as example结果:二、从右开始截取字符串格式:right(str, length)说明:right(被截取字段,截取长度)select right('刀锋所划之地,便是疆土',4) as example三、截取字符串格式一:substring(str, pos)格式二:substring(str, pos, len原创 2020-11-25 15:27:12 · 13345 阅读 · 0 评论 -
Navicat 转移数据连接到新的计算机
Navicat是一套数据库管理工具,Navicat Premium 结合了其它Navicat成员的功能,支持单一程序同時连接到MySQL、MariaDB、SQL Server、SQLite、Oracle和PostgreSQL数据库。Navicat Premium可满足现今数据库管理系统的使用功能,包括存储过程、事件、触发器、函数、视图等。迁移Navicat到新的计算机的步骤:选择文件->导出连接。导出的文件(.ncx)包含了全部连接设置内容。备份已导出的文件(.ncx)。在Navi原创 2020-09-03 17:14:53 · 3067 阅读 · 0 评论 -
图片、音视频文件存储在MySQL的案例(blob格式和load_file函数)
注意:通常我们不要直接存储这种文件在数据库中,影响效率。这里只做演示参考文件《图片存储原理》1.本地创建文件这里我在本地上传了3个文件,分别是txt文本,jpg文件和MP4视频文件[root@mail test_file]# ls1.txt man.jpg man.mp4[root@mail test_file]# pwd/data/test_file2.建表CREATE TABLE `test_file` ( `id` int(11) DEFAULT NULL, `pi原创 2020-07-20 17:23:55 · 3335 阅读 · 0 评论 -
图片等非机构化数据在数据库中的存储方式
一.现状通常图片包括商品图片,用户上传的头像以及其他方面的图片。目前业界存储图片有两种做法:1、 把图片直接以二进制形式存储在数据库中(1)blob字段类型一般数据库提供一个二进制字段来存储二进制数据。比如mysql中有个blob字段。oracle数据库中是blob或bfile类型(2)无blob类型例如SQL server,没有这种可以直接存储音视频的类型,通常采用代码(例如Java,.net)直接转化成二进制存储在数据库中。采用varchar(max)存储的文本2、 图片存储在磁盘原创 2020-07-20 17:03:26 · 1983 阅读 · 0 评论 -
MYSQL数据导出与导入,secure_file_priv参数设置
一、secure_file_priv参数说明这个参数用来限制数据导入和导出操作的效果,例如执行LOAD DATA、SELECT … INTO OUTFILE语句和LOAD_FILE()函数。这些操作需要用户具有FILE权限。 如果这个参数没有设置,这个变量没有效果。如果这个参数设为一个目录名,MySQL服务只允许在这个目录中执行文件的导入和导出操作。这个目录必须存在,MySQL服务不会创建它;如果这个参数为NULL,MySQL服务会禁止导入和导出操作。二、查看参数进入MySQL数据库,执行命令:原创 2020-07-17 19:23:35 · 7718 阅读 · 6 评论 -
navicat连接SqlServer遇到的坑(驱动、端口、格式)
一号坑:未安装驱动解决方案:进入navicat 目录,选中sqlncli_x64.msi进行驱动安装:二号坑:非默认端口,格式:ip,portSQL server默认端口是1433,当项目中的SQL server不是默认端口时,需要在连接中添加端口号,笔者在这里遇到坑,原因是填写格式错误。这里标准格式为:ip,port,如127.0.0.1,59980,注意一定是逗号间隔,并且是英文逗号三号坑:用TOP代替limit连接成功进行语法测试,注意sqlserver分页查询一定是用top,没有原创 2020-06-22 13:46:55 · 6801 阅读 · 1 评论 -
MySQL中去前导0的方法
最近业务上遇到一个需求,需要将数据库表的数据在做统计的时候要将前面的0统一去掉,例如:表中数据是000000000010000001,在关联的时候要把前面的0去掉,但是后面的0要保留。现在实例讲解一、数据准备CREATE TABLE `students` ( `id` varchar(11) NOT NULL, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;原创 2020-06-03 20:45:12 · 4209 阅读 · 0 评论 -
MySQL中的uuid()和uuid_short()函数
在之前项目中,数据库生成UUID主键一般会用Java调用函数,最近发现在MySQL也有自带的uuid函数,分别是uuid()和uuid_short(),现对这两个函数进行演示和说明。在 MySQL 中,可以有如下几种途径实现唯一值:(1)自增序列(2)UUID() 函数(3)程序自定义一、uuid()UUID 基于 16 进制,由 32 位小写的 16 进制数字组成,如下:aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee比如123e4567-e89b-12d3-a4原创 2020-06-03 20:26:17 · 3106 阅读 · 0 评论 -
MySQL时间、日期、时区函数和计算函数
一、时间函数1.获得当前日期+时间(date + time)函数:now() 或sysdate()sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值,不太常用。2. 获得当前时间戳函数:current_timestamp, current_timestamp()二、时间转换(格式化)1.Date/Time to Str(日期/时间转换为字符串)函数:date_format(date,format),原创 2020-06-03 19:58:46 · 880 阅读 · 0 评论 -
MySQL配置文件路径
一、文件名和路径1.Linux中:/etc/my.cnf2.windows中:C:\ProgramData\MySQL\MySQL Server 5.7\my.ini二、常见问题:1.windows下mysql配置文件my.ini的位置(1)找到“服务”,搜索MySQL(2)右击属性查看位置可以看到在可执行文件的路径是C:\ProgramData\MySQL\MySQL Server 5.7\my.ini,即mysql的配置文件在该目录下。2.c盘没有ProgramData这个文件夹原创 2020-06-01 16:58:29 · 7307 阅读 · 0 评论 -
MySQL的大小写是否敏感的查看和设置方法
一、查看配置SHOW GLOBAL VARIABLES LIKE "%lower%"lower_case_file_system 可以忽略,表示系统文件是否大小写敏感,只读参数,无法修改。lower_case_table_names 表示表名是否大小写敏感,可以修改。lower_case_table_names = 1时,mysql会先把表名转为小写,再执行操作。lower_case_table_names = 0时,mysql会根据表名直接操作,大小写敏感。二、默认规则1.LinuxM原创 2020-06-01 16:24:30 · 10688 阅读 · 2 评论 -
Navicat连接虚拟机MySQL及常见错误
一、连接方式演示环境:虚拟机:VMvare 12系统CentOS 7.2mysql5.7Navicat Premium 121.查看虚拟机IP# ifconfig2.启动MySQL并查看状态# systemctl start mysqld# systemctl status mysqld3.关闭防火墙# systemctl stop firewalld4.连接MySQL二、连接不上1、虚拟机防火墙或者 3306端口未启用参考上述步骤32、mysql授权问题原创 2020-06-01 14:01:09 · 1143 阅读 · 0 评论 -
UE(Ultra Edit)提高SQL建表语句编写效率
最近收到需求,将EXCEL中的对应表结构写成对应的sql建表语句,对于几个或者十几个字段的表,直接用navicat等可视化也是可以的,但是遇到上百个字段得到表,做起来就有点恼火了。工作量有点大,所以用了UE神器,博主也是刚用,跟大家分享一下这个工具,当然对于熟悉编程的同学也可以采用VBA进行字符串拼接实现。一、Excel表结构表中有具体的表名和字段结构,以及字段类型二、UE中编辑1.打开编辑器,如下界面2.写上具体建表语句DROP TABLE IF EXISTS WAREHOUSE;CR原创 2020-05-30 14:43:31 · 2026 阅读 · 0 评论 -
mysql-connector-java各种版本下载地址
mysql-connector-java下载地址:http://mvnrepository.com/artifact/mysql/mysql-connector-java选择对应版本点击jar开始下载原创 2020-05-17 20:16:35 · 1014 阅读 · 0 评论 -
MySQL、Oracle和SQL server的元数据库 information_schema.tables
【INFORMATION_SCHEMA 数据库】 是MySQL自带的一个数据库,确切说是信息数据库,它提供了访问数据库 元数据 的方式。什么是 元数据 呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。你也可以理解为是数据库的“数据词典”和“系统目录”。在 【INFORMATION_SCHEMA 】中,有很多个 只读 表。它们实际上是 视图 ,而不是基本表,因此,你将无法...原创 2020-05-08 14:28:36 · 1621 阅读 · 2 评论 -
SQL中exists和not exists语句的改写
在标准SQL语句中 NOT EXISTS 对应于EXISTS,EXISTS筛选剩下的数据就是 NOT EXISTS对应数据,有了这层思路,我们就可以对相关的NOT EXISTS进行改写了。exists 改写:inner join进行SQL改写之前,我们先来看一对简单的例子,大部分情况下,EXISTS对应于INNER JOIN-- 原语句SELECT T.* FROM TEST_EXI...原创 2020-04-28 11:25:29 · 2139 阅读 · 2 评论 -
SQL中count(1)、count(*)与count(列名)的执行效率区别
执行效果上:count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计。执行效率上:列名为主键,coun...原创 2020-04-23 17:06:04 · 1319 阅读 · 0 评论 -
数据库的DDL、DML、DQL、DCL名词详解【全套笔记】
简言之:1.DDL(DataDefinitionLanguage):数据定义语言,用来定义数据库对象:库、表、列等;2.DML(DataManipulationLanguage):数据操作语言,用来定义数据库记录(数据);3.DQL(DataQueryLanguage):数据查询语言,用来查询记录(数据);4.DCL(DataControlLanguage):数据控制语言,用来定义访问权限和安全级别。举例说明1.DDL用来定义数据库对象:库、表、列等;适用范围:对数据库中的某些对象(.原创 2020-04-21 14:53:00 · 25698 阅读 · 11 评论 -
SQL语句中的where 1=1和0=1用法
where 1=1这个条件始终为True, 用于动态构造不确定条件数的查询语句,在不定数量查询条件情况下,1=1可以很方便的规范语句。select * from emp where 1=1 [and 条件n];举个例子,如果您做查询页面,让用户自行选择并输入查询关键词,代码大体如下: string MySqlStr=”select * from table where”; ...原创 2020-04-13 11:07:17 · 1616 阅读 · 0 评论 -
MySQL生成整年日期表(不用函数和存储过程)
1.创建小数据表 0-9-- 创建小数据表 0-9DROP TABLE IF EXISTS aa_numbers_small;CREATE TABLE aa_numbers_small( number INT);--插入数据INSERT INTO aa_numbers_small VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9);SEL...原创 2020-03-31 17:39:59 · 1238 阅读 · 0 评论 -
MySQL创建表时设置主键id为uuid
oracel创建uuid为主键的表时可以直接指定default uuid();但是mysql不支持,可以通过触发器实现。下面是创建一个产品表的sql语句。--建表语句CREATE TABLE `product` ( `id` varchar(36) NOT NULL, `productNum` varchar(50) NOT NULL, `productName` varchar(...原创 2020-03-31 15:14:40 · 3913 阅读 · 0 评论 -
Your password does not satisfy the current policy requirements
这是 mysql 初始化时,使用临时密码,修改自定义密码时,由于自定义密码比较简单,就出现了不符合密码策略的问题。密码策略问题异常信息:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements解决办法:1、查看 mysql 初始的密码策略,输入语句 “ SHOW VARIABLE...原创 2020-03-30 16:13:58 · 448 阅读 · 0 评论 -
MySQL5.7安装部署(CentOS三种方式)
服务器环境:CentOS7.2安装yum源,检查wget命令:(如果提示wget命令不存在,先执行 yum -y install wget)提示:yum install yum-fastestmirror -y 执行一遍,yum可以优先选择最快下载源方式一:安装源在线安装第一步,下载MySQL安装[root@localhost ~]# mkdir /data/[root@localh...原创 2020-03-29 16:43:48 · 1122 阅读 · 0 评论 -
MySQL的GTID
MySQL 5.6引入了GTID的概念,那么GTID是何方神圣?其实也不复杂,就是一个全局事务标示符。使用GTID时,每次事务提交都会在binlog里生成1个唯一的标示符,它由UUID和事务ID组成。首次提交的事务ID为1,第二次为2,第三次为3,以此例推。uuid是服务器的身份ID,在第一次启动MySQL时,会自动生成一个server_uuid, 并且默认写入到数据目录下的auto.cnf文件里...原创 2020-03-23 11:49:06 · 256 阅读 · 0 评论 -
MySQL的sql_mode解析与设置
在MySQL中使用group by 是总是出现1055的错误,这就导致了必须去查看是什么原因了,查询了相关的资料,现在将笔记记录下来,以便后面可以参考使用:一、什么是sql_modesql_mode:简而言之就是:它定义了你MySQL应该支持的sql语法,对数据的校验等等select @@sql_mode:使用该命令我们可以查看我们当前数据库的sql_modemysql> selec...原创 2020-03-13 14:26:43 · 302 阅读 · 0 评论 -
Navicat设置定时任务调度
将表数据从一个库同步到另一个库(数据分发),目前尝试的方式有使用Kettle去抽数;用sqoop抽取;用navicat自带的同步工具这里对nivicat设置定时进行讲解。将数据从一个数据传输到另一个数据库(MySQL to MySQL) ,eg: 将 10.11.22.33:3306/demo1 数据库中的 student 表 传输到 10.22.33.55:3306、demo2 数据库中1....原创 2020-01-11 10:26:27 · 2326 阅读 · 2 评论 -
MySQL中时间转换周的3种函数比较
一、week 不跨年WEEK(date[,mode])函数此函数返回日期的周数。双参数的形式WEEK()允许你指定星期是否开始于周日或周一,以及是否返回值应在范围从0到53或从1到53。 如果省略了mode参数,系统default_week_format变量的值被使用。SELECT order_time, week( order_time) AS order_week FROM ...原创 2020-01-07 18:07:08 · 2966 阅读 · 0 评论