Every derived table must have its own alias

如下SQL语句:SELECT * FROM ( SELECT ID,URL FROM alone_action WHERE STATE = '1' ) 在Oracle中可以执行,但在MySQL下无法通过,错误如下:查询:SELECT * FROM ( SELECT ID,URL FROM alone_action WHERE STATE = '1' ) LIMIT 0, 1 …… 阅读全文

MySQL GROUP_CONCAT(expr)函数的使用

此函数返回一个字符串结果,其中包含来自组的连接的非NULL值。 如果没有非NULL值,则返回NULL。 完整的语法如下:GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,co …… 阅读全文

MySQL存储引擎

MySQL存储引擎在创建表时可以指定表的类型,也就是表的存储引擎。表的存储引擎决定了数据如何存储及如何访问,还有事务如何存储。表的存储引擎在很大程度上影响着处理SQL语句所需的存储空间和速度。不同的存储引擎所具有的特点也有所不同,有些存储引擎在处理很多复杂的SELECT语句时非常适合,而另一些则在实现快速更新时比较适合。MySQL运行为每个表定义存储引擎,如果默认,则会选择默认的存储引擎。在Wind …… 阅读全文

MySQL Limit 分页优化

在系统中需要进行分页的时候,我们通常会使用Limit加上偏移量的方法实现,问题来了,在偏移量非常大的时候,例如可能是limit 10000,10这样的查询,这时MySQL需要查询10010条记录然后只返回最后的10条,前面10000条记录都被抛弃,造成效率低下。优化此类分页查询的一个最简单的办法就是尽可能地使用索引覆盖查询,而不是查询所有的列,然后根据需要做一个关联操作再返回所需的列,对于偏移 …… 阅读全文

MySQL 乐观锁与悲观锁

在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种思想。其实不仅仅是关系型数据库系统中有乐观锁和悲观锁的概念,像memcache、hibernat …… 阅读全文

MySQL 共享锁与排他锁

共享锁(Share Lock)共享锁又称读锁,是读取操作创建的锁。其他用户可以并发读取数据,但任何事务都不能对数据进行修改(获取数据上的排他锁), 直到已释放所有共享锁。 如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。用法SELECT ... LOCK IN SHARE MODE;在查询语句后面增加LOCK …… 阅读全文

MYSQL实现Oracle的Start with…Connect By递归树查询

因项目迁移,使用的数据库也需要从Oracle迁移到MySQL 其中有个功能使用到了Oracle的Start with…Connect By递归树查询,而MySQL中没有此函数,但可以通过自定义函数的方式来解决这个问题创建表create table treeList( id varchar(10), -- 节点ID name varchar(10), -- 节点名称 p …… 阅读全文

遇到一个MySQL小问题 Data truncation: Out of range value for column 'huid' at row 1

在数据库某表中字段 “huid” 为 int 类型程序代码中设置的”huid”值为1518753768709 ,超出了该字段所承载的范围,故报错。解决方法为 int 类型修改为bigint类型附表:显示了每个整数类型所需的存储空间和范围 类型 最小值 最大值 TINYINT -128 127 SMALLINT -32768 3276 …… 阅读全文