
sql
迷途大灰狼
这个作者很懒,什么都没留下…
展开
-
primary key与unique的区别
定义了 UNIQUE 约束的字段中不能包含重复值,可以为一个或多个字段定义 UNIQUE 约束。因此,UNIQUE 即可以在字段级也可以在表级定义, 在 UNIQUED 约束的字段上可以包含空值。ORACLE自动会为具有 PRIMARY KEY 约束的字段(主码字段)建立一个唯一索引和一个NOT NULL约束,定义PRIMARY KEY约束时可以为它的索引;UNIQUED 可空,可以在一个表里的一个或多个字段定义;PRIMARY KEY 不可空不可重复,在一个表里可以定义联合主键;简单的说,pri.转载 2022-02-14 16:12:08 · 4327 阅读 · 0 评论 -
wps技巧:excel记录转sql语句
1.excel记录转sql语句1.1.CONCATENATE总会有些情况需要将excel文档的数据录入数据库中,当然我们也不想一条条地手敲进去,毕竟这样的效率实在是太慢了。这里推荐使用一个简单的将excel数据转sql语句的方法:excel数据表选中D1区,在fx的框中输入:=CONCATENATE("insert into USER(SYSTEMID,CARDTYPE,NAME) values(sys_guid(),'"&B1&"', '"&...转载 2021-12-31 15:07:12 · 8078 阅读 · 0 评论 -
centos7 安装MariaDB 10.6
背景centos7使用yum install mariadb-server命令安装的默认版本是5.5的,这是因为系统默认源只有5.5的版本,所以我们去增加一个10.6的源增加源去mariaDB官网找到对应的源Download MariaDB Server - MariaDB.org这是我选的源复制这部分作为centos7的源# MariaDB 10.6 CentOS repository list - created 2021-12-22 11:16 UTC# htt..原创 2021-12-22 20:02:32 · 4485 阅读 · 4 评论 -
MYSQL数据库字母数字混合字段排序问题(A1,A10,A11,A12...
对MySQL数据表里的一个字符型字段排序,其内容格式为一位字母+顺序数字。数字没有前导零,长度不固定。这种含字母的数字序列,排序出来的结果和我们想要的结果是不一样的,因为它不是纯数字,只能按字符规则排。结果是A1,A10,A11,A12。。。。A19,A2,A20,A21。。。。而不是我们通常感觉中的A1,A2,A3,。。。。。A10,A11,这样的结果。想要得到正确的排序有两个办法。一是改变字段内容结构,在数字前加上零,让所有的字段值拥有相同的长度。二是不改变字段内容,在排序的SQL语句上想办转载 2021-09-09 11:15:01 · 2311 阅读 · 0 评论 -
utf8和utf8mb4的区分
(1)简介: MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。(2)内容描述: 那上面说了既然utf8能够存下大部分中文汉字,那为什么还要使用utf8mb4呢? 原来mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字...转载 2021-08-24 10:00:08 · 258 阅读 · 0 评论 -
MariaDB设置初始化密码及修改密码
MariaDB设置初始化密码及修改密码方法一:[root@localhost ~]# mysql -urootMariaDB [(none)]> use mysql;MariaDB [mysql]> UPDATE mysql.user SET password = PASSWORD('newpassward') WHERE user = 'root';MariaDB [mysql]> FLUSH PRIVILEGES;方法二:[root@localhost ~]#转载 2021-07-23 16:52:08 · 17387 阅读 · 1 评论 -
General error: 1805 Column count of mysql.proc is wrong. Expected 21, found 20. The table is probabl
解决mysql_upgrade -uroot -p --force原创 2021-04-08 18:21:13 · 809 阅读 · 0 评论 -
Mysql中varchar存放中文与英文所占字节异同
一、关于UTF-8UTF-8Unicode Transformation Format-8bit。是用以解决国际上字符的一种多字节编码。它对英文使用8位(即一个字节) ,中文使用24位(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集额的浏览器上显示。如果是UTF8编码,则在外国人的英文IE也能显示中文,他们无需下载IE的中文语言支持包。二、关于GBKGBK是国家标准GB2312基础上扩容后..转载 2021-01-23 13:20:26 · 3727 阅读 · 2 评论 -
Mysql 一次性备份导出/导入恢复所有数据库
有木有遇到过这种情况?电脑或者服务器需要重装系统?可是你电脑上存着n多个网站的数据库,怎么办?把数据库文件夹拷贝出来,重装系统之后再拷回去?如果你使用了InnoDB引擎,恐怕那样做会出麻烦的,一个一个往外导数据库?天哪,那要搞到何年何月啊?今天合肥网站制作向阳互联就来介绍一下如何一口气导出全部数据库,再把数据库恢复回来,其实利用mysqldump的—all-databases参数可以一口气把你数据库root用户下的所有数据库一口气导出到一个sql文件里。然后,重装系统后使用source命令可以再一口气倒回来转载 2021-01-22 14:00:39 · 294 阅读 · 0 评论 -
数据库出现SQLSTATE[HY000] [2002] No such file or directory
项目运行出现SQLSTATE[HY000] [2002] No such file or directory解决方法localhost 改为 127.0.0.1 就ok了原创 2021-01-21 11:52:39 · 1167 阅读 · 0 评论 -
MySQL数据库中查询数据库表、字段总数量,查询数据总量
最近要查询一些数据库的基本情况,由于以前用oracle数据库比较多,现在换了MySQL数据库,就整理了一部分语句记录下来。 1、查询数据库表数量 #查询MySQL服务中数据库表数据量 SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES GROUP BY table_schema; #查询指定数据库表数量 SELECT COUNT(*) TABLES, table_schema FROM infor转载 2021-01-19 11:04:50 · 27994 阅读 · 3 评论 -
mysql创建字段非空NOT NULL的好处
很多表都包含可为 NULL (空值) 的列,即使应用程序井不需要保存 NULL 也是如此 ,这是因为可为 NULL 是列的默认属性。通常情况下最好指定列为 NOT NULL,除非真 的需要存储 NULL 值。如果查询中包含可为 NULL 的列,对 MySQL 来说更难优化 ,因为可为 NULL 的列使 得索引、索引统计和值比较都更复杂 。可为NULL 的列会使用更多的存储空间 ,在 MySQL 里也需要特殊处理 。当可为NULL 的列被索引肘,每个索引记录需要一个额 外的字节,在 MyISAM 里甚至还转载 2021-01-11 17:34:59 · 1239 阅读 · 0 评论 -
解决laravel出现Syntax error or access violation: 1055 ‘***‘ isn‘t in GROUP BY
laravel 5.3 以后默认开启 mysql严格模式(strict)在mysql在严格模式下, 并且开启了ONLY_FULL_GROUP_BY的情况下,group by 的字段没有出现在 select 的语句中会报错.关闭了严格模式就不会报错.如下Demo复制代码public static function orders($phase){ return self::select(DB::raw("SUM(orders) as orders"),"type","users_id转载 2020-12-28 17:54:46 · 1631 阅读 · 0 评论 -
MySQL索引原理及慢查询优化
背景MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重。本人从2013年7月份起,一直在美团转载 2020-12-16 14:35:11 · 122 阅读 · 0 评论 -
MySQL字符串中数字排序的问题
MySQL字符串相信大家都不陌生,在MySQL字符串排序时经常会遇到一些问题,比如下面的这今天解决了一个关于MySQL字符串排序的很奇怪的问题,在数据里面定义的是varchar类型,实际存放的是Int类型的数据,按一下查询语句进行排序:将字段*1或者+0可以将MySQL字符串字段按数值排序如:select * from table where 1 order by id*1 desc;或者select * from table where 1 order by id+0 desc;除了上述方.转载 2020-11-19 18:56:38 · 1305 阅读 · 0 评论 -
CentOS7 下MariaDB安装与简单配置(最新)
前言MySQL和MariaDB的区别:LAMP架构盛极一时,这离不开MySQL的免费与易用,但是在Oracle收购了Sun之后,很多公司开始担忧MySQL的开源前景,而最近Oracle进一步闭源的举措更是让人难以安心,众多互联网公司纷纷开始寻求MySQL的替代方案。不得不提的是Apple的远见,在Oracle收购Sun之初就宣布迁移到PostgreSQL。但PostgreSQL的设计初衷就不同于MySQL,并不是使用MySQL的大部分互联网公司合适的解决方案。除了Apple,Google、Faceb转载 2020-11-02 18:43:54 · 462 阅读 · 1 评论 -
mysql查看当前实时连接数
静态查看: SHOW PROCESSLIST; SHOW FULL PROCESSLIST; SHOW VARIABLES LIKE '%max_connections%'; SHOW STATUS LIKE '%Connection%'; 实时查看: mysql> show status like 'Threads%'; +-------------------+-------+ | Variable_.转载 2020-06-10 14:54:33 · 11481 阅读 · 0 评论 -
mysql 性能优化方向
按照从大到小,从主要到次要的形式,分析 mysql 性能优化点,达到最终优化的效果。利用 mindmanger 整理了思路,形成如下图,每个点在网上都能找到说明,并记录下。形成了优化的思路:1 连接 Connections经常会遇见”mysql: error 1040: too many connections”的情况,一种是访问量确实很高,mysql服务器抗不住,这个时候就要考虑增加从服务器分散读压力,另外一种情况是mysql配置文件中max_connections值过小:my..转载 2020-06-10 14:53:18 · 388 阅读 · 0 评论 -
mysql覆盖索引与回表
select id,name where name='shenjian'select id,name,sex* where name='shenjian'*多查询了一个属性,为何检索过程完全不同?什么是回表查询?什么是索引覆盖?如何实现索引覆盖?哪些场景,可以利用索引覆盖来优化SQL?这些,这是今天要分享的内容。画外音:本文试验基于MySQL5.6-InnoDB。一、什么是回表查询?这先要从InnoDB的索引实现说起,InnoDB有两大类索引: 聚集索引(clu转载 2020-06-01 10:57:04 · 227 阅读 · 0 评论 -
MySQL Explain详解
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用。-- 实际SQL,查找用户名为Jefabc的员工select * from emp转载 2020-06-01 10:53:29 · 194 阅读 · 0 评论 -
RROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction的问题解决
前言:朋友咨询我说执行简单的update语句失效,症状如下:mysql>updateorder_infosetprovince_id=15,city_id=1667whereorder_from=10andorder_out_sn='1407261241xxxx';ERROR1205(HY000):Lockwaittimeoutexceeded;t...转载 2020-04-22 17:47:57 · 404 阅读 · 0 评论 -
插入数据库的数值大小和我们代码输出的不一样---类型错误记录
例子例如代码输出的money值是1.4和0.66 ,但插入数据库的时候却变了1.4000000000000000001,和0.6599999999999原因出现该情况,肯定就是数据类型出问题了,我检查发现,图1的money数据类型是float,但我数据库的money字段数据类型是varchar,原因这是这两类型不一致导致解决修改了插入数据类型和数据库一样,就解决...原创 2020-04-10 16:01:11 · 258 阅读 · 0 评论 -
主表,从表,关联表,父表,子表
一、前言在数据库设计中,Hibernate,iBatis等ORM框架的使用中经常听说主键,外键,主表,从表,关联表,父表,子表之类的术语,弄懂它们之前的区别与联系对于数据库设计和ORM框架的学习使用是非常有必要的。二、概述下面从数据库设计角度,ORM框架使用(以Hibernate为例),PowerDesigner软件以及实际业务角度进行一下介绍。...转载 2020-01-07 10:13:08 · 3534 阅读 · 0 评论 -
Linux查看MySQL配置文件路径及相关配置
(1)关于配置文件路径有时候,我发现虽然尝试修改了配置文件的一些变量,但是并没有生效。后来才发现原来是因为修改的文件并非MySQL服务器读取的配置文件。如果不清楚MySQL当前使用的配置文件路径,可以尝试这样查看:mysqld --verbose --help|grep -A 1 'Default options'复制代码或者是执行:mysql --v...转载 2019-12-06 13:03:41 · 7811 阅读 · 0 评论 -
[MySQL高级](七) MySQL主从复制及读写分离实战
1. 简介 随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求。此时数据库集群就很好的解决了这个问题。采用MySQL分布式集群,能够搭建一个高并发、负载均衡的集群服务器。在此之前我们必须要保证每台MySQL服务器里的数据同步。数据同步我们可以通过MySQL内部配置就可以轻松完成,主要有主从复制和主主复制。 MySQL数据库自身提供的主从复制功能可以方便的实...转载 2019-12-03 23:12:11 · 161 阅读 · 0 评论 -
数据库MySQL优化和redis持久化方式总结
redis持久化2种方式:1.rdb什么是持久怀:持久化就是在redis服务器宕机或重启时保证数据不丢失,将数据由内存保存到磁盘的过程。1.rdb形式---利用快照快照的条件:在一定时间内发生改变的key的个数超过设定的key的个数则会进行快照2.快照的原理分3步:1)首先redis服务器会利用fork函数复制当前线程的子线程2)当前线程会继续接受和处理来自客...转载 2019-12-03 22:56:37 · 1095 阅读 · 0 评论 -
全国所有省市区联动sql(包含台湾、香港、澳门)
网上搜出来所谓全国的,很多都没有3级联动或者有部分有有部分没有,或者有些台湾和香港、澳门这些都不全的数据,最后还是自己动手,以下是sqlCREATE TABLE `regions` ( `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键,地区ID', `parent_id` int(11) unsigned NO...原创 2019-11-25 17:16:36 · 236338 阅读 · 0 评论 -
关于sql_mode的设置问题
mysql的sql_mode合理设置sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。在生产环境必须将这个值设置为严格模式,所以开发、测试环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题 sql_mode常用值如下: ONLY_FULL_GROUP_BY:对于GROUP BY聚合操作,如果在SELECT...转载 2018-08-24 18:36:18 · 860 阅读 · 0 评论 -
INTERVAL 用法 mysql
做个例子描述吧,也许更易于理解。准备:1.建表create table INTERVAL_TEST( t_id INTEGER not null, --纯id t_date VARCHAR2(40) not null,--时间,如果此处类型为date最好,不过现在很多应用都喜欢把时间建成varchar2 t_flagCHAR(40) --没什么业务含义,只...转载 2018-09-14 10:51:54 · 35772 阅读 · 1 评论 -
中国56民族 sql
CREATE TABLE `nations` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '民族名称', `created_at` timestamp NULL DEFAULT NULL, `updat...原创 2018-09-20 14:57:02 · 519 阅读 · 0 评论 -
mysql 查询当天、本周,本月,上一个月的数据
今天select * from 表名 where to_days(时间字段名) = to_days(now());昨天SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1近7天SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) ...转载 2018-12-05 15:44:10 · 136 阅读 · 0 评论 -
关于Mysql5.7高版本group by新特性报错
一个项目的开发到测试上线运营,团队对项目的管理不成熟会影响项目的开发效率。由于项目是我刚接手,独自在Centos搭建PHP环境,所以就考虑使用高版本,选择了Mysql5.7,本地开发环境还是Windows继承环境,PHP环境和Centos是统一的7.0,但是Mysql版本是5.3的,本地开发一切顺利,到了Centos下出现了一些问题,这就是因为开发环境和测试|线上环境不一致导致的。mys...转载 2019-01-04 11:41:24 · 267 阅读 · 0 评论 -
mysql查询中,数据按拼音字母排序
如果表字段使用的GBK编码的话,我们可以直接order by value,因为GBK本身就是按照拼音字母排序ABCDEFGHIGK...,当第一位相同的时候会比较第二位,以此类推。 如果表字段使用的UTF-8编码的话,通常我们都会的编码,这样我们可以使用MySQL的convert方法开转换gbk进行排序。column_name:是排序使用的字段名ORDER BY CONVERT( col...原创 2019-03-01 11:37:07 · 1379 阅读 · 0 评论 -
mysql重置自增长ID
方法一:适用于表没有外键的情况truncate table_name;方法二: 适用于任何情况优点:适用范围广,还可以设定自增id从什么值开始缺点:如果数据量大的话。执行起来比较慢,而且数据会丢失delete from table_name;alter table `table_name` auto_increment=1;...原创 2019-03-01 13:41:40 · 1410 阅读 · 0 评论 -
sql查询column为空的数据和查询column不空的数据,情况和查询方式汇总
本文以table是 users表为案列 并在mysql环境使用 (图1) (图2)查询column为空数据的三种情况情况一:如column字段是可以为空的字段 并且字段默认显示是(NULL)的数据方法一:使用 字段 IS NULLSELECT * FROM users WHERE `w...原创 2019-03-14 12:27:21 · 5042 阅读 · 0 评论 -
mySql中IFNULL的使用说明
IFNULL(expr1,expr2)如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值具体用法如:现有学生表(tbl_student)和分数表(score),查询学生表的所有字段和学生相对于的英语成绩(english_score)sql如下:select stu.*,IFNULL(score.english_sco...转载 2019-03-14 11:42:01 · 280 阅读 · 0 评论 -
MySQL远程连接ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX'(111) 的问题
装了个navicat ,然后去连接mysql服务器,一直连不上,一开始以为是防火墙问题,后来防火墙都关闭,iptable服务关闭,还是不行,网上查了下:主要是因为设置了bind_address=127.0.0.1原文引用:问题描述:从一台linux远程连接另一台linux上的MySQL, 出现ERROR 2003 (HY000): Can't connect to My...转载 2019-08-20 14:45:05 · 16461 阅读 · 0 评论 -
CentOS 6 或早期的版本中提供的是 MySQL 的服务器/客户端安装包,但 CentOS 7 已使用了 MariaDB 替代了默认的 MySQL。MariaDB数据库管理系统是MySQL的一个分
CentOS 6 或早期的版本中提供的是 MySQL 的服务器/客户端安装包,但 CentOS 7 已使用了 MariaDB 替代了默认的 MySQL。MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。Linux下安装MariaDB官方文档参见:官网地址...转载 2019-08-28 12:57:24 · 186 阅读 · 0 评论 -
mysql 的sql_model 严格模式
发布项目到正式环境插入数据decimal类型的字段就报错了,然后检查了一下是数据库的sql_model的问题执行一下该sql语句就行了SET SESSION sql_mode = '';SET GLOBAL sql_mode = ''; ...原创 2018-08-24 18:35:38 · 1496 阅读 · 0 评论