# 显示所有数据库 SHOW DATABASES; # 显示一个数据库中的所有表 SHOW TABLES; # 显示表中数据的列 SHOW COLUMNS FROM customers; DESCRIBE customers; DESC cutomers;
其他一些语句
1 2 3 4 5 6 7 8 9 10 11
# 用于显示服务器状态信息 SHOW STATUS; # 显示创建特定数据库表MySQL语句 SHOW CREATE DATABASE crashcourse; # 显示创建特定表MySQL语句 SHOW CREATE TABLE customers; # 用来显示授予用户的安全权限 SHOW GRANTS; # 显示服务器错误或警告信息 SHOW ERRORS; SHOW WARNINGS;
检索数据
检索单个列
1 2
# 从表products中检索一个名为prod_name的列 SELECT prod_name FROM products;
检索多个列
1 2
# 从表products中检索名为prod_id, prod_name, prod_price的列 SELECT prod_id, prod_name, prod_price FROM products;
检索所有列
1 2
# 使用通配符 * 返回表中所有列 SELECT * FROM products;
最好不要使用通配符,检索不需要的列会江都检索和应用程序的性能。
检索不同的行
1 2
# 使用DISTINCT关键字,会返回不同的行 SELECT DISTINCT vend_id FROM products;
# 返回前5行数据 SELECT prod_name FROM products LIMIT 5; # 从第5行开始返回接下来5行的数据 SELECT prod_name FROM products LIMIT 5, 5; SELECT prod_name FROM products LIMIT 5 OFFSET 5;
检索出来的行是从0开始,所以LIMIT 5 表示从第0行开始接下来的五行
使用完全限定的表名
1
SELECT products.prod_name FROM products;
排序检索数据
排序数据
1 2 3
# 使用ORDER BY子句取一个或多个列名字(使用未检索的列也是合法的),对输出进行排序 # 以prod_name列的字母顺序排序数据 SELECT prod_name FROM products ORDER BY prod_name;
按多个列排序
1 2
# 先以左边的列进行排序,若是相同再比较右边的列 SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price, prod_name;
ORDER BY 子句应该保证在FROM子句之后,LIMIT子句要在ORDER BY 子句之后。
指定排序顺序
1 2 3 4 5 6
# 以价格降序进行排序 SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC; # 以价格升序序进行排序 SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price ASC; # 先以价格降序,再以产品名排序 SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC, prod_name;
如果想在多个列上进行降序排序,必须每一个列都要指定DESC关键字
ASC关键字其实没多大用,因为默认就是升序排序的,不指定DESC就一般是ASC排序
过滤数据
使用WHERE子句
1 2
# 使用where子句指定搜索条件 SELECT prod_name, prod_price FROM products WHERE prod_price = 2.5;
WHERE子句的位置应该在ORDER BY子句之前。
WHERE子句操作符
操作符
说明
=
等于
<>
不等于
!=
不等于
<
小于
<=
小于等于
>
大于
>=
大于等于
BETWEEN
在指定两个值之间
检查单个值
1 2 3
# 执行匹配时默认不区分大小写 SELECT prod_name, prod_price FROM products WHERE prod_name = 'fuses'; SELECT prod_name, prod_price FROM products WHERE prod_price < 10;
不匹配检查
1 2 3
# 不是由供应商1003制造的产品 SELECT vend_id, prod_name FROM products WHERE vend_id <> 1003; SELECT vend_id, prod_name FROM products WHERE vend_id != 1003;
# 先处理AND在处理OR,所以表示的是vend_id等于1003并且价格大于等于10的产品或者是vend_id等于1002价格没限制的产品 SELECT prod_name, prod_price FROM products WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price >= 10; # 正确顺序的话需要添加括号进行区分 SELECT prod_name, prod_price FROM products WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10;
任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符。
IN操作符
IN操作符用来指定条件返回,范围中地每个条件都可以进行匹配。
1 2 3 4 5 6
# IN取合法值 SELECT prod_name, prod_price FROM products WHERE vend_id IN (1002,1003) ORDER BY prod_name;p # 等价于 SELECT prod_name, prod_price FROM products WHERE vend_id = 1002 OR vend_id = 1003 ORDER BY prod_name;
NOT操作符
NOT WHERE子句中用来否定后跟条件地关键字。
1 2 3 4
SELECT prod_name, prod_price FROM products WHERE vend_id NOT IN (1002,1003) ORDER BY prod_name;
用通配符进行过滤
LIKE操作符
百分号通配符
1 2 3
# %通配符表示任何字符出现任意次数 SELECT prod_id,prod_name FROM products WHERE prod_name LIKE 'jet%';
WHERE prod_name LIKE ‘%’也是不能匹配NULL值得,需要注意。
下划线通配符
1 2 3 4
# _下划线只匹配一个字符,不能多也不能少 SELECT prod_id, prod_name FROM products WHERE prod_name LIKE '_ton anvil';