第3章 使用MySQL
3.1 连接
3.2 选择数据库
use 数据库名
选择一个数据库
3.3 了解数据库和表
SHOW DATABASES;返回可用数据库的一个列表。
SHOW TABLES;返回当前选择数据库内可用表的列表。
SHOW COLUMNS FROM customers;给出一个表名,他对每个字段返回一行,行中包含字段名、数据类型、是否允许NULL、键信息以及其他信息。
SHOW STATUS;显示广泛的服务器状态信息。
SHOW CREATE DATABASE和SHOW CREATE TABLE;分别用来显示创建特定数据库或表的MySQL语句。
第4章 检索数据
4.1 SELECT语句
使用SELECT语句,必须至少给出两条信息——想选择什么,以及从什么地方选择。
4.2 检索单个列
SELECT prob_name
FROM product;
注:没有明确排序查询结果,返回数据的顺序没有特殊意义;多条SQL语句必须以分号分割;SQL语句不区分大小写,许多SQL开发人员喜欢对所有SQL官架子使用大写,而对所有列和表使用小写。
4.3 检索多个列
SELECT prob_id, prob_name, prob_price
FROM products;
注:SQL语句一般返回原始的、无格式的数据。
4.4 检索所有列
使用通配符*
SELECT *
FROM products;
**注:**使用通配符的一大优点是能检索出名字未知的列。
4.5 检索不同的行
DISTINCT关键字:此关键字指示MySQL只返回不同的值。
SELECT DISTINCT vend_id
FROM products;
**注:**不能部分使用DISTINCT。
4.6 限制结果
LIMIT子句:返回第一行或前几行
SELECT prob_name
FROM products;
LIMIT 5; -- 返回不多于5行
LIMIT 5,5; -- 返回从行5开始的5行,第一个数字为开始位置,第二个数字为要检索的行数。
注:检索出来的第一行为行0而不是行1;当行数不够时,返回它能够返回的行数。
4.7 使用完全限定的表名
SELECT products.prob_name
FROM crashcourse.products;
第5章 排序索引数据
5.1 排序数据
ORDER BY 一个列或多个列的名字,据此对输出进行排序。
SELECT prob_name
FROM product
ORDER BY prob_name; -- prob_name列以字母顺序排序
注:可以使用非检索列进行排序
5.2 按多个列排序
SELECT prob_name
FROM product
ORDER BY prob_price, prob_name; -- prob_name列以字母顺序排序
注:仅在多个行具有相同的prob_price时才对产品按照prob_name进行排序
5.3 制定排序方向
默认进行升序排序,为了进行降序排序,必须制定DESC关键字。
SELECT prob_name
FROM product
ORDER BY prob_name DESC, prob_name; -- 按照产品价格降序对产品排列,再对产品名进行排序。
采用ORDER BY和LIMIT的组合,能够找出一个列中最高或最低的值。
SELECT prob_price
FROM products
ORDER BY prob_price DESC
LIMIT 1; -- 找出最昂贵的产品
注:应保证ORDER BY子句位于FROM子句之后,LIMIT子句必须位于ORDER BY之后。
第6章 过滤数据
6.1 使用WHERE子句
搜索条件也被成为过滤条件
SELECT prob_name, prob_price
FROM product
WHERE prob_price = 2.50;
6.2 WHERE子句操作符
包含的操作符有= <> != < <= > >= BETWEEN
检查单个值:= < <=
不匹配检查:<> !=
范围值检查:BETWEEN
空值检查:IS NULL
第7章 数据过滤
7.1 组合WHERE子句
- AND操作符:附加条件
- OR操作符:匹配任一条件。AND操作符的优先级高于OR操作符,()的优先级高于AND,应使用()明确分组操作符,以消除歧义。
- IN操作符:IN (p1, p2),与OR操作符功能相似;IN操作符的执行速度更快;IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。
- NOT操作符:NOT WHERE子句用来否定后跟条件的关键词。
SELECT prob_name, prob_price
FROM products
WHERE vend_id NOT IN (1002, 1003)
ORDER BY prob_name;
第8章 用通配符进行过滤
8.1 LIKE操作符
通配符:用来匹配值得一部分的特殊字符。
搜索模式:由字符、通配符或两者组成构成的搜索条件。
- 百分号(%)通配符:%表示任何字符出现任意次数,包括0个字符。
SELECT prob_name
FROM product
WHERE prob_name LIKE 's%e';
- 下划线(_)通配符:下划线只匹配单个字符而不是多个字符。
SELECT prob_id, prob_name
FROM products
WHERE prob_name LIKE '_ton anvi1';
注:通配符的处理一般所花时间较长。不要过度使用匹配符;在确定需要时使用通配符;仔细主义通配符的位置。
第9章 用正则表达式进行搜索
9.1 正则表达式介绍
9.2 使用MySQL正则表达式
- REGEXP基本字符匹配:与LIKE相似,但是LIKE进行完全匹配。如果要像LIKE一样匹配整个列值,可以使用^和$定位符。
- (.):表示匹配任意一个字符。
- BINARY关键字:如果要区分大小写,可以使用BINARY,如WHERE prob_name REGEXP BINARY ‘JetPack .000’。
- OR:搜索两个字符串之一。如WHERE prob_name REGEXP ‘1000|2000’。
- 匹配几个字符之一:使用正则表达式[123] 表示匹配1或2或3。
注:[^123]表示匹配除这些字符外的任何东西。 - 匹配范围:[1-3]、[a-z]
- 匹配特殊字符:使用\为前导来匹配特殊字符,\.才能匹配(.)
- 匹配字符类:预定义的字符集成为字符类(character class)
- 匹配多个实例
- 定位符
注:^有两种用法,一种是在集合中否定该集合,第二种用来指串的开始处。