MySQL数据库基础(必知必会1-7)-检索,排序,过滤

使用MySQL

所需的表与数据可以到http://www.forta.com/books/0672327120/进行下载,也可以到我的码云下载创建表代码段数据插入代码段

-- 显示数据库
SHOW DATABASES;

-- 选中一个数据库,显示表信息
USE pra_mysql;
SHOW TABLES;

-- 查看表的列信息
SHOW COLUMNS FROM customers;
DESCRIBE customers; -- 上面语句的简写

-- 查看服务器状态
SHOW STATUS;
SHOW ERRORS;  -- 显示服务器错误信息
SHOW WARNINGS; 	-- 显示服务器警告信息

检索数据

通过关键字SELECT实现
DISTINCT关键字实现返回的结果不重复,必须直接放在列名前面
DISTINCT关键字对它后续的列都有效
LIMIT x表示保留从第0行开始x行数据
LIMIT m,n表示保留从第m行开始n行数据

-- 4.2检索单个列
SELECT prod_name FROM products;
-- 4.3检索多个列
SELECT prod_id,prod_name,prod_price FROM products;
-- 4.4检索所有列
SELECT * FROM products;
-- 4.5检索不同的行
SELECT vend_id FROM products; -- 返回结果的供应商id重复,但是我们只需要不重复的供应商id
SELECT DISTINCT vend_id FROM products; -- distinct关键字表示只返回不同的值,必须直接放在列名前面
SELECT vend_id,prod_price FROM products;
SELECT DISTINCT vend_id,prod_price FROM products; -- distinct关键字应用于它后续的所有列
-- 4.6限制结果limit
SELECT prod_name FROM products LIMIT 5; -- limit 5 表明返回不多于5行
SELECT prod_name FROM products LIMIT 5,5; -- limit 5,5 表明从行5开始的后5行,起始行为0
-- 4.7使用完全限定的表名
SELECT products.prod_name FROM products;  -- 指定了完全限定列名
SELECT products.prod_name FROM pra_mysql.products;  -- 指定了完全限定表名

排序检索数据

排序通过order by实现,默认是升序排序
DESC是降序,ASC是升序,只对其前面的列名有效,并不是对所有列的有效
Limit必须在ORDER BY后面

-- 5.1排序数据
SELECT prod_name FROM products ORDER BY prod_name; -- 按照字母顺序排序,升序
-- 5.2按多个列排序
SELECT prod_id,prod_name,prod_price FROM products ORDER BY prod_price,prod_name; -- 先按价格排序,再按照名称排序
-- 5.3指定方向排序
SELECT prod_id,prod_name,prod_price FROM products ORDER BY prod_price DESC; -- 按价格降序排序
SELECT prod_id,prod_name,prod_price FROM products ORDER BY prod_price DESC,prod_name; -- 先按价格降序排序,再按照名称升序排序,desc只对一个有作用
SELECT prod_id,prod_name,prod_price FROM products ORDER BY prod_price ,prod_name DESC; -- 先按价格升序排序,再按照名称降序排序,desc只对一个有作用
SELECT prod_id,prod_name,prod_price FROM products ORDER BY prod_price DESC,prod_name DESC; -- 先按价格降序排序,再按照名称降序排序,desc只对一个有作用
SELECT prod_price FROM products ORDER BY prod_price DESC LIMIT 1; -- 找到一个列中价格最高的,limit必须在order by之后

过滤数据

过滤数据的一种方式可以使用WHERE子句实现
WHERE关键字需要在FROM关键字后面
WHERE子句操作符:=等于,<>不等于, !=不等于, <小于, <=小于等于, >大于, >=大于等于, BETWEEN 在指定两个值之间

-- 6.1使用WHERE子句
SELECT prod_name,prod_price FROM products WHERE prod_price=2.5; -- 找到一个列中价格等于2.5的商品
-- 6.2.1检查单个值
SELECT prod_name,prod_price FROM products WHERE prod_name='fuses'; -- 不区分大小写
SELECT prod_name,prod_price FROM products WHERE prod_price<10; -- 列出小于10美元的商品
SELECT prod_name,prod_price FROM products WHERE prod_price<=10; -- 列出小于等于10美元的商品
-- 6.2.2不匹配检查
SELECT prod_name,vend_id FROM products WHERE vend_id<>1003; -- 列出不是由供应商1003制造的所有产品
SELECT prod_name,vend_id 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; -- 判断空值
SELECT cust_id FROM customers WHERE cust_email IS NULL;

数据过滤

可以通过组合WHERE语句和AND和OR或NOT或IN关键字实现
组合AND和OR ,AND的优先级更高,注意添加圆括号
IN取合法值由逗号分割的清单,全部放在圆括号内
NOT操作符 否定它之后所跟的所有条件

IN操作符与OR具有相同的功能

  • 在使用长的合法选项清单时,IN操作符更清楚和直观
  • 在使用IN时,计算的次序更容易管理,因为使用的操作符更少
  • IN操作符一般比OR操作符执行更快
  • IN操作符最大的优点是可以包含其他SELECT语句,能够更加动态地建立WHERE语句
-- 7.1.1AND操作符
SELECT  prod_name,prod_price FROM products WHERE vend_id=1003 AND prod_price<=10;     -- 检索供应商1003制造且价格小于等于10美元的所有产品的名称和价格
-- 7.1.2OR操作符
SELECT  prod_name,prod_price FROM products WHERE vend_id=1002 OR vend_id=1003;    -- 由1002和1003供应商制造的所有商品的名称和价格
-- 7.1.3计算次序 
SELECT prod_name,prod_price FROM products WHERE vend_id=1002 OR vend_id=1003 AND prod_price>=10; -- 选取由供应商1003制造的价格大于等于10的商品和由供应商1002制造的商品,显示名称和价格
SELECT prod_name,prod_price FROM products WHERE (vend_id=1002 OR vend_id=1003) AND prod_price>=10;-- 选取由供应商1003制造或和由供应商1002制造的价格大于等于10的商品,显示名称和价格
-- 7.2IN操作符  
SELECT prod_name,prod_price FROM products WHERE vend_id IN(1002,1003) ORDER BY prod_name;  -- 检索供应商1002和1003制造的商品名称和价格,按照商品名称升序排列
SELECT prod_name,prod_price FROM products WHERE vend_id IN(1001,1002,1003) ORDER BY prod_name;  -- 检索供应商1001,1002和1003制造的商品名称和价格,按照商品名称升序排列
-- 7.3NOT操作符
SELECT prod_name,prod_price FROM products WHERE vend_id NOT IN(1002,1003) ORDER BY prod_name;  -- 找出不是有供应商1002和1003的商品名称和价格,按照商品名称升序排列

本文相关代码可到我的码云下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值