标签:
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”
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子句可以检索出更多的分组聚合信息
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)
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)
在使用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中那么多的命令如何才能记得住是个问题,这里有一个特别好的获得帮助的好方法,当然是在mysql>的提示下的操作:
1.? % 可以获得所有的mysql>里的命令,这个是最多的,那么这里的东西如何去进一步获得帮助呢?
2.? create
3.? opti% 因为记不住optimize的全称,这个时候可以用%来替代
4.? reg% 获得了记不住了的regexp用法.
5.查看所有用? contents可以得到所有的帮助大纲,通过这个目录再用?继续往下细查.
标签:
原文地址:http://www.cnblogs.com/zhenghongxin/p/4842380.html