MySQL⼊门(6)——基于datagrip的SQL数据查询⽬录
⼀、准备⼯作
1、数据准备
将⽂件⾥的数据先复制到datagrip执⾏,建好表
2、执⾏界⾯准备
如果你的执⾏界⾯不⼩⼼关闭成了这样
可以这样操作:
就可以打开你刚才执⾏的界⾯啦
3、数据修改准备
如果你没有记住修改表中数据的命令,那你可以直接在表中修改,修改结束以后点击绿⾊的上传图标即可,这就是图形化⼯具的好处
⼆、查询
1、语法
select[distinct]#distinct可写可不写
*|列名,列名
from表
where条件;
2、简单查询
以上⾯准备的数据为例⼦
# 1、查询所有的商品
SELECT*FROM products;
# * 是⼀个通配符,它和查询所有的列,效果是⼀样的
# 但底层数据执⾏的时候,效率是不⼀样的,所以项⽬开发时,⼀般都写出所有的列,⽽不⽤*
# 2、查询单个列:从products表中查询所有的产品名称(prod_name)
SELECT prod_name FROM products;
# 3、全限定列名和全限定表名
SELECT products.prod_name FROM mydb1.products;
# 4、查询多个列:从products表中查询产品id(prod_id)、产品名称(prod_name)、产品价格(prod_price)SELECT prod_id,prod_name,prod_price FROM products;
# 5、在 vend_id 列有很多重复值,如何去除重复值,让每⼀种⼚商的id只保留⼀份呢?
SELECT DISTINCT vend_id FROM products;
# 注意:DISTINCT关键字应⽤于所有列⽽不仅是跟它挨着的列。
3、条数限制查询
limit是MySQL特有的语法,其作⽤是⽤于限制查询结果的条数。格式:
select列名from表名limit[m,n]
不写m的时候,返回前n条数据。写m的时候,数据库会从 ⾏m 开始,返回n条数据;
注意,MySQL中⾏号是从0开始的,也就是说第⼀条数据,是⾏0,⽽不是⾏1
(1)简单查询
# 查询前3条产品名称
SELECT prod_name FROM products LIMIT3;
# 从第⼆条开始查询,取5条数据
SELECT prod_name FROM products LIMIT1,5;
# 取出第3条⾄第6条,4条记录
select*from tablename limit2,4
(2)Limit 做分页
分页查询格式:
SELECT*FROM表名LIMIT startRow,pageSize;
例如:
select*from products limit0,5;#第⼀页,每页显⽰5条。
select*from products limit5,5;#第⼆页,每页显⽰5条。
select*from products limit10,5;#第三页,每页显⽰5条。
还有:
select*from products limit startRow,5;#第curPage页,每页显⽰5条
startRow的值如何计算呢?
– 后台计算出页码、页数(页⼤⼩)
– 分页需要的相关数据结果分析如下,
– 注意:下⾯是伪代码不⽤于执⾏
int curPage =2;-- 当前页数
int pageSize =5;-- 每页显⽰数量
int startRow =(curPage -1)* pageSize;-- 当前页, 记录开始的位置(⾏数)计算
int totalSize =select count(*)from products;-- 记录总数量
int totalPage = il(totalSize *1.0/ pageSize);-- 总页数
4、排序
关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有意义。也
就是说,如果不对查询结果进⾏排序,数据库是不保证查询的结果是有序的。如何进⾏排序呢?通过order by语句,可以将查询出的结果进⾏排序。格式:
SELECT列名,...FROM表名ORDER BY排序字段ASC|DESC;
# ASC 升序 (默认), 从⼩到⼤排序
# DESC 降序, 从⼤到⼩排序
(1)单列排序:查询商品表,并按价格进⾏递增、递减排序
SELECT prod_id,prod_name ,prod_price FROM products ORDER BY prod_price;
SELECT prod_id,prod_name ,prod_price FROM products ORDER BY prod_price DESC;
(2)中⽂排序:查询商品表,并按商品名称进⾏排序 对中⽂进⾏排序 ,格式:
SELECT*FROM表名ORDER BY CONVERT(排序列名USING gbk)ASC|DESC;
SELECT prod_id, prod_name FROM products ORDER BY CONVERT(prod_name USING gbk);
(3) 多列排序:如果想在多个列上进⾏降序排序,必须对每个列指定DESC关键字。
#先按供应商id排序,再按产品价格排序
SELECT vend_id,prod_price FROM products ORDER BY vend_id,prod_price ;sql语句查询结果取反
# 先按供应商id降序,再按产品价格升序
SELECT vend_id,prod_price FROM products ORDER BY vend_id DESC,prod_price ;
(4)⽤order by 和 limit 的组合出最贵的三件商品名称
SELECT prod_name,prod_price FROM products ORDER BY prod_price DESC LIMIT3;
5、条件查询
⽐较运算
符< 、>、<=、>=、= 、<>、
!=
⼩于、⼤于、⼩于等于、⼤于等于、不等于、不等于
\BETWEEN…AND…显⽰在某⼀区间的值(含头含尾)
\IN(set)显⽰在in列表中的值,例:in(100,200)
\LIKE ‘字符’模糊查询,like语句中,% 代表零个或多个任意字符,_ 代表⼀个字符, 例如:first_name like
‘_a%’;
\IS NULL判断是否为空
逻辑运⾏符and多个条件同时成⽴\or多个条件任⼀成⽴
\not不成⽴,例:WHERE vend_id NOT IN(1001,1002);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论