
Mysql
莫特@
微风拂静叶 缘起何方
展开
-
Lock wait timeout exceeded; try restarting transaction 事务锁
该异常表明被执行资源独占锁被长时间拥有,导致当前sql获取事务锁超时。表说明information_schema保存了MySQL服务器所有数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。再简单点,这台MySQL服务器上,到底有哪些数据库、各个数据库有哪些表,每张表的字段类型是什么,各个数据库要什么权限才能访问,等等信息innodb_trx当前运行的所有事务...原创 2019-12-05 11:41:42 · 182 阅读 · 0 评论 -
关联-依赖-聚合
面向对象设计中的关联,依赖,聚合关联一般涉及到数量,有一对一,一对多,多对多;关联一般是有方向的,如果加上方向,那么关联就还有多对一。比如顾客预订单之间就是一种一对多的关联关系,从面向对象的角度考虑顾客和订单都是对象,那么在设计对象的时候就要考虑关联关系和关联的方向,假如要设计成顾客到订单的一对多关联,那么此时在顾客对象类中就应该有订单这个属性,并且这个属性是一个集合;假如要设计成订单原创 2017-01-05 22:44:11 · 338 阅读 · 0 评论 -
MySQL字符集转化过程
MySQL字符集设置1、 系统变量:– character_set_server:默认的内部操作字符集– character_set_client:客户端来源数据使用的字符集– character_set_connection:连接层字符集– character_set_results:查询结果字符集– character_set_datab转载 2017-01-06 23:20:07 · 1188 阅读 · 0 评论 -
Mysql---truncate与delete区别
DELETE和TRUNCATE TABLE的最大区别是DELETE可以通过WHERE语句选择要删除的记录。但执行得速度不快。而且还可以返回被删除的记录数。而TRUNCATE TABLE无法删除指定的记录,而且不能返回被删除的记录。但它执行得非常快。在MySQL中有两种方法可以删除数据,一种是MySQL DELETE语句,另一种是MySQL TRUNCATE TABLE语句。DELETE语句原创 2017-01-08 11:57:01 · 819 阅读 · 0 评论 -
MySQL---自增字段最大值操作
MYSQL获取自增ID的四种方法 1. select max(id) from tablename 2.SELECT LAST_INSERT_ID() 函数 LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID会改变。 在多用户交替插入数据的情况下max(id)显然不能用。这时就该使用LA转载 2017-01-08 12:17:51 · 4271 阅读 · 0 评论 -
MySQL---null
/* * 数据库中逻辑判断结果有三种:true,false,unknown * null表示未知,但是她还是占用空间,正是由于null的一些特性,在开发中会有比较多的坑出现, * 因此在开发中尽量使用其他默认值代替null,以减少很多难以预料的错误 * * 数据表:test +------+------+------+ | id | name | me |原创 2016-11-27 11:14:26 · 369 阅读 · 0 评论 -
mysql---like-REGEXP
1. Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符、字符串。 例如:select * from wp_posts where post_name REGEXP 'hello',可以检索出列post_name中所有包含hello的行 REGEXP '.og' .是正则表达式中里一个特殊的字符。它表示匹配一个字符,因此,dog,hog,mog等等都能匹配。原创 2016-12-02 17:07:46 · 1734 阅读 · 0 评论 -
mysql存储引擎InnoDB-MyISAM
InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本 的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快, 但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。InnoDB 是 MySQL 上第一个提供外键约束的引擎,除了提供事务处理外,原创 2016-11-28 01:04:47 · 414 阅读 · 0 评论 -
MySQL---编程基础
null是一种特殊的值,并且占用存储空间(空字符串同样也是一种值,但是他不占空间),他可以作用于各种字段,通常用来表示之不确定,没有值等含义在SQL编程中会使用到变量,变量又分为系统变量(以@@开头)和用户自定义变量;系统变量又分为回话系统变量和全局系统变量,静态变量是特殊的全局系统变量;用户自定义变量又分为用户会话变量(以@开头)和局部变量(不以@开头)。所谓的系统变量就是数据库系统提前原创 2017-01-08 19:39:26 · 374 阅读 · 0 评论 -
同步-异步--阻塞-非阻塞
同步与异步牵扯到这两个概念的前提是两个线程会有某些微妙的联系并需要进行通信,不然牵扯不到同步与异步问题。同步场景:我要去上厕所,去了卫生间以后发现蹲位都被占了,并且此时还有两个人在排队等候,而我又必须上厕所,此时我就必须排队等待,这就是所谓的同步。特点是必须等待,等的时间不能干其他任何事情(排队的时候还是可以玩哈手机,抽根烟的,但是蹲位有没有空出来需要自己去判断)。异步场景:去了厕所还原创 2017-01-08 21:25:48 · 407 阅读 · 0 评论 -
NULL¬ NULL
A: IS NULL 与 IS NOT NULL 不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有多列这样的情况下,只要这些列中有一列含有null,该列就会从索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。 任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。事实上SQL S原创 2017-01-10 18:02:53 · 480 阅读 · 0 评论 -
关联子查询-嵌套子查询
查询里边还有一个区别:关联子查询和嵌套子查询,关联子查询就是把子查询部分的数据作为一个中间表放在from的位置,在where中当作两个单独的表对待, 而嵌套子查询则是将子查询的数据作为外部查询的一部分。(貌似这两种类型对视针对同一个表进行的查询,具体待以后进一步验证) 嵌套子查询: Sql代码 select * from emp a where a.sal 这条SQL原创 2017-01-10 18:06:15 · 8907 阅读 · 2 评论 -
mysql中文查询不到结果
这主要是mysql数据查询中字符集的转换所产生的,具体的转化过程比较复杂,不多叙述,看其他资料。具体解决办法:在mysql连接设置中的URl后添加“?useUnicode=true&characterEncoding=8”,注意没有引号。原创 2017-03-21 15:01:14 · 1570 阅读 · 0 评论 -
SQL---In-Exists-Any
假设A in(not in,exists,not exists )BIn:只要A中的值在B中存在则返回truenot in:只要A中的值在B中不存在则返回trueexists:只要A中的值在B中存在则返回truenot exists:只要A中的值在B中不存在则返回trueany:三种情况A > any B:A中的值只要大于B中的最小值则返回trueA A = any B:A中的原创 2017-01-08 16:51:26 · 402 阅读 · 0 评论 -
SQL执行顺序
要知道sql语句,我想我们有必要知道sqlserver查询分析器怎么执行我么sql语句的,我么很多人会看执行计划,或者用profile来监视和调优查询语句或者存储过程慢的原因,但是如果我们知道查询分析器的执行逻辑顺序,下手的时候就胸有成竹,那么下手是不是有把握点呢?查询的逻辑执行顺序FROM ON JOIN WHERE GROUP BY WITH {cube | rollup}H转载 2016-11-27 11:43:16 · 402 阅读 · 0 评论 -
游标的原理
SQL查询结果一般都是多条纪录的结果集,而高级语言一次只能处理一条纪录,用游标机制,将多条纪录一次一条读取出来处理,但是注意,这里的一次一次并不是说一个游标只能存放一个记录,而是一个游标可以存放多个记录,然后通过游标可以单独处理每一个游标中的记录。从而把对集合的操作转化为对单个纪录的处理。 也就是说,游标是用来记录SQL的查询结果的,通过游标可以把结果集中的数据一条一条的提取出原创 2017-01-10 18:00:27 · 5096 阅读 · 0 评论 -
char-varchar
CHAR和VARCHAR类型声明的长度表示你想要保存的最大字符数。char长度固定,字符串本身长度,无长度记录。定义时必须有长度修饰,长度不足指定长度用空格填充(填充右边),超过截断。保存和检索时自动去掉尾部空格,如果被裁掉的字符不是空格,则会产生一条警告。varchar长度可变,字符串本身长度加额外一个或多个表示字符串长度的字节。必须有长度修饰,长度不足指定长度存储实际长度加一个或多个额原创 2016-11-27 21:13:06 · 669 阅读 · 0 评论 -
通过索引优化查询
索引1、对于创建的多列(复合)索引,只要查询条件使用了最左边的列,索引一般就会被使用。[sql] view plain copy mysql> alter table user add index (name,email); Query OK, 5 rows affected (0.08 sec) Records: 5 D原创 2016-11-28 14:10:07 · 332 阅读 · 0 评论 -
SQL索引深度剖析《B》
1、主键索引可以在建立表的添加createtable emp(id int primary key) 也就是说在指定主键的时候就已经指定了主键索引可以在建立完表之后,添加:altertable tablename add primary key(列1,列2)主键索引的特点:(1)一个表中最多只有一个主键索引(2)一个主键索引可以指向多个列(3)主转载 2016-11-28 12:44:52 · 456 阅读 · 0 评论 -
mysql视图操作限制
1.SELECT 子句不能包含 DISTINCT。2.SELECT 子句不能包含聚合函数。3.FROM 子句不能包含多个表。4.WHERE 子句不能包含一个关联性子查询。5.SELECT 语句不能包含一个GROUP BY 子句。6.SELECT 语句不能包含一个ORDER BY 子句。7.SELECT语句不能包含一个集合运算符。8.不能更新一原创 2016-11-29 14:26:36 · 2129 阅读 · 0 评论 -
mysql存储过程和函数
函数只能通过return语句返回单个值或者表对象。而存储过程不允许执行return,但是通过out参数返回多个值。 函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。1)一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。存储过程,功能强大,可以执行包括修改表等一系列数据原创 2016-11-29 15:06:15 · 236 阅读 · 0 评论 -
mysql存储过程详解《好文》
转自:链接mysql存储过程详解1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。一个存储过程是一个可编程的函数,它在数据库中转载 2016-11-29 16:04:25 · 241 阅读 · 0 评论 -
Mysql的sql_mode
Mysql SQL Mode简介MySQL服务器能够工作在不同的SQL模式下,并能针对不同的客户端以不同的方式应用这些模式。这样,应用程序就能对服务器操作进行量身定制以满足自己的需求。这类模式定义了MySQL应支持的SQL语法,以及应该在数据上执行何种确认检查。这样,就能在众多不同的环境下、与其他数据库服务器一起更容易地使用MySQL。可以使用“--sql-mode="modes"”选项,通过转载 2016-12-02 16:47:30 · 324 阅读 · 0 评论 -
mysql巧用正则表达式
MySQL的正则表达式1. Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符、字符串。 例如:select * from wp_posts where post_name REGEXP 'hello',可以检索出列post_name中所有包含hello的行 REGEXP '.og' .是正则表达式中里一个特殊的字符。它表示匹配一个字符转载 2016-12-02 17:07:02 · 2008 阅读 · 0 评论 -
mysql中取随机数据
在mysql官方手机我们会看到mysql随机抽取数据我们只要使用RAND() RAND(N) 即可实现随机从表中取出数据,下面我们一起来看看。rand在手册里是这么说的:RAND()RAND(N)例 代码如下复制代码SELECT * FROM table_name ORDER BY rand() LIMIT 5;转载 2016-12-02 17:23:01 · 540 阅读 · 0 评论 -
mysql的group by ...... rollup
在group by之后添加rollup其实就是为分组以后的小组进行数据统计,当针对一个字段分组的时候则统计一次,如果是针对多个字段进行的分组那么最后需要针对每一个分组进行一次统计。实例如下:rollup 是根据维度在数据结果集中进行的聚合操作。假设用户需要对N个唯独进行聚合查询操作,普通的group by语句需要N个查询和N次group by操作。而rollup的有点是一次可以转载 2016-12-02 17:44:37 · 5950 阅读 · 2 评论 -
mysql查询缓存
mysql查询缓存// 查询缓存不开启$r = mysql_query("SELECT username FROM user WHERE signup_date >= CURDATE()");// 开启查询缓存$today = date("Y-m-d");$r = mysql_query("SELECT username FROM user WHERE signup_date原创 2016-11-26 10:03:14 · 223 阅读 · 0 评论 -
in与exists的取舍
/* in是对内外表的hash连接,exist是对子查询的循环扫描,子查询可能会有相应的索引,不管是exist还是in,外表都是一个外循环,在SQL执行过程中子查询的结果一般是固定的,因此数据库会对子查询结果进行缓存。 * * 有一种说法:【外大内小用in,内大外小用exist,内外相当则随意】。 * hash表底层用的是数组,所以hash表内存连续,索引起来相当快,并且计算机在读存原创 2016-11-27 11:17:52 · 434 阅读 · 0 评论 -
字符型和整型数据宽度限制区别
对于字符型数据,如char,varchar,在定义的时候使用长度限制限制的是实际存储长度。而对于整型数据则限制的是数据在数据表中的显示宽度,不影响实际值的存储。在实际应用中类似整型数据的显示宽度的限制并不影响数据的使用,仅仅是影响到数据库的查看(当前理解可能有误)。原创 2016-11-27 21:20:37 · 1980 阅读 · 0 评论 -
数据库事务体系详解
简介 学习开发至今,数据库部分所学知识一直比较零散,今天整理自己的思路时发现清晰了很多,因此对以前的知识做以总结和梳理。数据库事务四个特性原子性(Atomicity):针对独立事务,该事务要么全部完成,要么全部回滚。 一致性(Consistency):针对独立事务,该事务提交后所得数据必须和预期的数据一致,不受故障影响。 隔离性(Isolation):针对多个事务并发...原创 2016-11-28 00:40:13 · 2742 阅读 · 0 评论 -
悲观锁和乐观锁
悲观锁和乐观锁悲观锁正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。在悲观锁的情况下,为了保证事务的隔转载 2016-11-28 00:43:35 · 306 阅读 · 0 评论 -
索引碎片
内部碎片: 指 当索引页没有用到最大量时就产生了内部碎片。虽然在一个有频繁数据插入的应用程序里这也许有帮助,然而设置一个fill factor(填充因子)会在索引页上留下空间,服务器内部碎片会导致索引尺寸增加,从而在返回需要的数据时要执行额外的读操作。这些额外的读操作会降低查询的性能 外部碎片; 指 表中的数据被修改会产生碎片。当插入或更新表中数据时,表的对应聚簇索引和受影响的聚簇原创 2016-11-28 10:37:07 · 497 阅读 · 0 评论 -
mysql引擎-锁-事务
MySql 常见存储引擎 InnoDB 和 MyISAM 都不支持 Hash 索引,它们默认的索引都是 B-Tree。但是如果你在创建索引的时候定义其类型为 Hash,MySql 并不会报错,而且你通过 SHOW CREATE TABLE 查看该索引也是 Hash,只不过该索引实际上还是 B-Tree。InnoDB 支持事务,支持行级别锁定,支持 B-tree、Full-tex原创 2016-11-28 12:03:29 · 300 阅读 · 0 评论 -
mysql数据库数据类型图解
原创 2016-11-28 12:18:54 · 411 阅读 · 0 评论