假设products是一张数据表
1)查询列。
SELECT prod_name FROM products;
MySQL语句以;好结束。可以有多列,列名之间使用“,”分割开来;FROM表示使用的表。
2)检索所有的列。能够检索出表中未知的列
SELECT * FROM products;
3)消除检索中相同的行。
SELECT DISTINCT vend_id FROM products;
如果DISTINCT后面跟了不止一个列,DISTINCT作用于每一个列,DISTINCT的作用是消除相同的行。
4)用于限制检索出来的行数。意思是从第x行开始的y行。
SELECT prod_name FROM products LIMIT x, y;
5)使用完全限定
SELECT products.prod_name FROM crashcourse.products;
product表示一张表,crashcourse表示一个数据库,数据库中有products表。
6)根据单列排序
select prod_name from products order by prod_name;
默认的排序方向是英语字母升序排列,排序使用的列可以是非检索的列。
7)根据多列排序
SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price, prod_name;
排序完全按照语句中列的顺序进行,即后面列的排序是在前面排序结果的基础上面进行。ORDER BY子句位于FROM之后,LIMIT之前,位置不当会产生错误信息。
8)按列降序排序
SELECT prod_id, prod_price,prod_name FROM products ORDER BY prod_price ASC/DESC,prod_name;
ASC指定为按照字母升序排列,默认的;DESC指定为降序排列。当有多个列排序时,一个DESC/ASC只作用于一个列。
9)过滤数据1
SELECT products, prod_price FROM products WHERE prod_price = 2.50;
WHERE子句位于FROM之后,ORDER BY子句之前。
10)过滤数据2
SELECT prod_name, prod_price FROM products WHERE prod_name = 'fuses';
11)范围值检查
SELECT prod_name,prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;
第一个为开始值,第二个为结束值,该范围中包括这两个值。
12)AND操作符
SELECT prod_id,prod_price,prod_name FROM products WHERE vend_id = 1003 AND prod_price <= 10;
and用来指示检索满足所有给定条件的行。
13)OR操作符
SELECT prod_name, prod_price FROM products WHERE vend_id = 1002 OR vend_id = 1003;
or表示匹配任意给定条件。
14)AND操作符和OR操作符的计算次序
SELECT prod_name,prod_price FROM products WHERE vend_id = 1024 OR vend_id = 1003 AND prod_price >= 10;
AND优先级高于OR。建议:无论使用默认的优先级次序还是使用括号改变计算优先次序,都建议使用括号。
15)IN操作符
select prod_name, prod_price from products where vend_id in (1002, 1003) order by prod_name;
in表示匹配其中之一。
16)NOT操作符
select prod_name, prod_price from products where vend_id not in (1002, 1003) order by prod_name;
WHERE子句中用来否定后跟条件的关键字。MySQL支持使用NOT对IN,BETWEEN和EXISTS子句进行取反,这与多数其他DBMS允许使用NOT对各种条件取反有很大的差别。
17)使用通配符匹配
SELECT prod_id,prod_name FROM products WHERE prod_name LIKE 'jet%';
由通配符或者通配符和字面值共同组成的搜索条件。通配符匹配从字符串首端开始进行模式匹配,不是从串的中间某个位置开始匹配。
18)%通配符
SELECT prod_id,prod_name FROM products WHERE prod_name LIKE '%anvil%';
尽量不使用通配符,因为通配符执行起来很慢;尽量不在搜索模式开始处使用通配符,开始处的通配符搜索起来最慢。
19)_(下划线)通配符:匹配单个字符。
SELECT prod_id,prod_name FROM products WHERE prod_name LIKE '_ ton anvil';
注意:1)MySQL运算符
操作符 | 说明 |
---|---|
= | 等于 |
<> 或 != | 不等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
BETWEEN | 在指定的两个值之间 |
2)关系数据库设计理论认为,如果没有明确规定检索结果的排序方式,检索结果没有顺序之分;MySQL中也没有顺序之分。
3)在SQL中,有的区分大小写,有的不区分大小写,所以应该按照规范书写SQL语句。
4)mySQL第一行为行0。