看《MySQL必知必会》
第三章
3.3 了解数据库和表
-
show databases;返回可用数据库的一个列表。
-
show tables;返回当前选择的数据库内可用表的列表。
-
show columns form (表名);返回要查询的表的每一列的属性。
-
show status;用于显示广泛的服务器状态信息。
-
show create database和show create table,分别用来显示创建特定数据库或表的Mysql语句。
-
show grants;用来显示授予用户的安全权限。
-
show errors和show warnings;用来显示服务器错误或警告信息。
第四章 检索数据
4.2 检索单个列
-
select pod_name from products; 从products表中检索一个名为prod_name的列。
4.3 检索多个列 -
select prod_id,prod_name,prod_price from products;
4.4 检索所有列
- select * from products;
4.5 检索不同的列
- select distinct vend_id from products;
4.6 限制结果
- select prod_name from products limit 5,5;第一个数为开始位置,第二个数为要检索的行数。
4.7 使用完全限定的表明
- select products.prod_name from study.products;
第五章 排序检索数据
5.1 排序数据
- select prod_name from products order by prod_name;以字母顺序排序数据。
5.2 按多个列排序
- select prod_id, prod_price, prod_name from products order by prod_price, prod_name;首先按价格,然后按名字排序。(多个列排序时,仅在多个行具有相同的prod_price值时,才对产品按prod_name进行排序。)
5.3 指定排序方向
- select prod_id, prod_price, prod_name from products order by prod_price desc, prod_name;(默认的排序为顺序)desc关键字只应用到直接位于前面的列名。
- select prod_price from products order by prod_price desc limit 1;找出最昂贵物品的值。
第六章 过滤数据
6.1使用where子句
- SELECT prod_name, prod_price FROM products WHERE prod_price = 2.50;返回prod_price值为2.50的行。
where子句操作符
操作符 | 说明 |
---|---|
= | 等于 |
<> | 不等于 |
!= | 不等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
between | 在指定的两个值之间 |
6.2.1检查单个值
-
SELECT prod_name, prod_price FROM products WHERE prod_name = ‘fuses’;返回prod_name的值为fuses的一行。
-
SELECT prod_name, prod_price FROM products WHERE prod_price <= 10;检索小于等于10的所有产品。
6.2.2 不匹配检查
- SELECT vend_id, prod_name FROM products WHERE vend_id <> 1003;不由供应商1003制造的所有产品。
6.2.3 范围检查
- SELECT prod_name, prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;检索在5美元和10美元之间的所有产品。
6.2.4 空值检查
-
SELECT prod_name FROM products WHERE prod_price IS NULL;检查具有NULL值的列。
-
SELECT cust_id FROM customers WHERE cust_email IS NULL;
第七章 数据过滤
7.1 组合WHERE子句
操作符用来联结或改变WHERE子句中的子句的关键字。也称为逻辑操作符。
7.1.1 AND操作符
AND 用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行。
- SELECT prod_id, prod_price, prod_name FROM products WHERE vend_id = 1003 AND prod_price <= 10;检索供应商1003制造且小于等于10美金的所有的名称和价格。
7.1.2 OR操作符
OR 检索匹配任一条件即可。
- SELECT prod_name, prod_price FROM products WHERE vend_id = 1002 OR vend_id = 1003;检索由任一个指定供应商制造的所有产品的产品名和价格。
7.1.3计算次序
-
SELECT prod_name, prod_price FROM products WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price >= 10;优先处理AND操作符。
-
SELECT prod_name, prod_price FROM products WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10;
7.2 IN操作符
- SELECT prod_name, prod_price FROM products WHERE vend_id IN (1002,1003) ORDER BY prod_name;检索供应商1002和1003制造的所有产品。(功能与OR相当)
7.3 NOT操作符
NOT WHERE子句中用来否定后跟条件的关键字。
- SELECT prod_name, prod_price FROM products WHERE vend_id NOT IN(1002,1003) ORDER BY prod_name;检索除了1002和1003之外的所有供应商制造的产品。
第八章 用通配符进行过滤
8.1 LIKE操作符
通配符 用来匹配值的一部分的特殊字符。
搜索模式 由字面值、通配符或两者组合构成的搜索条件。
LIKE操作符,指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等进行比较。
8.1.1 百分号(%)通配符
**%**表示任意和字符出现任意次数。
-
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE ‘jet%’;检索任意以jet起头的词。
-
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE ‘%anvil%’;
8.1.2 下划线(_)通配符
**(_)**用途与%一样,但下划线只匹配单个字符而不是多个字符。
- SELECT prod_id, prod_name FROM products WHERE prod_name LIKE ‘_ ton anvil’;
第九章 用正则表达式进行搜索
9.1 正则表达式介绍
正则表达式是用来匹配文本的特殊的串(字符集合)。
9.2 使用MySQL正则表达式
9.2.1 基本字符匹配
-
SELECT prod_name FROM products WHERE prod_name REGEXP ‘1000’ ORDER BY prod_name;检索prod_name包含文本1000的所有行。
-
SELECT prod_name FROM products WHERE prod_name REGEXP ‘.000’ ORDER BY prod_name;’.'表示匹配任意一个字符。
9.2.2 进行OR匹配
为搜索两个串之一,使用|。
- SELECT prod_name FROM products WHERE prod_name REGEXP ‘1000|2000’ ORDER BY prod_name;
9.2.3 匹配几个字符之一
- SELECT prod_name FROM products WHERE prod_name REGEXP ‘[123] Ton’ ORDER BY prod_name;[123]定义一组字符,它的意思时匹配1或2或3。
9.2.4 匹配范围
- SELECT prod_name FROM products WHERE prod_name REGEXP ‘[1-5] Ton’ ORDER BY prod_name;
9.2.5 匹配特殊字符
为了匹配特殊字符,必须用\为前导。
- SELECT vend_name FROM vendors WHERE vend_name REGEXP ‘\\.’ ORDER BY vend_name;
9.2.6 匹配字符类
字符类
9.2.7 匹配多个实例
重复元字符
-
SELECT prod_name FROM products WHERE prod_name REGEXP ‘\\([0-9] sticks?\\)’ ORDER BY prod_name;\\(匹配),[0-9]匹配任意数字,sticks?匹配stick和sticks(?匹配它前面的任何字符的0次或一次出现),\\)匹配)。
-
SELECT prod_name FROM products WHERE prod_name REGEXP ‘[[:digit:]]{4}’ ORDER BY prod_name;匹配连在一起的任意4位数字。
9.2.8 定位符
定位元字符
- SELECT prod_name FROM products WHERE prod_name REGEXP ‘^[0-9\.]’ ORDER BY prod_name;查找以一个数(包含以小数点开始的输)开始的所有产品。
第十章 创建计算字段
10.2 拼接字段
拼接 将值联结到一起构成单个值。
可用Concat()函数来拼接两个列。
-
SELECT Concat(vend_name,’(’,vend_country,’)’) FROM vendors ORDER BY vend_name;
-
SELECT Concat(RTrim(vend_name),’(’,RTrim(vend_country),’)’) FROM vendors ORDER BY vend_name;RTrim()函数去掉值右边的所有空格。
使用别名
- SELECT Concat(RTrim(vend_name),’(’,RTrim(vend_country),’)’) AS vend_title FROM vendors ORDER BY vend_name;
10.3 执行算数计算
- SELECT prod_id, quantity, item_price, quantity*item_price AS expanded_price FROM orderitems WHERE order_num = 20005;
第十一章 使用数据处理函数
11.2.1 文本出路函数
- SELECT vend_name, Upper(vend_name) AS vend_name_upcse FROM vendors ORDER BY vend_name;Upper()将文本转换为大写。
常用的文本处理函数
SOUNDEX是一个将任何文本串转换为描述气语音表示的字母数字模式的算法。
11.2.2 日期和时间处理函数
常用日期和时间处理函数
- SELECT cust_id, order_num FROM orders WHERE Date(order_date) BETWEEN ‘2005-09-01’ AND ‘2005-09-30’;
11.2.3 数据处理函数
常用数据处理函数
第十二章 汇总数据
12.1 聚集函数
运行在行组上,计算和返回单个值得函数。
SQL聚集函数
12.1.1 AVG()函数
- SELECT AVG(prod_price) AS avg_price FROM products WHERE vend_id = 1003;
12.1.2 COUNT()函数
- SELECT COUNT(*) AS num_cust FROM customers;
12.2 聚集不同值
- SELECT AVG(DISTINCT prod_price) AS avg_price FROM products WHERE vend_id = 1003;
12.3 组合聚集函数
- SELECT COUNT(*) AS num_items, MIN(prod_price) AS price_min, MAX(prod_price) AS price_max, AVG(prod_price) AS price_avg FROM products;
第十三章 分组数据
13.2 创建分组
分组实在SELECT语句得GROUP BY子句中建立得。
- SELECT vend_id, COUNT(*) AS num_prods FROM products GROUP BY vend_id;
13.3 过滤分组
- SELECT vend_id, COUNT() AS num_prods FROM products WHERE prod_price >= 10 GROUP BY vend_id HAVING COUNT() >= 2;列出具有两个(含)以上、价格为10(含)以上得产品得供应商。
13.4 分组和排序
- SELECT order_num, SUM(quantityitem_price) AS ordertotal FROM orderitems GROUP BY order_num HAVING SUM(quantityitem_price) >= 50 ORDER BY ordertotal;
13.5 SELECT子句顺序