3.基础查询

接下来,我们正式开始学习DQL语言!DQL语言的学习总共分为以下几类查询:基础查询、条件查询、排序查询、常见函数、分组查询、连接查询、子查询、分页查询、union联合查询。我们依次介绍…
#DQL语言
##一、基础查询
###1.首先在SQLyog里新建一个查询编辑器,如图:
在这里插入图片描述
以后我们的查询操作就在查询编辑器里完成。

我们基础查询的语法是:select 查询列表 from 表名;
注意点:

①select后面跟的是“查询列表”,意思是说 选择的东西可以有多个,查询列表可以是:表中的字段、常量值、表达式、函数。
②查询的结果是一个虚拟的表格,只是临时存在,并没有真正保存。

###2.不同查询列表
①查询表中的单个字段

假设我们现在要查询“员工表”(employees)中的“姓”(last_name),于是可以这样写,如图:
在这里插入图片描述
输入查询语句后一定要点左上方的“执行查询”按钮/F9键,执行查询后的效果表如图,即employees表中所有last_name的值都罗列出来了:
在这里插入图片描述

②查询表中的多个字段

假设现在我们要查询“员工表”(employees)表中的“姓”(last_name)和“月薪”(salary)和“邮箱”(email),那么我们就可以这样写,如图:
在这里插入图片描述
注意一定要把所要执行的查询语句选中再执行,效果表显示如下:
在这里插入图片描述

③查询表中的所有字段

我们可以把每个字段挨个写上去,但这样显然很麻烦,于是我们可以通过双击字段的方式去间接输入,各字段之间记得加==“,”==,如图:
在这里插入图片描述
可以把光标随意放在语句中后摁F12键使其格式化如图:
在这里插入图片描述
上图光标插入后摁F12格式化…
在这里插入图片描述
这里提醒一下,可能有同学会问为什么双击后显示的字段多了’ ‘,我们称’ '为着重号,在这里删去也无妨,但我们都知道 存在即合理,那么着重号到底有什么用呢?现在假设在employees表中有一个字段名字叫NAME,其实NAME在SQLyog中也是一个关键字,那于是我们就用着重号来进行区分!将select NAME from employees改为select 'name' from employees就达到区分的效果啦,这一点其实和其他的编译软件差不多,大家理解理解就好啦~

通过这种方式可以随意更改表格中各字段依次显示的顺序,还有一种方式可以查询表中的所有字段,如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-15Eb3z1A-1591359725252)(13.png)]
即通过select * from employees;这一查询语句实现,方便快捷,但唯一缺点是无法改变各字段显示的顺序。

④查询表中的常量

需要明确一点,我们在用select去"查询"常量时并不是说从表里查询到相应的常量,而是去显示这个常量!(这一点务必大家明确)比如现在用select 100;语句去执行,如图:
在这里插入图片描述
大家可以看到,100既是字段名,又是对应的常量值。
再比如我们去查询一个字符,这里也提醒一下大家,在MySQL里面不区分字符和字符串,所以我们统统用单引号表示即可,用语句select 'Bill',如图:
在这里插入图片描述

⑤查询表中的表达式

不多说,如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2O9wRxZP-1591359725258)(20.png)]

⑥查询表中的函数

select 函数名();的语句去显示该函数的返回值,例如:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nOpdH6r6-1591359725259)(21.png)]

###3.库
我们这里做一点小的说明,当我们用select 字段列表 from employees时,必须指明from后面库名!,我们可以看到下图左上方的当前库:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-giWGwTXb-1591359725261)(16.png)]
显示的库是myemployees即我们当前在该库中进行查询等操作,当然我们也可以在询问窗口中输入语句use myemployees;来选中当前库myemployees,如图:
在这里插入图片描述

###4.起别名
我们在不同的查询对象中最后显示的字段名都是对应的对象名,假如之前的字段名不方便理解或是出现相同的字段名,我们该怎么办?于是接下来我将介绍如何为各字段起别名,主要分为两种方式:

select email as 邮箱,first_name as 名 from employees;
select email 邮箱,first_name 名 from employees;

结果一样如下图所示:
在这里插入图片描述

③假如起的别名含特殊符号,如out put,特殊符号为中间的空格,则应添加双引号或单引号,否则会报错,正确写法例如:
select salary 'out put' from employees;

###5.去重
我们有时需要从一堆数据中找出仅仅不同的数据,重复出现的就去掉,这一去重过程可以用语句select distinct 字段 from 库,但注意:不能一下子去重多个字段,select distinct 字段1,字段2 from 库是不对的,例子:查询员工表中涉及到的所有的部门编号 如图:
在这里插入图片描述

###6.MySQL中“+”(加号)的作用
我们知道在java中“+”有两种作用,一种是数值运算,另一种是连接两个字符串;

但是,在MySQL中,“+”只作为加法运算符!
那么在MySQL中,"+"到底有哪些用途呢?(以select 操作数1+操作数2 from 库为例)
①当两个操作数都为数值型时,正常做加法运算;
②当其中一方为字符型时,试图将字符型转化为数值型

若转化成功,则继续做加法运算;
若转化失败,则将字符型转化成0,再做加法运算;

③当其中一方为null时,则结果肯定为null;

下面为几个例子:

select '100'+90 from employees
在这里插入图片描述
select 'Bill'+90 from employees
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rPbsjtWg-1591359725267)(25.png)]
select null+90 from employees
在这里插入图片描述

###7.用concat进行连接

现在假设有一个案例:

查询员工“名”和“姓”连接成一个字段,并显示为“姓名”.
显然我们用"+"是行不通的,于是在MySQL中我们用函数concat()来进行连接,使用语句select concat(last_name,first_name) as 姓名 from employees;
在这里插入图片描述
PS:null和任何的操作数进行拼接最终结果都为null。

·示例:将“姓”,“名”,“奖金率”拼接起来,中间用逗号隔开,结果用out put显示出来。

~错误语句:select concat(last_name,',',first_name,',',commission_pct) as 'out put' from employees;
结果如图:
在这里插入图片描述

为什么?在于commission_pct(奖金率)中含有null,而null和任何的操作数进行拼接最终结果都为null。

解决方案:使用IFNULL(expr1,expr2)函数对expr1(参数1)进行判断,若为null,则返回expr2(参数2自行设定)。于是…

~正确语句:select concat(last_name,',',first_name,',',IFNULL(commission_pct,0)) as 'out put' from employees;
(即有奖金率的就正常返回该奖金率,没有的就返回0)

再比如“年薪”怎么表示?
我们知道年薪=月薪12(1+奖金率)
所以可以用语句:SELECT salary*12*(1+IFNULL(commission_pct,0));

<<补充一个ISNULL(参数)函数,当参数为null值时返回1,否则返回0(这个大家都好理解吧 就不多讲了嘿嘿)
以上就是基础查询的内容,下一节将介绍条件查询!

SELECT salary*12*(1+IFNULL(commission_pct,0));

<<补充一个ISNULL(参数)函数,当参数为null值时返回1,否则返回0(这个大家都好理解吧 就不多讲了嘿嘿)
以上就是基础查询的内容,下一节将介绍条件查询!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值