1. DBMS 分为两类
(1)基于共享文件系统的DBMS(Microsoft Access)
(2)基于客户机-服务器的DBMS
2. 返回数据库可用表的列表
desc customers/describe orders/show columns from customers;
3. show status 显示广泛的服务器状态信息
4. show create database/show create table 显示创建特定数据库或表的MySQL语句。
5. show grants for/show grants for root@127.0.0.1显示授予用户的安全权限。
6. show errors 和 show warnings 显示服务器错误或警告信息。
7. select version();
8. select database();
9. 去除重复 select distinct vend_id from products;
select vend_id from products group by vend_id;
distinct 应用于所有的列。不能不分使用。
select distinct vend_id, prod_price from products;
10. 限制结果 limit
select prod_name from products limit 5; = select prod_name from products limit 0, 5;
带一个值的limit 总是从第一行开始,给出的数为返回的行数。
带两个值的limit可以指定从行号为第一个值的位置开始。
MySQL 5 支持 LIMIt 4 OFFSET 3 从第3行开始取4行
select prod_name from products limit 1 offset 0;
11. 使用完全限定名(列的完全限定名和表的完全限定名)
select products.prod_name from sqltest2.products;
12. 关系数据库的理论认为,如果不明确规定排序的顺序,则不应该嘉定检索出来的数据的顺序有意义。
13. 用非检索的列排序是完全合法的。
14. 排序方向
DESC 降序排列
ASC 升序排列
select prod_id, prod_price, prod_name from products
order by prod_price desc, prod_name;
15. order by 和 limit 组合可以找出一个列中最高或最低的值。
select prod_price from products order by prod_price desc limit 1;
+------------+
| prod_price |
+------------+
| 55 |
+------------+
16. select prod_name, prod_price from products where prod_name = 'fuses';
+-----------+------------+
| prod_name | prod_price |
+-----------+------------+
| Fuses | 3.42 |
+-----------+------------+
MySQL 在执行匹配时默认不区分大小写
17. NULL 值检测。
select prod_name from products where prod_price is null;
18. AND 的优先级高级 ORIN 操作符
select prod_name, prod_price from products where vend_id in (1002, 1003);
19. NOT 用来否定之后的所有条件。MySQL 支持对IN、BETWEEN、EXISTS 字句取反
select prod_name, prod_price from products where vend_id not in (1002, 1003);
20. % 通配符不能匹配NULL
where prod_name like '%' 不能匹配用值NULL作为产品名的行
21. (_) 下滑线匹配单个字符。
22. 使用正则表达式过滤(REGEXP 可以用来匹配整个列值,使用定位符 ^或$)
select prod_name from products where prod_name regexp '1000' order by prod_name;
select prod_name from products where prod_name regexp '.000' order by prod_name;
正则表达式的匹配部区分大小写。为区分大小写可使用BINARY关键字。
select prod_name from products where prod_name regexp binary 'JetPack .000' order by prod_name;
进行OR 匹配
select prod_name from products where prod_name regexp '1000|2000' order by prod_name;
匹配几个字符之一,用[] 表示。[^123] 表示不包含
select prod_name from products where prod_name regexp '[123] Ton' order by prod_name;
+-------------+
| prod_name |
+-------------+
| 1 ton anvil |
| 2 ton anvil |
+-------------+
匹配范围
0到9 [123456789] 或 [0-9] [a-z]
select prod_name from products where prod_name regexp '[1-5] Ton' order by prod_name;
+--------------+
| prod_name |
+--------------+
| .5 ton anvil |
| 1 ton anvil |
| 2 ton anvil |
+--------------+
匹配特殊字符,需要添加前导 \\(MySQL 的特殊要求)
select prod_name from products where prod_name regexp '\\.' order by prod_name;
+--------------+
| prod_name |
+--------------+
| .5 ton anvil |
+--------------+
\\f换页
\\n换行
\\r回车
\\t制表
\\v纵向制表
select prod_name from products where prod_name regexp '\\([0-9] sticks?\\)' order by prod_name;
+----------------+
| prod_name |
+----------------+
| TNT (1 stick) |
| TNT (5 sticks) |
+----------------+
匹配连在一起的4位数字
select prod_name from products where prod_name regexp '[[:digit:]]{4}' order by prod_name;
select prod_name from products where prod_name regexp '[0-9]{4}' order by prod_name;
+--------------+
| prod_name |
+--------------+
| JetPack 1000 |
| JetPack 2000 |
+--------------+
定位符
^文本开始
$文本结尾
[[:<:>
[[:>:]]词的结尾
找出以一个数开始的所有产品(包括小数点)
select prod_name from products where prod_name regexp '^[0-9\\.]' order by prod_name;
+--------------+
| prod_name |
+--------------+
| .5 ton anvil |
| 1 ton anvil |
| 2 ton anvil |
+--------------+
简单的正则表达式测试
select 'hello'regexp '[0-9]';
+-----------------------+
| 'hello'regexp '[0-9]' |
+-----------------------+
| 0 |
+-----------------------+
分享到:
2014-04-16 15:07
浏览 486
分类:数据库
评论