了解数据库和表
use gsf; #切换数据库
SHOW DATABASES; #返回可用数据库的一个列表 列表里是你所有的数据库
show TABLEs ; #获得数据库内的表的列表
SHOW COLUMNS FROM customers; #显示一个表里的所有列
SHOW STATUS; #显示广泛服务器状态
SHOW CREATE DATABASE gsf; #显示创建特定数据库的MySQL语句
SHOW CREATE TABLE customers; #显示创建特定表的MySQL语句
SHOW GRANTS; #用来显示授予用户
SHOW ERRORS和SHOW WARNINGS, #用来显示服务器错误或警告消息
使用 SELECT语句从表中检索一个或多个数据列
use gsf;
SELECT prod_name FROM products; #在products查询prod_name这个列
SHOW COLUMNS FROM products; #显示products表中的所有列
SELECT prod_name,prod_id,vend_id FROM products; #联合显示这些列
SELECT distinct vend_id FROM products; #检索不同的行
SELECT prod_name FROM products LIMIT 5; #检索这个列的前五行
SELECT prod_name FROM products LIMIT 5,5; #从第五行开始检索这个列的后五行
SELECT prod_name FROM products LIMIT 2 OFFSET 5; #从第五行开始检索这个列的后两行
SELECT products.prod_id FROM products; #限定列名搜索
SELECT products.prod_name FROM gsf.products; #限定表名搜索
使用SELECT语句的ORDER BY子句 , 根据需要排序检索出的数据
SELECT prod_name FROM products; #无顺序输出单个列
#使用子句对表进行顺序排序
SELECT prod_name FROM products ORDER BY prod_name;
#按多个列排列 按照 ORDER BY后面的第一个表的顺序排序
SELECT prod_id, prod_price,prod_name FROM products ORDER BY prod_name,prod_price;
#加入desc就是反向排列对
SELECT prod_id,prod_price,prod_name FROM products ORDER BY prod_price DESC;
#先根据prod_price数据进行方向排序再根据prod_name;对数据进行正向排序
SELECT prod_id,prod_price,prod_name FROM products ORDER BY prod_price DESC,prod_name;
#找出价值最高的LIMIT 1只输出第一行
SELECT prod_price FROM products ORDER BY prod_price DESC LIMIT 1;
使用SELECT语句的WHERE子句指定搜索条件
WHERE prod_price = 2.5 #对输出条件进行了过滤,只输出prod_price值为2.5的列表
SELECT prod_name, prod_price FROM products WHERE prod_price = 2.50;
# = 等于
# <> 不低于
# != 不低于
# < 小于
# <= 小于等于
# >= 大于大于
# > 大于
# BETWEEN 指定在2值之间 语法BETWEEN xx AND xx
#prod_name= ‘fuses’;的所有prod_name ,prod_price,vend_id
SELECT * FROM products WHERE prod_name= ‘fuses’;
SELECT * FROM products WHERE prod_price is NULL
组合WHERE子句以建立功能更强的更高级的搜索条件我们还将学习如何使用NOT和IN操作符。
#使用where 过滤vend_id = 1003 和 prod_price <= 10的列
SELECT prod_id, prod_price,prod_name FROM products WHERE vend_id = 1003 AND prod_price <= 10;
##使用where 过滤vend_id = 1003 或者 prod_price <= 10的列 0R操作符告诉DBMS匹配任一条件而不是同时匹配两个条件。即有一个存在就输出这个列
SELECT prod_id, prod_price,prod_name FROM products WHERE vend_id = 1003 or prod_price <= 10;
#列出价格为10美元( 含) 以上且由1002或1003制造的所有产品。
SELECT prod_name, prod_price FROM products WHERE vend_id = 1002 OR vend_id =1003 AND prod_price >= 10;
#由于and的奇数次数优先级高于or因此or被忽略了所以加个括号提升or的优先级
SELECT prod_name, prod_price FROM products WHERE (vend_id = 1002 OR vend_id =1003) AND prod_price >= 10;
#在products查找 vend_id 在 (1002 , 1003)之间的prod_name, prod_price列 并且进行排序
SELECT prod_name, prod_price FROM products WHERE vend_id IN (1002 , 1003)ORDER BY prod_name ;
#在products查找 vend_id 不在 (1002 , 1003)之间的prod_name, prod_price列 并且进行排序
SELECT prod_name, prod_price FROM products WHERE vend_id NOT IN (1002,1003) ORDER BY prod_name;
使用通配符以及怎样使用 LIKE操作符进行通配搜索, 以便对数据进行复杂过滤
#在products表中查找prod_name 列中以jet开头的列,并打印出他的prod_id , prod_name列
SELECT prod_id , prod_name FROM products WHERE prod_name LIKE'jet%';
#在products表中查找prod_name 列中值含有anvil的列,并打印出他的prod_id , prod_name列
SELECT prod_id , prod_name FROM products WHERE prod_name LIKE '%anvil%';
#在products表中查找prod_name 列中值第一位含有s最后一位含有e的列,并打印出他的prod_id , prod_name列
SELECT prod_id , prod_name FROM products WHERE prod_name LIKE 's%e';
#在products表中查找prod_name 列中值除第一位后其他为ton anvil的表,并打印出他的prod_id , prod_name列
SELECT prod_id , prod_name FROM products WHERE prod_name LIKE '_ ton anvil';
MySQL WHERE子句内使用正则表达式来更好地控制数据过滤。
#在products表中查找prod_name 包中含文本1000的所有行,并打印出他的prod_name列并且进行排序
SELECT prod_name
FROM products
WHERE prod_name REGEXP '1000'
ORDER BY prod_name;
#在products表中查找prod_name 包中含文本000的所有行,并打印出他的prod_name列并且进行排序
SELECT prod_name
FROM products
WHERE prod_name REGEXP '.00'
ORDER BY prod_name;
#在products表中查找prod_name 包中含文本1000或者2000的所有行,并打印出他的prod_name列并且进行排序
SELECT prod_name
FROM products
WHERE prod_name REGEXP '1000|2000'
ORDER BY prod_name;
#在products表中查找prod_name 包中含有字符串1,2,3和ton的所有行,并打印出他的prod_name列并且进行
SELECT prod_name
FROM products
WHERE prod_name REGEXP '[123] ton'
ORDER BY prod_name;