第四章 检索数据

前言

前三章的内容基本上都在对MySQL进行介绍,第三章的内容讲到了连接,在命令行主要使用

mysql -u(用户名)root -p(密码)******

即可在命令行接入MySQL。实际过程中大多会使用一些工具来直接连接,包括IDE,SQLyog等等

所以前三章我们不作赘述,这里直接进入检索数据的SELECT语句。

SELECT语句

数据库中大概,最经常使用的SQL 语句就是 SELECT 语句了。它的用途是从一个或多个表中检索信息。数据库中所有的查询都使用SELECT。
  • 简单的查询,复杂的查询都能做

  • 数据库中最核心语言,最重要的语言

  • 最常用的语言

检索最本质的形式就是:

语法:SELECT 字段 ...... FROM 表
这样一条简单 SELECT 语句将返回表中所有行。数据没有过滤(过滤将得出结果集的一个子集,也没有排序。
若想检索多个列,只需要在字段之后添加,并使用逗号隔开
语法:SELECT 字段,字段,字段.....FROM 表

检索所有列时,可以使用*通配符来实现,但实际中一般不直接使用,效率太低

语法:SELECT * FROM 表

检索数据时可能会出现相同数据,如果不想要相同数据,可以使用distinct关键字来实现检索出数据的不同

语法:SELECT distinct 字段 ...... FROM 表

注意:不能部分使用DISTINCT DISTINCT关键字应用于所有列而不仅是前置它的列。

那如果想限制检索出的行数该怎么实现呢?使用limit关键字就可以实现了

语法:SELECT 字段 ...... FROM 表 limit 5

这样就可以实现限制5行。limit关键字也可以实现从行中到行中的限制如:

语法:SELECT 字段 ...... FROM 表 limit 5,5
表示返回从行5开始的5行。
limit 第一个数为开始位置,第二个数为要检索的行数。
           检索出来的第一行为行 0 而不是行 1

当然SELECT还可以直接使用,可以作为一个计算器使用,查询版本等等

SELECT VERSION() --查询系统版本
SELECT 100*3-1 AS 计算结果 --用来计算
SELECT @@auto_increment_increment --查询自增的步长

练习题

从 Customers 表中检索所有的 ID_牛客题霸_牛客网 (nowcoder.com)

现有表Customers如下:

cust_id

A

B
C

【问题】

编写 SQL 语句,从 Customers 表中检索所有的cust_id

【示例答案】

返回cust_id列的内容

cust_id

A

B
C
SELECT 
    cust_id --这里也可以使用*因为只有cust_id一列
FROM 
    Customers;

检索并列出已订购产品的清单_牛客题霸_牛客网 (nowcoder.com)

描述

表OrderItems含有非空的列prod_id代表商品id,包含了所有已订购的商品(有些已被订购多次)。

prod_id

a1

a2
a3
a4
a5
a6
a7

【问题】编写SQL 语句,检索并列出所有已订购商品(prod_id)的去重后的清单。

SELECT 
    distinct prod_id
FROM
    OrderItems
WHERE prod_id is not null

--这里使用到了where子句,并使用判空,判空与判定其他有所不同,需要使用is not null

 检索所有列_牛客题霸_牛客网 (nowcoder.com)

明面上这是一道中等题,但实际上做下来也可以发现很简单,大家不要被吓到了,做题的时候要勇敢尝试 

描述

表OrderItems含有非空的列prod_id代表商品id,包含了所有已订购的商品(有些已被订购多次)。

prod_id

a1

a2
a3
a4
a5
a6
a7

【问题】编写SQL 语句,检索并列出所有已订购商品(prod_id)的去重后的清单。

 

SELECT 
    distinct prod_id
FROM
    OrderItems
WHERE prod_id is not null
--明面上这是一道中等题,但实际上做下来也可以发现很简单,大家不要被吓到了,做题的时候要勇敢尝试

 那么第三章检索数据的题目我们就做完了,之后会尽量保持一天更新一章,牛客网的题目连接我放在这里:牛客网在线编程_SQL篇_SQL必知必会 (nowcoder.com)

你可能感兴趣的:(MySQL)