第二章、sql语句技巧和优化
2016-05-18 22:30
477 查看
2.1 正则表达式的使用
1.^在字符串的开始处匹配
2.$在字符串的末尾处进行匹配
3..匹配任意单个字符,包括换行符
4.[]匹配括号里任意字符
5.[^]匹配不出现在括号里的任意字符
6.a*匹配0个或者多个a
7.a+匹配一个或者多个(不包括字符串)
8.a?匹配一个或者0个a
9.a1|a2匹配a1或者a2
10.a(m)匹配m个a
11.a(m,)匹配至少m个a
12.a(m.n)匹配m到n个a
13.a(,n)匹配0到n个a
14.()将模式元素组成单一元素
mysql>select name, email from t where email REGEXP "@163[.,].com$";
2.2 巧用rand()提取随机行
随机查询
>select from t1 order by rand() limit 3;
2.3 利用group by 的with rollup
同样使用with rollup关键字之后,统计出更多的信息
注意:with rollup 不可以和order by 同时使用
>select cname, pname, count(pname) from t group by cname, pname with rollup;
2.4 用bit group function 做统计
在使用group by 语句时,同时用bit_and、 bit_or 函数来统计工作,
这两个函数的作用主要是做数值之间的逻辑位运算
mysql>select id, bit_or(kind) from order_tab group by id
对order_table表中的id分组时对kind做位和或运算
mysql>select id, bit_and(kind) from order_tab group by id
example:
mysql>create table demo(name varchar(30), score int);
mysql>insert into demo(name, score) values("user1", 10),
mysql>("user1", 20), ("user1", 30), ("user2", 1), ("user2", 2), ("user2", 3)
mysql>select bit_or(score) from demo group by name;
30
3
2.5 使用外键需要注意的问题
创建的外键的方式如下
mysql>create table temp(id int, name varchar(20), foreign key(id)
references outTable(id) on delete cascade on update cascade);
注意:Innodb类型的表支持外键,myisam类型的表,虽然可以创建外键,
但是不起作用,主要原因是不支持外键(不建议使用)
2.6 mysql help使用
mysql提示符:
1.? % 可以获得所有mysql>里的命令
2.? create
3.? opti% 因为记不住optimize的全称
4.? reg% regexp
5.查看所有用? contents可以得到所有的帮助大纲,通过这个目录可以在用?
继续往下细查
1.^在字符串的开始处匹配
2.$在字符串的末尾处进行匹配
3..匹配任意单个字符,包括换行符
4.[]匹配括号里任意字符
5.[^]匹配不出现在括号里的任意字符
6.a*匹配0个或者多个a
7.a+匹配一个或者多个(不包括字符串)
8.a?匹配一个或者0个a
9.a1|a2匹配a1或者a2
10.a(m)匹配m个a
11.a(m,)匹配至少m个a
12.a(m.n)匹配m到n个a
13.a(,n)匹配0到n个a
14.()将模式元素组成单一元素
mysql>select name, email from t where email REGEXP "@163[.,].com$";
2.2 巧用rand()提取随机行
随机查询
>select from t1 order by rand() limit 3;
2.3 利用group by 的with rollup
同样使用with rollup关键字之后,统计出更多的信息
注意:with rollup 不可以和order by 同时使用
>select cname, pname, count(pname) from t group by cname, pname with rollup;
2.4 用bit group function 做统计
在使用group by 语句时,同时用bit_and、 bit_or 函数来统计工作,
这两个函数的作用主要是做数值之间的逻辑位运算
mysql>select id, bit_or(kind) from order_tab group by id
对order_table表中的id分组时对kind做位和或运算
mysql>select id, bit_and(kind) from order_tab group by id
example:
mysql>create table demo(name varchar(30), score int);
mysql>insert into demo(name, score) values("user1", 10),
mysql>("user1", 20), ("user1", 30), ("user2", 1), ("user2", 2), ("user2", 3)
mysql>select bit_or(score) from demo group by name;
30
3
2.5 使用外键需要注意的问题
创建的外键的方式如下
mysql>create table temp(id int, name varchar(20), foreign key(id)
references outTable(id) on delete cascade on update cascade);
注意:Innodb类型的表支持外键,myisam类型的表,虽然可以创建外键,
但是不起作用,主要原因是不支持外键(不建议使用)
2.6 mysql help使用
mysql提示符:
1.? % 可以获得所有mysql>里的命令
2.? create
3.? opti% 因为记不住optimize的全称
4.? reg% regexp
5.查看所有用? contents可以得到所有的帮助大纲,通过这个目录可以在用?
继续往下细查
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志
- MySQL 安全事宜
- MySQL 备份与恢复