mysql 数据查询相关

基本规则:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
struct 表示一张表,
entry 表示表字段
必要配置:struct: name; entry: name, type, desc
type = string: size必须
{ 描述类型, 对应数据库类型, 对应程序类型}
{ 'tinyint', 'tinyint', 'int8_t'},
{ 'utinyint', 'tinyint unsigned', 'uint8_t'},
{ 'smallint', 'smallint', 'int16_t'},
{ 'usmallint', 'smallint unsigned', 'uint16_t'},
{ 'int', 'int', 'int32_t'},
{ 'uint', 'int unsigned', 'uint32_t'},
{ 'bigint', 'bigint', 'int64_t'},
{ 'biguint', 'bigint unsigned', 'uint64_t'},
{ 'float', 'float', 'float'},
{ 'double', 'double', 'double'},
{ 'blob', 'blob', 'std::string'}, // TODO:sscanf会有问题,暂时不支持
{ 'datetime', 'datetime', 'char'},
{ 'string', 'varchar', 'char'},
oldname : 修改原有名称
index : 索引

角色相关日志必填:
<entry name='event_time' type='datetime' desc='游戏事件的时间' />
<entry name='game_id' type='string' size='128' desc='游戏ID' />
<entry name='area_id' type='uint' desc='区服ID' />
<entry name='group_id' type='uint' desc='服ID' />
<entry name='platform' type='string' size='32' desc='设备类型(android=1,ios=2)' />
<entry name='channel_id' type='string' size='128' desc='渠道ID' />
<entry name='mid' type='string' size='128' desc='玩家用户名' />
<entry name='character_id' type='string' size='128' desc='角色ID' />

非角色相关日志必填:
<entry name='event_time' type='datetime' desc='游戏事件的时间' />
<entry name='game_id' type='string' size='128' desc='游戏ID' />
<entry name='area_id' type='uint' desc='区服ID' />
<entry name='group_id' type='uint' desc='服ID' />

sql 变量应用

1
2
3
4
5
6
-- 两行数据时间差,简单版本,注意变量  @i @ii , 两个sql需要不同的名字
select x.user_id, x.login_time, y.login_time,TIMESTAMPDIFF(SECOND, x.login_time, y.login_time) sub_sec from
(select user_id, login_time, (@i := @i + 1) as rank from user_login_log, (select @i := 1) a where type=11 and app_id=49 and login_time=event_time order by user_id,login_time) as x
LEFT JOIN
(select user_id, login_time, (@ii := @ii + 1) as rank from user_login_log, (select @ii := 0) a where type=11 and app_id=49 and login_time=event_time order by user_id,login_time)as y
on x.user_id = y.user_id and x.rank = y.rank

mysql 数据类型

列类型 表达的范围 存储需求
TINYINT[(M)] [UNSIGNED] [ZEROFILL] -128到127 或 0到255 1个字节
SMALLINT[(M)] [UNSIGNED] [ZEROFILL] -32768到32767 或 0到65535 2个字节
INT[(M)] [UNSIGNED] [ZEROFILL] -2147483648到2147483647 或 0到4294967295 4个字节
BIGINT[(M)] [UNSIGNED] [ZEROFILL] -9223372036854775808到9223372036854775807 或 0到18446744073709551615 8个字节
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] 整数最大位数(M)为65,小数位数最大(D)为30 变长
DATE YYYY-MM-DD 3个字节
DATETIME YYYY-MM-DD HH:MM:SS(1001年到9999年的范围) 8个字节
TIMESTAMP YYYY-MM-DD HH:MM:SS(1970年到2037年的范围) 4个字节
CHAR(M) 0<M<=255 M个字符(所占空间跟字符集等有关系)
VARCHAR(M) 0<M<65532/N M个字符(N由字符集,以及是否为中文还是字母数字等有关系)
TEXT 64K个字符 所占空间跟字符集等有关系
------ 本文结束 ------
------ 版权声明:转载请注明出处 ------