日期:2014-05-16  浏览次数:20906 次

MySQL学习笔记(一)
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 的优先级高级 OR		IN 操作符
	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