vlambda博客
学习文章列表

MySQL:牛客网面试题刷题笔记一

 纸上得来终觉浅,绝知此事要躬行。



牛客网题库,面向应届生找工作需要,包含几万道题目。 其中,题库涵盖六类行业题目,包含:IT技术类、硬件类、产品运营类、金融财会类、市场营销类、管理类、职能类。
MySQL是数据分析中的重要一环,因为需要从数据库里存数与取数等一系列的操作。这只作为我在牛客网刷题的笔记,其余无任何用途。





01

数据的简单查询


1、查询某列

 Customers表中有cust_id,字段,请从 Customers 表中检索所有的cust_id
select cust_id from Customers;
查询某一个字段的所有数据,我们只需要用select 字段名 from 表名这个格式就可以查询到想要的数据。


2、查询与去重

表OrderItems含有非空的列prod_id代表商品id,包含了所有已订购的商品(有些已被订购多次)。检索并列出所有已订购商品(prod_id)的去重后的清单。
select distinct(prod_id) from OrderItems;
在题目中我们可以知道,有的订单被多订购,因此我们在进行查询中我要对数据进行去重处理,在SQL中,对数据进行去重我们一般是用distinct来处理。 通常使用格式为: select distinct(需要去重的字段名) from 表名就可以达到去重处理。

3、 查询表中的所有字段
现在有Customers 表(表中含有列cust_id代表客户id,cust_name代表客户姓名)
select * from Customers;
当我们要查询表中的所有字段时,我们用到的是select * from 表名。便可以达到查询所有字段的目的。



02


数据的查询与排序


1、查询与排序

现在有表Customers,cust_id代表客户id,cust_name代表客户姓名。从 Customers 中检索所有的顾客名称(cust_name),并按从 Z 到 A 的顺序显示结果。
select cust_name from Customersorder by cust_name desc;
在题目中,需要查询的是cust_name,并按照字母从Z到A排序,这里显然是降序排列,在SQL中,我们对数据进行简单的排序一般使用的是 select 字段名 from 表名 order by + 需要排序的字段名,默认为升序,当我们想要降序的时候,可在需要排序的字段名后面加一个 desc就可以得到某个字段降序排列的结果。


2、多字段排序

有Orders表,里面有三个字段,cust_id、order_num、order_date从 Orders 表中检索顾客 ID(cust_id)和订单号(order_num),并先按顾客 ID 对结果进行排序,再按订单日期倒序排列。

select cust_id,order_num from Orders order by cust_id, order_date desc;
当我们要进行两个字段排列时,可以使用select 字段名1,字段名2 from 表名 order by 字段名1 , 字段名2  des c;在此处是对字段名1进行默认排序即升序排列,字段名2为降序排列,若想要对字段名1进行降序排列,可以写成字段名1 desc,对字段名2升序排列去掉desc即可。  





03

数据的简单过滤


1、给定简单条件

从 Products表中检索产品 ID(prod_id)和产品名称(prod_name),只返回价格为 9.49 美元的产品。
select prod_id,prod_name from Products where prod_price = 9.49;
在对数据进行简单的过滤时,一般使用的是where语句,即select 字段名1,字段名2 from 表名 where 需要过滤的字段名 +(>,<,=,>=,<=,!=)+过滤的条件即可得到我们过滤后的数据。


2、简单筛选+排序

Products 表中,有三个字段prod_id,prod_name,prod_price,返回 Products 表中所有价格在 3 美元到 6 美元之间的产品的名称(prod_name)和价格(prod_price),然后按价格对结果进行排序。

select prod_name,prod_price from Products where prod_price >=3 and prod_price <=6order by prod_price;
对数据进行区间过滤,一般使用where语句+ 需要过滤的字段名+过滤条件+(and or) 来连接,最后再进行排序操作。对于开区间筛选有:
select distinct(order_num) from OrderItems where quantity >= 100;
此处为过滤掉小于100的数据,只选取大于等于100的数据。


今日毕!明天又是美好的一天!