![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
kenhins
Java软件开发工程师
展开
-
数据库基础知识
数据库知识基础,这部分内容一定要理解记忆。虽然这部分内容只是理论知识,但是非常重要,这是后面学习 MySQL 数据库的基础。PS: 这部分内容由于涉及太多概念性内容,所以参考了维基百科和百度百科相应的介绍。数据库系统基本构成如下图所示:对于外键和级联,阿里巴巴开发手册这样说到:为什么不要用外键呢?大部分人可能会这样回答:我个人觉得上面这种回答不是特别的全面,只是说了外键存在的一个常见的问题。实际上,我们知道外键也是有很多好处的,比如:所以说,不要一股脑的就抛弃了外键这个概念,既然它存在就有它存在的道理,如果原创 2022-06-06 17:58:27 · 1061 阅读 · 0 评论 -
mysql根据经纬度查询附件门店
mysql根据经纬度查询附件门店 (20公里范围内)-- 根据经纬度查询附件门店 SELECT *,( 6371 * acos ( cos ( radians(113.42276) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(23.1378) ) + sin ( radians(113.42276) ) * sin( radians( latitude ) )原创 2021-02-25 10:11:43 · 429 阅读 · 1 评论 -
一张800w的数据表,11s执行的SQL优化到1s?
操作: 查询条件放到子查询中,子查询只查主键ID,然后使用子查询中确定的主键关联查询其他的属性字段;原理: 减少回表操作;# sql插入数据,每运行一次数据翻倍!# insert data INSERT INTO z_test (name, age) SELECT MD5(RAND()), RAND(10000) FROM z_test# 结果,插入百万条数据只需28秒 select count(*) from z_test;# 模拟数据量为:八百多万原创 2021-01-04 17:33:54 · 302 阅读 · 0 评论 -
springboot集成数据库设计文档生成工具screw
支持的数据库MySQLMariaDBTIDBOracleSqlServerPostgreSQLCache DB1、pom文件引入screw核心包,HikariCP数据库连接池,HikariCP号称性能最出色的数据库连接池<!-- screw核心 --><dependency> <groupId>cn.smallbun.screw</groupId> <artifactId>screw-core</ar原创 2020-09-03 10:10:23 · 426 阅读 · 0 评论 -
MySQL数据表字段繁体转简体
更新MySQL数据表字段繁体转简体 默认是繁体转简体 要简体转繁体:set j, set f互换就可以了-- 创建繁体转简体函数CREATE DEFINER=`root`@`localhost` FUNCTION prc_ftoj (old varchar(500)) RETURNS varchar(500) CHARSET utf8begin declare j VARCHAR(8000); declare f varchar(8000); .原创 2020-05-22 21:47:44 · 6074 阅读 · 0 评论 -
MYSQL利用存储过程清理所有表逻辑删除数据
MYSQL利用存储过程清理所有表逻辑删除数据注意每个表都必须统一由逻辑删除的标记字段status(维护的数据库不多的情况下可以隔一段事件手动执行一下)需要自动定时执行存储过程的,后期可以加个定时任务事件CREATE DEFINER=`root`@`localhost` PROCEDURE `del_data`()BEGIN DECLARE strClear VARCHAR(255); DECLARE done INT DEFAULT 0; #定义游标 DECLARE c原创 2020-05-22 11:45:44 · 739 阅读 · 0 评论 -
mysql 一个字段多个id逗号分隔关联查询
mysql 一个字段多个id逗号分隔关联查询关键点是:FIND_IN_SET、GROUP_CONCAT、GROUP BY-- mysql 查询逗号分隔的多个idselect t1.id,t1.chapter_id, t2.id,t2.name as bookVersionName, GROUP_CONCAT(t3.`name`) as chapterName, t4.id,t4.name as volumeName from co_course_pj as t1, co_book_ve原创 2020-05-11 09:29:39 · 4270 阅读 · 2 评论 -
mysql导出数据字典
mysql导出数据字典SELECT COLUMN_NAME 列名, COLUMN_TYPE 字段类型, IS_NULLABLE 是否为空, COLUMN_COMMENT 说明FROMINFORMATION_SCHEMA.COLUMNSwhere-- developerclub为数据库名称,到时候只需要修改成你要导出表结构的数据库即可table_schema ...原创 2020-01-02 15:57:41 · 281 阅读 · 0 评论 -
MySQL外键设置中的的 Cascade、NO ACTION、Restrict、SET NULL
. cascade方式在父表上update/delete记录时,同步update/delete掉子表的匹配记录 . set null方式在父表上update/delete记录时,将子表上匹配记录的列设为null要注意子表的外键列不能为not null . No action方式如果子表中有匹配的记录,则不允许对父表对应候选键进行update原创 2017-03-09 16:26:19 · 895 阅读 · 0 评论 -
利用SQL函数实现几天前、两点之间的距离
BEGIN DECLARE n_lost_day int; DECLARE n_lost_hours int; DECLARE n_lost_minute int; set n_lost_day = date(new_date)-date(old_date); set n_lost_hours = hour(new_date)-hour(old_date); set n_原创 2017-05-25 17:40:55 · 854 阅读 · 0 评论 -
用Navicat 计划任务备份mysql数据库和创建计划任务时报错80070057
需要对MySQL数据库进行每日备份,网上有很多写批处理或者命令行进行备份的方法,不过这里介绍一下用Navicat工具进行备份的方法,傻瓜操作,非常简单。现在介绍一下将这1个数据库备份的方法:(也可以一次性进行全部数据库备份)1、连上数据库如下图新建计划2、选择默认备份的任务3、设置计划定时任务参数点击“设置计划任务”,弹出设置的对话框。现在“原创 2017-06-02 11:49:59 · 10008 阅读 · 7 评论 -
mysql 正则匹配内容查询、拼接sql语句
-- -- 广告评论删除-- SELECT count(ID) FROM t_article_comment WHERE CONTENT REGEXP "[0-9]{8}" and CONTENT REGEXP '[^0-9.]';-- -- -- SELECT * FROM t_article_comment WHERE CONTENT REGEXP "[0-9]{8}" and CO原创 2017-08-11 14:08:08 · 1757 阅读 · 0 评论 -
BareTail工具查看Mysql实时执行的Sql语句
最近给客户开发了基于Asp.Net mvc5 +Mysql+EF的项目,但是在EF里无法看到Mysql执行的语句之前也找到一些监控Mysql的软件但一直没有用起来,现在又遇到了问题即在EF里Mysal的查询没有结果而在Mysql里没有问题因为不知道EF生成的Mysql语句所以不知道是不是Sql的问题于是决定必须解决此问题通过半天时间的努力解决了此问题,其实很简单即开启Mys原创 2017-03-23 17:54:46 · 2815 阅读 · 0 评论 -
mysql 删除重复的记录、A表字段更新到B表
-- A表字段更新为B表的字段值,条件A\B表通过id关联的记录update b_table as b set b.`name` = (select a.name FROM a_table as a where b.id=a.id) where EXISTS(select * from a_table as c where c.id=b.id); -- A表记录insert到B表,条件是B表不原创 2017-11-15 16:22:52 · 636 阅读 · 0 评论 -
利用navicat 导出数据库的数据字典
1、新建查询:运行以下sql语句select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,COLUMN_TYPE,COLUMN_COMMENT from information_schema.columns where TABLE_SCHEMA='数据库名'2、然后导出结果集(选择需要的文档格式excel 或者 word等) 导出单个表的数据字典结果集...原创 2018-09-17 11:03:50 · 3837 阅读 · 0 评论 -
mybatis 实现递归查询出树结构节点
mybatis 实现递归查询出树结构节点<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper nam原创 2018-11-02 10:30:01 · 3242 阅读 · 0 评论 -
Mysql group by原理 having
在平时的开发任务中我们经常会用到MYSQL的GROUP BY分组, 用来获取数据表中以分组字段为依据的统计数据。比如有一个学生选课表,表结构如下:Table: Subject_SelectionSubject Semester Attendee---------------------------------ITB001 1 JohnITB001转载 2017-01-13 22:21:36 · 1500 阅读 · 1 评论 -
MySQL统计函数记录——按月、按季度、按日、时间段统计
按年汇总,统计:select sum(mymoney) as totalmoney, count(*) as sheets from mytable group by date_format(col, '%Y');按月汇总,统计: select sum(mymoney) as totalmoney, count(*) as sheets from mytable group by da原创 2016-10-14 11:16:27 · 48435 阅读 · 1 评论 -
mysql 创建存储过程 循环添加记录
mysql 创建存储过程 循环添加记录先创建,然后调用-- 创建存储过程DELIMITER;//create procedure myproc()begin declare num int; set num=1; while num <= 24 do insert into t_calendar_hour(hourlist) values(num);set num=nu原创 2016-10-14 12:10:36 · 2898 阅读 · 1 评论 -
sql生成删除多个表的sql语句再复制运行删除
sql生成删除多个表的sql语句再复制运行删除,已达到删除多表的数据-- SELECT CONCAT("UPDATE ", table_name, " SET school_id='dapeng';") as gosql FROM-- information_schema.tables-- WHERE-- table_schema = 'dapeng';-- UPD原创 2015-12-08 12:15:56 · 1524 阅读 · 0 评论 -
mysql where条件中的判断语句
mysql where条件中的判断语句 AND CASE 1 WHEN "Y"=(SELECT is_open from category as oca where oca.category_id=#{categoryId,jdbcType=VARCHAR}) THEN (cat.category_id = #{categoryId,jdbcType=VARCHAR} OR cat原创 2016-01-15 09:09:45 · 11246 阅读 · 0 评论 -
mysql+mybatis 集合查询配置
mybatis映射配置文件:主要:原创 2016-01-15 09:14:45 · 1121 阅读 · 0 评论 -
navicat 修改数据库字符集、字符排序规则、数据库引擎
navicat 修改数据库字符集、字符排序规则、数据库引擎1、打开设计表,全选字段2、设置第一步选中的字段的字符集、字符排序规则、数据库引擎方法二:sql语言修改在查询编辑器中输入:ALTER TABLE 表名 DEFAULT CHARACTER SET utf8;测试只改了表,不能改字段原创 2016-02-02 16:41:42 · 29471 阅读 · 1 评论 -
数据库适当添加索引进行查询优化
添加索引:显示数据表的已经添加了索引的字段show index from m3u8_content;用explain检测性能,语句为:explain select count(*) from m3u8_content where status=8;type由all变成了refexplain select count(*) from m3u8_co原创 2016-02-17 11:24:50 · 5430 阅读 · 0 评论 -
Linux启动/停止/重启Mysql数据库的方法
1、查看mysql版本方法一:status;方法二:select version();2、Mysql启动、停止、重启常用命令a、启动方式1、使用 service 启动:[root@localhost /]# service mysqld start (5.0版本是mysqld)[root@szxdb etc]# service mysql start (5.5.7版原创 2016-01-11 15:50:28 · 5283 阅读 · 0 评论 -
Navicat使用触发器-使用MySQL数据库
更新,插入、删除触发的SQL语句(防止冗余字段)原创 2014-08-21 09:10:09 · 4918 阅读 · 0 评论 -
Group by 和Having 的组合用法
select * from empolyee GROUP BY age having count(*)>0;select e.*,d.* ,count(e.employee_id) as num from empolyee as e, department as d where age=24 and e.department_id=d.department_idGROUP BY e.ag原创 2016-04-25 23:12:46 · 3034 阅读 · 0 评论 -
mysql 列转行,合并字段(行转列)
数据表: 列转行:利用max(case when then)合并字段显示:利用graup_cancat(name1,”;”,”name2”)-- SELECT * from 20160413CaiDi WHERE 1=1 limit 0,5;-- 列转行select year, (CASE `month` WHEN 1 THEN money ELSE 0 END ) as m1, (CASE原创 2016-04-13 15:01:58 · 29399 阅读 · 2 评论 -
mysql索引类型normal,unique,full text的区别
问题1:mysql索引类型normal,unique,full text的区别是什么?normal:表示普通索引unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为uniquefull textl: 表示 全文搜索的索引。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 I原创 2016-05-14 15:24:33 · 6916 阅读 · 0 评论 -
事务的概念及事务的四个特征
事务就是一些的对数据库的操作:例如:添加数据、更新数据,删除数据,查询数据等操作:一个事务:{事务的边界(事务起点终点)}begin transaction--------------------insert(user);insert(course);delete(uid);seletAll();........等一系列数据库操作-------------原创 2016-04-21 23:24:53 · 2896 阅读 · 1 评论 -
单列索引和多列索引性能对比,索引字段空值情况的处理
由于Contact表存在多个(单列)索引,造成Delete ,update ,insert操作时需要花费大量的时间删除索引和重建索引。通过把多个(单列)索引合并成一个(多列)索引后,测试得出Delete ,update ,insert操作时需要花费的时间大大缩短。由于多个(单列)索引合并成一个(多列)索引,可能会对之前单列索引字段的查询性能有影响,做了对比测试注意:My原创 2016-04-22 12:11:06 · 3960 阅读 · 0 评论 -
左链接与内连接的区别、左连接查询的两种查法
TABLE A ;TABLE B内连接:A INNER JOIN B ,在A中也有,在B中也有的数据才能查询出来左连接:A LEFT JOIN B,连接查询的数据,在A中必须有,在B中可以有可以没有右连接与左连接相反原创 2016-04-21 23:11:52 · 5320 阅读 · 0 评论 -
mysql sql语句生成日历表
mysql sql语句生成日历表 (主要用于按月,按天group by分组统计时,有些日期没有记录,需要补0)从自定义的开始时间,生成1万条记录CREATE TABLE if not exists num (i int);-- 创建一个表用来储存0-9的数字INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (原创 2016-10-11 15:21:06 · 11904 阅读 · 0 评论 -
mysql 多表关联查询
mysql 多表关联查询 统计数据SELECT t.ID AS articleId, t.title AS title, t.SPECIAL_ID AS specialId, t.CREATOR AS createId, t.author AS authorId, t.FACT_TIME AS factTime,原创 2016-10-13 11:06:40 · 669 阅读 · 0 评论 -
使用Navicat For MySql 将mysql中的数据导出
两种方法:使用Navicat For MySql 将mysql中的数据导出,包括数据库表创建脚本和数据 (1),右键—>“转储sql文件…” 该功能比较弱,不过也比较简单,直接保存文件。不能设置执行选项。 (2),右键—->“数据传输”. 如果只想 导出数据库表结构,不导出数据,可以把“数据传输”–>“高级”–>“记录选项”中的勾去掉,则不会导出记录了。原创 2015-09-07 14:41:31 · 2428 阅读 · 0 评论