
SQL
文章平均质量分 62
larance
phper java python 找工作了 18600756313
展开
-
mysql容器启动 初始化数据库
要在MySQL容器启动时初始化数据库,你可以使用Docker的volume功能将数据库脚本复制到容器内,并在启动时运行这些脚本。文件,并按照文件名的字母顺序执行它们,因此你可以按照需要创建多个脚本并确保它们在启动时按正确的顺序执行。当容器启动时,MySQL服务会读取。原创 2024-05-15 17:32:25 · 509 阅读 · 0 评论 -
警告!别再使用 TIMESTAMP 作为日期字段~
日期类型通常就是使用DATETIME和TIMESTAMP两种类型,然而由于类型TIMESTAMP存在性能问题,建议你还是尽可能使用类型DATETIME。我总结一下今天的重点内容:MySQL 5.6 版本开始DATETIME和TIMESTAMP精度支持到毫秒;DATETIME占用 8 个字节,TIMESTAMP占用 4 个字节,依然占用 8 个字节,占用 7 个字节;TIMESTAMP日期存储的上限为,业务用TIMESTAMP存在风险;转载 2022-09-06 10:20:05 · 208 阅读 · 0 评论 -
MySQL: Hash索引优缺点
优点:因为索引自身只需存储对应的哈希值,所以索引的结构十分紧凑,这也让哈希索引查找的速度非常快缺点:1、不能避免读取行哈希索引只包含哈希值和行指针,而不存储字段值,所以不能使用索引中的值来避免读取行。不过,访问内存中的行的速度很快,所以大部分情况下这一点对性能的影响并不明显。2、无法用于排序哈希索引数据并不是按照索引值顺序存储的,所以也就无法用于排序。3、无法使用部分索引列匹配查找哈希索引也不支持部分索引列匹配查找,因为哈希索引始终是使用索引列的全部内容来计算哈希值的。例如,转载 2021-11-30 22:07:01 · 917 阅读 · 0 评论 -
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP
错误重现SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘siku_carpooling.sc_template.id’ which is not functionally dependent on columns in GROUP BY clause; this i转载 2021-06-02 09:17:36 · 1707 阅读 · 0 评论 -
MySQL 的覆盖索引与回表
两大类索引使用的存储引擎:MySQL5.7 InnoDB聚簇索引* 如果表设置了主键,则主键就是聚簇索引* 如果表没有主键,则会默认第一个NOT NULL,且唯一(UNIQUE)的列作为聚簇索引* 以上都没有,则会默认创建一个隐藏的row_id作为聚簇索引InnoDB的聚簇索引的叶子节点存储的是行记录(其实是页结构,一个页包含多行数据),InnoDB必须要有至少一个聚簇索引。由此可见,使用聚簇索引查询会很快,因为可以直接定位到行记录。普通索引普通索引也叫二级索引,除聚簇索引外转载 2021-05-18 11:54:06 · 275 阅读 · 0 评论 -
MVCC和快照读、当前读
MVCC的实现原理为了方便描述,首先我们创建一个表book,就三个字段,分别是主键book_id, 名称book_name, 库存stock。然后向表中插入一些数据:INSERT INTO book VALUES(1, '数据结构', 100);INSERT INTO book VALUES(2, 'C++指南', 100);INSERT INTO book VALUES(3, '精通Java', 100);版本链对于使用InnoDB存储引擎的表,其聚簇索引记录中包含了两个重要的隐藏列转载 2021-05-16 14:15:14 · 865 阅读 · 0 评论 -
深入理解乐观锁与悲观锁
在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种思想。其实不仅仅是关系型数据库系统中有乐观锁和悲观锁的概念,像memcache、hibernate、tair等都有类似的概念。针对于不同的业务场景,应该选用不同的并发控制方式。所以,不要把乐观并发控制和悲转载 2021-05-13 10:44:19 · 154 阅读 · 0 评论 -
MySQL中的共享锁与排他锁
在MySQL中的行级锁,表级锁,页级锁中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突。行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁及排他锁的概念、使用方式及注意事项等。共享锁(Share Lock)共享锁又称读锁,是读取操作创建的锁。其他用户可以并发读取数据,但任何事务都不能对数据进行修改(获取数据上的排他锁),直到已释放所有共享锁。如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。转载 2021-05-13 10:42:52 · 378 阅读 · 0 评论 -
mysql执行过程以及顺序
前言:mysql在我们的开发中基本每天都要面对的,作为开发中的数据的来源,mysql承担者存储数据和读写数据的职责。因为学习和了解mysql是至关重要的,那么当我们在客户端发起一个sql到出现详细的查询数据,这其中究竟经历了什么样的过程?mysql服务端是如何处理请求的,又是如何执行sql语句的?本篇博客将来探讨这个问题:本篇博客的目录一:mysql执行过程二:mysql执行过程中的状态三:mysql执行的顺序四:总结一:mysql执行过程mysql整体的执行过程如下图所示:.转载 2021-05-07 19:37:10 · 507 阅读 · 0 评论 -
SQL中join连接查询时条件放在on后与where后的区别
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 在使用left jion时,on和where条件的区别如下:1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。 假设有两张表:表1:tab2 id ...转载 2021-05-03 21:59:35 · 3851 阅读 · 0 评论 -
SQL连接查询
一、交叉连接(CROSS JOIN)交叉连接(CROSS JOIN):有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积,也叫笛卡尔积。例如:下面的语句1和语句2的结果是相同的。语句1:隐式的交叉连接,没有CROSS JOIN。SELECT O.ID, O.ORDER_NUMBER, C.ID, C.NAMEFROM ORDERS O , CUSTOMERS CWHERE O.ID=1;语句原创 2011-06-22 10:54:00 · 580 阅读 · 0 评论 -
Sql语句中IN和exists的区别及应用
表展示 首先,查询中涉及到的两个表,一个user和一个order表,具体表的内容如下: user表: order表: in 确定给定的值是否与子查询或列表中的值相匹配。in在查询的时候,首先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件进行筛选。所以相对内表比较小的时候,in的速度较快。 具体sql语句如下:SELECT *FROM `user`WHERE `user`.id.转载 2021-04-30 17:08:29 · 155 阅读 · 1 评论 -
mysql 查看死锁和去除死锁
1、查询进程show processlist2、 查询到相对应的进程,然后 kill id验证(kill后再看是否还有锁)2、查询是否锁表show OPEN TABLES where In_use > 0;示例:新建一个会话执行如下的显示锁示例LOCK TABLES account_data.account READ;SELECT SLEEP(160);UNLOCK TABLES account_data.account;另开启一个会话...转载 2021-04-30 10:02:56 · 2285 阅读 · 0 评论 -
sql语句的位运算
数据库采用1,2,4,8,16.....等用数字标识的状态字段可以进行累加,对存在的几种状态进行组合,从而可形成各种组合状态例如:一条记录该字段原来的数字是,2,如我们想加上4,则可以用update t_User set iFlag = iFlag | 4 where UserID = 1(iFlag 为该字段名)例2:在加上4之后我们想去掉4怎么办呢,可以这样实现update t_User set iFlag = iFlag ^ 4 where UserID = 1这样就又把4从该转载 2021-04-28 20:30:32 · 812 阅读 · 0 评论 -
用PHP的PDO方法操作MySQL数据库方法(查询 更新 删除)
?php $db = array( 'host' => '127.0.0.1', //设置服务器地址 'port' => '3306', //设端口 'dbname' => 'test', //设置数据库名 'username' => 'root', //设置账号 'password' => 'yangji0321', ...转载 2021-03-05 12:46:39 · 422 阅读 · 0 评论 -
MySQ修改字符集编码为UTF8
(1)查看 MySQL 字符集登录 mysql:mysql -u root -p查询 mysql 字符集:mysql> show variables like 'chara%'; 说明:将 character_set_server 字符集设置为 UTF-8。(2)通过修改配置文件设置 MySQL 字符集为 UTF-8,将 my-default.cnf 配置文件复制到 /etc 下的 my.cnf 文件中。cp /usr/sha...转载 2021-03-03 10:20:06 · 315 阅读 · 0 评论 -
mysql 大小写敏感问题
①linux默认情况下,对数据库名和表名的大小写是敏感的,因为linux系统本身对大小写就敏感。②字段内容大小写不敏感。③列名大小写不敏感。今天才注意到 记录一下 可能只是针对某些版本或者某些操作系统更详细 请看https://www.cnblogs.com/developer_chan/p/9247674.html...原创 2021-02-08 23:08:55 · 235 阅读 · 0 评论 -
MySQL 建表时 date 类型的默认值设置
在执行下面 SQL 语句时发现报错CREATE TABLE `jc_site_access_pages` ( `access_date` date NOT NULL DEFAULT '0000-00-00' COMMENT '访问日期', `access_time` time NOT NULL COMMENT '访问时间',) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8 COMMENT='访问详细页面表';报的错误是时间的默认转载 2021-01-13 15:48:15 · 3662 阅读 · 0 评论 -
mysql 存储IP字符为整形
MYSql的IP对int的转换函数select inet_aton(ip) from table_name;网络地址:192.168.33.123每一个值最大不会越过255,也就是十六进制的FF,两个Byte刚好表示的最大值是255,这样子,就可以用一个32位的整形来保存这个地址192 168 33 1231100 0000 1010 1000 0010 0001 0111 1011把这些二进制合在一起就是32位的数了11000000101010000010000101111011十进.原创 2020-09-26 11:52:20 · 339 阅读 · 0 评论 -
聚簇索引和非聚簇索引
总结:InnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,聚簇索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的就是整张表的行记录数据,也将聚集索引的叶子节点称为数据页。这个特性决定了索引组织表中数据也是索引的一部分; 一般建表会用一个自增主键做聚簇索引,没有的话MySQL会默认创建,但是这个主键如果更改代价较高,故建表时要考虑自增ID不能频繁update这点。 我们日常工作中,根据实际情况自行添加的索引都是辅助索引,辅助索引就是一个为了需找主键索引的二级索引,现在找到转载 2020-08-28 08:34:44 · 437 阅读 · 0 评论 -
mysql 的MVCC(多版本并发控制)
MVCC (Multi-Version Concurrency Control) 多版本并发控制 MVCC 使得大部分支持行锁的事务引擎,不再单纯的使用行锁来进行数据库的并发控制,取而代之的是把数据库的行锁与行的多个版本结合起来,只需要很小的开销,就可以实现非锁定读,从而大大提高数据库系统的并发性能。 InnoDB的MVCC,是通过在每行的纪录后面保存两个隐藏的列来是实现的。这两个列,一个保存了行的创建时间,一个保存了行的过期时间(删除时间),当然存储的不是实际的时间值,而是系统的版本号。...原创 2020-08-05 08:38:48 · 173 阅读 · 0 评论 -
理解事务的4种隔离级别
数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。下面通过事例一一阐述它们的概念与联系。Read uncommitted读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。事例:老板要给程序员发工资,程序员的工资是3.6万/月。但是发工资时老板不小心按错了数字,按成3.9万/月,该钱已经打到程序...转载 2020-08-05 07:22:59 · 251 阅读 · 0 评论 -
Mysql联合索引最左匹配原则
联合索引又叫复合索引,对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c)。 可以支持a | a,b| a,b,c3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引不同于使用两个单独的索引。复合索引的结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏对进行排序,然后按名字对有相同姓氏的人进行排序。如果.转载 2020-08-02 22:00:16 · 525 阅读 · 0 评论 -
Mysql创建、删除用户
MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束):1.新建用户登录MYSQL: @>mysql -u root -p @>密码创建用户: mysql> insert into mysql.user(Host,User,Password) values("localhost","test",passwor转载 2013-03-08 16:00:06 · 754 阅读 · 0 评论 -
sql replace into用法详细说明
REPLACE的运行与INSERT很相似。只有一点例外,假如表中的一个旧记录与一个用于PRIMARYKEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。 注意,除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。所有转载 2013-02-20 18:05:42 · 768 阅读 · 0 评论 -
详解mysql int类型的长度值问题
转自:http://www.2cto.com/database/201208/150865.html我的朋友海滨问我mysql在建表的时候int类型后的长度代表什么? 是该列允许存储值的最大宽度吗? 为什么我设置成int(1), 也一样能存10,100,1000呢. 当时我虽然知道int(1),这个长度1并不代表允许存储的宽度,但却没有一个合理的解释. 或者说对这个长度也没转载 2012-10-26 11:32:50 · 2980 阅读 · 0 评论 -
CentOS 编译安装 MongoDB与mongoDB的php扩展
下载 wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.0.4.tgz 解压缩 到/usr/local/mongo创建配置文件mkdir -p /usr/local/mongo/etc /usr/local/mongo/data /usr/local/mongo/log/ /usr/local/mongo/repair转载 2012-04-26 17:47:30 · 716 阅读 · 0 评论 -
MySql Cast与Convert函数
转自 :http://www.cnblogs.com/SandyWang/archive/2010/06/03/1750907.html今天看到Mysql的 Cast和Convert函数。发现这个还是与别的数据库有些区别的。两者具体的语法如下:Cast(value as type); Convert(value ,type);type不是都可以滴,可以转换的type转载 2012-04-01 14:44:45 · 610 阅读 · 0 评论 -
MySQL-Cluster架构图文详解
转自:http://www.cnblogs.com/StanBlogs/archive/2011/06/14/2080986.html 前言: 这是我第一次接触Linux,CentOS, MySQL,用了5天的时间终于将基于CentOS5.0系统下MySQL-Cluster架构成功,下面将我这些经验分享给大家。若发现有什么错误和疏忽之处,请发邮件给我:stan_home@qq.co转载 2012-02-09 17:35:25 · 566 阅读 · 0 评论 -
理解MySQL——复制(Replication)
转自 :http://www.cnblogs.com/hustcat/archive/2009/12/19/1627525.html1、复制概述1.1、复制解决的问题数据复制技术有以下一些特点:(1) 数据分布(2) 负载平衡(load balancing)(3) 备份(4) 高可用性(high availability)和容错1.2转载 2012-02-09 16:54:50 · 510 阅读 · 0 评论 -
mysql长连接和短连接的问题
什么是长连接?其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。通常的短连接操作步骤是:连接-》数据传输-》关闭连接;而长连接通常就是:连接-》数据传输-》保持连接-》数据传输-》保持连接-》…………-》关闭连接;这就要求长连转载 2011-09-25 20:55:12 · 777 阅读 · 0 评论 -
MySQL里的wait_timeout
如果你没有修改过MySQL的配置,缺省情况下,wait_timeout的初始值是28800。wait_timeout过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能,不过也不能把这个指设置的过小,否则你可能会遭遇到“MySQL has go转载 2011-09-25 21:11:36 · 698 阅读 · 0 评论 -
SQL查询慢的48个原因分析
查询速度慢的原因很多,常见如下几种: 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有创建计算列导致查询不优化。 4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询转载 2011-07-25 19:18:57 · 1012 阅读 · 0 评论 -
mysql 游标使用
请使用 mysql 1.5 或以上version;测试表 level ;create table test.level (name varchar(20)); 再 insert 些数据 ;代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighli转载 2013-03-29 10:58:43 · 826 阅读 · 0 评论 -
mysql 触发器学习
1. 一个简单的例子1.1. 创建表: create table t(s1 integer);1.2. 触发器:?delimiter |create trigger t_trigger before insert on t for each row begin set @x = "hel转载 2013-04-01 17:10:37 · 733 阅读 · 0 评论 -
mysql 查询中sending data 时间过长
过长的原因1、查询字段过多 使用了 SELECT * FROM TABLE2、查询数据过多 比如 LIMIT 0,10003、查询数据不多 但是偏移量大 比如 LIMIT 1000,10如果是 第一种情况 修改sql,改成 SELECT id,name FROM TABLE如果是第二种情况 目前是无解如果是第三种情况 可以采用比如用ID 排序 可以 用ID>XXX原创 2016-12-12 23:06:40 · 5070 阅读 · 0 评论 -
select 1 from ... sql语句中的1代表什么意思
原帖地址 :http://blog.youkuaiyun.com/wangyihust/archive/2009/02/05/3863758.aspx select 1 from table;与select anycol(目的表集合中的任意一行) from table;与select * from table 从作用上来说是没有差别的,都是查看是否有记录,一般是作条件查询用的。select 1 from 中的1是一常量(可以为任意数值),查到的所有行的值都是它,但从效率上来说,1>anycol>*,因为不用查字典表转载 2011-03-04 15:48:00 · 932 阅读 · 0 评论 -
MySQL体系结构漫谈
有好一阵子,我一直在四处寻找(已经尝试过很多次)面向技术精通但对MySQL钻研不太深的读者的关于MySQL体系结构和技术细节的优质资源,但一无所获。我的意思是,确实有MySQL手册(篇幅庞大且描述详尽),也确实有MySQL内部手册(已经大约过时10年了),以及各种各样的博客日志。所以我想自己应该写点东西来粗略地解释下这一切是怎样组合在一起的,以及它对你的系统做了些什么(进程、线程、IO,等等)(基转载 2016-06-19 22:49:08 · 641 阅读 · 0 评论 -
MySQL十大优化技巧
<br />1. 优化你的MySQL查询缓存<br /><br />在MySQL服务器上进行查询,可以启用高速查询缓存。让数据库引擎在后台悄悄的处理是提高性能的最有效方法之一。当同一个查询被执行多次时,如果结果是从缓存中提取,那是相当快的。<br /><br />但主要的问题是,它是那么容易被隐藏起来以至于我们大多数程序员会忽略它。在有些处理任务中,我们实际上是可以阻止查询缓存工作的。<br /><br />1. // query cache does NOT work<br /><br />2. $r =转载 2011-03-04 15:44:00 · 528 阅读 · 0 评论 -
mysql视图
1.什么是视图 视图(view):用一个或多个基础表根据用户需要而做成一个虚拟表,但却具有很高实用性的一个特性。在mysql5.0以后集成。 需要理解的是: A.视图是虚表,它在存储时只存储视图的查询定义,而没有存储对应的数据 B.视图中的行和列数据来自由定义视图的查询所引用的表,在引用视图时动态生成转载 2013-03-28 15:56:12 · 720 阅读 · 0 评论