MySQL——数据查询

2.检索多个列

要想从一个表中检索多个列,使用相同的SELECT语句。唯一的不同 是必须在SELECT****关键字后

给出多个列名,列名之间必须以逗号分隔

例如:

输入:

select pro_id,pro_name ,pro_price from products;

分析:

与前一个例子一样,这条语句使用SELECT语句从表products中选择数据。在这个例子中,指定了

3个列名,列名之间用逗号分隔。此语句的输出如下:

3.检索所有列(*)

输入:

select * from products;

分析:

* 号代表的是通配符,表示直接查询所有列。

4.检索不同的行(DISTINCT)

正如所见,SELECT返回所有匹配的行。但是,如果你不想要每个值 每次都出现,怎么办?例

如,假如你想得出products表中产品的所有供应商ID:

select vend_id from products;

输出:

如果我们不想要重复的值该怎么办呢?

解决办法是使用DISTINCT关键字,顾名思义,此关键字指示MySQL只返回不同的值。

例如:

select distinct vend_id from products ;

注 !!!

如果使用DISTINCT关键字,它必须直接放在列名的前面

不能部分使用DISTINCT DISTINCT关键字应用于所有列而不仅是前置它的列。如果给出SELECT

DISTINCT vend_id,prod_price,除非指定的两个列都不同,否则所有行都将被检索出来。

5.限制结果(limit)

SELECT语句返回所有匹配的行,它们可能是指定表中的每个行。为了返回第一行或前几行,可使

LIMIT子句。下面举一个例子:

select vend_name from products limit 5;

分析:

此语句使用SELECT语句检索单个列。LIMIT 5指示MySQL返回不多于5****行。此语句的输出如下所示:

为得出下一个5行,可指定要检索的开始行和行数,如下所示:

select vend_name from products limit 5,5;

分析:

**LIMIT 5, 5指示MySQL返回从行5开始的5****行。**第一个数为开始位置,第二个数为要检索的行数。此

语句的输出如下所示:

所以,带一个值的LIMIT总是从第一行开始,给出的数为返回的行数。带两个值的LIMIT可以指定

从行号为第一个值的位置开始。

笔记:

在行数不够时 LIMIT中指定要检索的行数为检索的最大行数。如果没有足够的行(例如,给

出LIMIT 10, 5,但只有13行),MySQL****将只返回它能返回的那么多行

6.使用完全限定的表名

输入:

select products.prod_name from products;

分析:

这个等同于:

select prod_name from products;

有一些情形需要完全限定名。现在,需要注意这个语法,以便在遇到时知道它的作用。


连接查询

====

概念:如果一个查询同时涉及两个以上的表,则称之为连接查询。

1.等值与非等值连接查询


连接查询的where子句中用来连接两个表的条件成为连接条件或连接谓词。

格式:<表名1>.<列名1><比较运算符><表名2>.<列名2>

其中比较运算符主要有=,>,<,>=,<=,!=(或<>)等。

此外连接谓词还可以使用下面的格式:

<表名1>.<列名1>between<表名2>.<列名2>and<表名2>.<列名3>

当连接运算符为=时,称为等值连结。使用其他运算符称为非等值连接 。

接下来我们看一个例子:

我们可以用看到属性名前都加了表的前缀名,这是为了避免混淆。如果属性名在参加连接的个表中是唯一的,则可以省略表前缀名。

关系数据库管理系统执行该连接操作的一种过程可能是:首先在customers中找到第一个元组,然后在从头开始扫描student,逐一找查和customers中性别相等的元素,找到后拼接起来,形成一个元组,当student中扫描完毕,就在从customers中的第二个元素开始,重复上诉操作,直到第一个表中的元素全部处理完,这个就是嵌套循环连接算法的基本思想。

自然连接

把目标列中的重复的属性列去掉则为自然连接 。


2.自身链接


连接操作不仅仅可以在两个表之间进行,也可以是一个表与其自己连接,称为表的自身连接。

注:在自身连接的时候我们需要把本身的表转换为两个不同的表名,然后在去使用连接查询。

3.多表连接


连接操作除了可以是两表连接,一个表与其自身连接外,还可以是两个以上的表进行连接,后者通常成为多表连接

例:

通常是先经行两个表的连接操作,在将其连接结果与第三个表进行连接。


嵌套查询

====

嵌套查询的介绍


在SQL语言中,一个select-from-where 语句称为一个查询块。将一个查询块嵌套在另一个查询块中的where子句或having短语的条件中的查询条件称为嵌套查询

例如:

select sname

from student //外层查询

where sno in

(select sno from sc where cno = ‘2’);内层查询

嵌套插叙使用户可以使用多个简单查询构成复杂的查询,从而增强SQL的查询能力。以层层嵌套的方式来构造程序是SQL中 结构化 的含义所在。

子查询中的查询条件不依赖于父查询,称为不相关子查询

如果子查询的查询条件依赖于父查询,这类子查询称为相关子查询,整个查询语句称为相关嵌套查询语句。


带有exists谓语的子查询


带有exists谓词的子查询不能返回,任何数据,只产生逻辑真‘true’或逻辑假值‘false’。

例如:

select sname

from student

where exists

(select * from sc where sno = student.sno and cno = ‘1’);

使用存在量词exists后,如果内层查询结果非空,则外层的where 子句返回真值,否者返回假值。 
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后总结我的面试经验

2021年的金三银四一眨眼就到了,对于很多人来说是跳槽的好机会,大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。

另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。

BAT面试经验

实战系列:Spring全家桶+Redis等

其他相关的电子书:源码+调优

面试真题:


《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。

[外链图片转存中…(img-ieM6XfmQ-1712653293946)]

BAT面试经验

实战系列:Spring全家桶+Redis等

[外链图片转存中…(img-Vkc6H3XP-1712653293946)]

其他相关的电子书:源码+调优

[外链图片转存中…(img-5nFT8JvV-1712653293946)]

面试真题:

[外链图片转存中…(img-ZoHxQn8N-1712653293947)]

[外链图片转存中…(img-RaXkMU2t-1712653293947)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值