一、了解数据库和表
- SHOW DATABASES; 返回可用数据库的一个列表
- SHOW TABLES; 返回当前选择的数据库内可用的列表
- SHOW COLUMNS FROM 表名; 对每个字段返回一行,行中包括字段名、数据类型、是否允许NULL、键信息、默认值以及其他信息
二、检索数据
- 检索单个列:SELECT prod_name FROM products;
- 检索多个列:SELECT prod_id, prod_name, prod_price FROM products;
- 检索所有列:SELECT * FROM products;
- 检索不同行:关键字DISTINCT。SELECT DISTINCT vend_id FROM products; 只返回vend_id不同的行。注意:不能部分使用DISTINCT 此关键字应用于所有列而不仅是前置它的列。如果给出SELECT DISTINCT vend_id, prod_price FROM products;除非指定的两个列都不相同,否则所有行都将被检索出来。
- 限制结果:关键字:LIMIT。SELECT prod_name FROM products LIMIT 5; 此语句使用SELECT检索单个列。LIMIT 5指示MySQL返回不多于五行;若为LIMIT 5,5 指示MySQL返回从行5开始的5行。注意:检索出来的第一行是行0而不是行1.
三、排序检索数据
关键字:ORDER BY子句;
- 排序数据:SELECT prod_name FROM products PRDER BY prod_name;
- 按多个列排序:SELECT prod_id, prod_price, prod_name FROM products OEDER BY prod_price, prod_name; 在按多个列排序时,排序完全按所规定的顺序进行
- 指定排序方向:如果升序,则什么也不需要声明,默认升序;如果降序,需用 DESC 关键字;SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC, prod_name; DESC 关键字只应用到直接位于其前面的列名。如果想在多个列上进行排序,必须对每个列指定DESC关键字。
四、过滤数据
使用WHERE子句:WHERE子句在表名(FROM子句)之后给出。在同时使用ORDER BY和WHERE子句时,应该让ORDER BY位于WHERE之后,否则将会产生错位。
WHERE子句操作符:BETWEEN 值1 AND 值2;BETWEEN匹配范围中所有的值,包括指定的开始值和结束值
五、数据过滤
组合WEHRE子句:以AND子句的方式或OR子句的方式使用
SELECT prod_id, prod_price, prod_name FROM products WHERE vend_id = 1003
AND prod_price <= 10; AND:用来指示检索满足所有给定条件的行。
SELECT prod_name, prod_price FROM products WHERE vend_id = 1002 OR vend_id
= 1003; OR:用来检索匹配任一条件的行。
SQL在处理OR操作前,优先处理AND操作符;解决方法就是圆括号明确地分组
相应的操作符。
IN操作符:IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配
SELECT prod_name, prod_price FROM products WHERE vend_id IN(1001,1003) ORDER BY prod_name; 检索供应商1002和1003制造的所有产品。IN操作符后跟由逗号分隔的合法值清单,整个清单必须括在圆括号中。
IN操作符的优点:
- 在使用长的合法选项清单时,IN操作符的语法更清楚且更直观
- 在使用IN时,计算的次序更容易管理、
- IN操作符一般比OR操作符清单执行更快
- IN的最大优点是可以包含其他SELECT语句,使得能够更动态的建立WHERE子句
六、使用通配符进行过滤
1、 LINK操作符
通配符:用来匹配值的一部分的特殊字符。
搜索模式:由字面值、通配符或两者组合构成的搜索条件
(1)、百分号(%)通配符
在搜索串中,%表示任何字段出现任意次数。
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE ‘jet%’;
搜索找出所有以词jet起头的产品
%可以出现在字符串的前端后端和中间:’s%e’、’%anv%’
除了一个或多个字符外,%还能匹配0个字符。
(2)、下划线 (_) 通配符
下划线的用途与%一样,但下划线只匹配单个字符而不是多个字符
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE ‘_ ton ’;
与%能匹配0个字符不一样,_总是匹配一个字符,不能多也不能少
2、 使用通配符的技巧
- 不要过度使用通配符;
- 除非绝对有必要,否则不要把它们用在搜索模式的开始处;