码迷,mamicode.com
首页 > 数据库 > 详细

常见MYSQL技巧 (51)

时间:2015-09-27 17:27:33      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:

正则表达式的使用

    MySQL利用REGEXP命令提供给用户扩展的正则表达式功能,具体模式序列如下:

序列

序列说明

序列

序列说明

^

在字符串的开始处进行匹配

a?

匹配1个或零个a

$

在字符串的末尾处进行匹配

a1|a2

匹配a1或a2

.

匹配任意单个字符,包括换行符

a(m)

匹配m个a

[…]

匹配出括号内德任意字符

a(m,)

匹配至少m个a

[^…]

匹配不出现括号内的任意字符

a(m,n)

匹配m到n个a

a*

匹配零个或多个a(包括空串)

a(,n)

匹配0到n个a

a+

匹配1个或多个(不包括空串)

(…)

将模式元素组成单一元素

 

使用正则表达式”$”和”[…]”进行匹配:

mysql>select name,email from t where email REGEXP
  “@163[.,]com$”

使用like方式查询:

mysql>select name,email from t where email like “%@163.com”
   or email like “%@163,com”

巧用RAND( )提取随机行

 MySQL数据库中有一个随机函数rand( )是获取一个0—1之间的数,利用这个函数一起和order by能够把数据随机排序。

mysql>select * from stu order by rand( );

下面是通过limit随机抽取了3条数据样本。

mysql>select * from stu order by rand( ) limit 3;

利用GROUP BY的WITH ROLLUP

     使用group by的with rollup子句可以检索出更多的分组聚合信息

mysql> select * from demo;
+-------+-------+
| cname | pname |
+-------+-------+
| bj    | hd    |
| bj    | hd    |
| bj    | xc    |
| bj    | xc    |
| bj    | hd    |
| sh    | dh    |
| sh    | dh    |
| sh    | rg    |
| sh    | dh    |
+-------+-------+
9 rows in set (0.00 sec)

对demo表按照cname、pname列分组对pname列进行聚合计算如下

mysql> select cname,pname,count(pname) from demo group by cname,pname;

+-------+-------+--------------+

| cname | pname | count(pname) |

+-------+-------+--------------+

| bj    | hd    |            3 |

| bj    | xc    |            2 |

| sh    | dh    |            3 |

| sh    | rg    |            1 |

+-------+-------+--------------+

4 rows in set (0.00 sec)

 同样使用with rollup关键字后,统计出更多的信息,如下。注意: with rollup不可以和ordery by同时使用

mysql> select cname,pname,count(pname) from demo group by cname,pname with rollup;

+-------+-------+--------------+

| cname | pname | count(pname) |

+-------+-------+--------------+

| bj    | hd    |            3 |

| bj    | xc    |            2 |

| bj    | NULL  |            5 |

| sh    | dh    |            3 |

| sh    | rg    |            1 |

| sh    | NULL  |            4 |

| NULL  | NULL  |            9 |

+-------+-------+--------------+

7 rows in set (0.00 sec)

 

用BIT GROUP FUNCTIONS做统计

在使用group by语句时可以同时用使用bit_and、bit_or函数来完成统计工作。这两个函数的作用主要是做数值之间的逻辑位运算

mysql>select id,bit_or(kind) from order_rab group by id

对order_rab表中id分组时对kind做位与和或计算

mysql>select id,bit_and(kind) from order_rab group by id

 

使用外键需要注意的问题

   创建外键的方式如下

mysql>create table temp( id int, name char(20), foreign key(id) references outTable(id) on delete cascade on update cascade);

注意:Innodb类型的表支持外键,myisam类型的表,虽然创建外键可以成功,但是不起作用,主要原因是不支持外键。

mysql help使用

在mysql中那么多的命令如何才能记得住是个问题,这里有一个特别好的获得帮助的好方法,当然是在mysql>的提示下的操作:

1.? %   可以获得所有的mysql>里的命令,这个是最多的,那么这里的东西如何去进一步获得帮助呢?

2.? create

3.? opti% 因为记不住optimize的全称,这个时候可以用%来替代

4.? reg% 获得了记不住了的regexp用法.

5.查看所有用? contents可以得到所有的帮助大纲,通过这个目录再用?继续往下细查.

常见MYSQL技巧 (51)

标签:

原文地址:http://www.cnblogs.com/zhenghongxin/p/4842380.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!