MySQL order by

需求

一个表字段叫status,值是1,2,3,4,5,6,7,8,9

project manager想进行分类,然后某一类的排序规则是按照status 1,5,3,4 排序,相同状态的按时间排序

实现SQL

select demo_id,status,create_time from demo_table
where userId='123456' and status in (1,5,3,4)
order by field(status,1,5,3,4), demo_id desc
limit 0,30;

+----+-------------+----------------[......]

阅读全文

如何恢复 SET UNUSED 的 COLUMN

通过上篇文章,我们已经基本了解 标记列为未使用 (Marking Columns Unused) 了。

我们知道,在 SET UNUSED 后 其实数据并未真的被删除,若这时又想恢复该列,有办法吗?

接下来,我们来实验一下。

如何修复被标记为 UNUSED 的字段

0. 实验环境 ORACLE 11.2.0.4

16:49:06 sys@TQ(tq-78)> select * from v$version;

BANNER
----------------------------------------------------------------------------[......]

阅读全文

InnoDB存储引擎文件

我们知道MySQL数据库相关的一些文件,可以分为MySQL数据库文件以及各存储引擎相关的文件。与MySQL数据库有关的文件中,错误文件和二进制日志文件非常重要。当MySQL数据库发生任何错误时,DBA首先就应该去查看错误文件,从文件提示的内容中找出问题所在。当然,错误文件不仅记录了错误内容,也记录了警告的信息,通过一些警告也有助于DBA对于数据库和存储引擎进行优化。接下来,我们介绍与InnoDB存储引擎密切相关的文件,这些文件包括表空间文件、重做日志文件。
表空间文件
InnoDB采用将存储的数据按表空间(tablespace)进行存放的设计。在默认配置下会有一个初始大小为10MB,名为i[......]

阅读全文

MySQL二进制日志(binlog)

二进制日志(binary log)记录了对MySQL数据库执行更改的所有操作,但是不包括SELECT和SHOW这类操作,因为这类操作对数据本身并没有修改。然而,若操作本身并没有导致数据发生变化,那么该操作可能也会写入二进制日志。例如:

tqdb@localhost.[tqdb] 16:00:48> update t set b = 'dbtan' where a = 6;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0

tqdb@localhost.[tqdb] 16:01:0[......]

阅读全文