SQL一天一练(一)

起因


最初是因为前天去面试的时候,虽然我想要面试的岗位是Android开发但是该公司要的是Java开发,硬着头皮还是去试了试,最后一张笔试试卷上考到了SQL,然而我太长时间没有用过SQL了,最近一次用应该是上学期应付JSP期末大作业的学生管理系统了,所以现在开始每天学习一点点SQL知识,与君共勉~

开始学习


最基础的select、from、where我不再赘述
今天要来学习的是limit、offset、order by
用到的数据库: 表名为 products
数据库 表名products
接下来贴出创建该表和插入数据的SQL语句 需要的同学自取

CREATE TABLE `products` (
  `prod_id` char(10) NOT NULL,
  `vend_id` char(10) NOT NULL,
  `prod_name` char(255) NOT NULL,
  `prod_price` decimal(8,2) NOT NULL,
  `prod_desc` text,
  PRIMARY KEY (`prod_id`),
  KEY `FK_Products_Vendors` (`vend_id`),
  CONSTRAINT `FK_Products_Vendors` FOREIGN KEY (`vend_id`) REFERENCES `vendors` (`vend_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `products` VALUES ('BNBG01', 'DLL01', 'Fish bean bag toy', '3.49', 'Fish bean bag toy, complete with bean bag worms with which to feed it');
INSERT INTO `products` VALUES ('BNBG02', 'DLL01', 'Bird bean bag toy', '3.49', 'Bird bean bag toy, eggs are not included');
INSERT INTO `products` VALUES ('BNBG03', 'DLL01', 'Rabbit bean bag toy', '3.49', 'Rabbit bean bag toy, comes with bean bag carrots');
INSERT INTO `products` VALUES ('BR01', 'BRS01', '8 inch teddy bear', '5.99', '8 inch teddy bear, comes with cap and jacket');
INSERT INTO `products` VALUES ('BR02', 'BRS01', '12 inch teddy bear', '8.99', '12 inch teddy bear, comes with cap and jacket');
INSERT INTO `products` VALUES ('BR03', 'BRS01', '18 inch teddy bear', '11.99', '18 inch teddy bear, comes with cap and jacket');
INSERT INTO `products` VALUES ('RGAN01', 'DLL01', 'Raggedy Ann', '4.99', '18 inch Raggedy Ann doll');
INSERT INTO `products` VALUES ('RYL01', 'FNG01', 'King doll', '9.49', '12 inch king doll with royal garments and crown');
INSERT INTO `products` VALUES ('RYL02', 'FNG01', 'Queen doll', '9.49', '12 inch queen doll with royal garments and crown');

准备工作已经完成了,接下来进入正题!

limit 与offset

limit 会指示数据库返回不超过某个数值行数的数据
offset会指示数据库从哪一条记录开始返回
例如:

SELECT prod_name FROM products LIMIT 4 


对照上面的最初的数据库的图片,大家可以看到 这条语句返回了products表最顶部的5条数据

接下来 我们来看limit 与 offset 一起使用会发生什么

SELECT prod_name FROM products LIMIT 4 OFFSET 2

返回的结果:
这里写图片描述
我们可以看到数据库返回的数据是从第3条数据开始,直到第6条数据为止
注意!offset 2 指的是从第三行开始 那么 offset 0 指的是从第一行开始啦 和数组差不多是一个意思
在Mysql中可以对LIMIT 4 OFFSET 2进行简写
可以写成 LIMIT 2,4 效果是一样的

order by

关于order by:指的是对查询到数据以数据的某个字段为标准比如(价格)进行排序
DESC 表示 降序
ASC 表示升序 同时ASC也是默认的 所以写不写都一样
对于order by 与 limit 的混用
《SQL必知必会》(第四版)中对于order by 有这样的描述

在指定一条order by 子句时,应该保证它是select语句中的最后一条子句。如果它不是最后的子句,将会出现错误消息

我们来看这样的一条SQL语句:

SELECT prod_name FROM products LIMIT 4 OFFSET 2 ORDER BY prod_name DESC

报错信息如下:

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ORDER BY prod_name DESC’ at line 1

接下来我们调换order by 和limit的位置

SELECT prod_name FROM products ORDER BY prod_name DESC LIMIT 2,4

这里写图片描述

我们看看原本的数据库啊 这回是没有报错了 那么再来看看输出 我们是先对对products 表以prod_name 为标准进行了降序排序 然后输出了第三条到第六条数据

得出结论:要先排序然后再截取数据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值