DQL 之基础查询之列控制|学习笔记

简介: 快速学习 DQL 之基础查询之列控制

开发者学堂课程【数据处理:DQL 之基础查询之列控制】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/64/detail/1151


DQL 之基础查询之列控制


接下来学习 DQL,学习完 DQL 后还会学习关于编码,备份等相关知识。关于 DQL 内容不多,包含很多练习,练习题多为单表操作难度不大,真正有难度的在多表操作。

基本查询

首先 DQL 数据库查询语言,查询不会修改数据库表记录。

(1)字段控制

①查询所有列

查询所有列 :SELECT * FROM 表名;首先切换到数据库 exam,查询表 emp,查询语句为 SELECT * FROM emp;

image.png

表 emp 中个字段意义: empno 表示员工编号,ename 表示员工姓名,job 表示员工的工作, mgr 表示员工上级领导编号(例如甘宁的领导编号为1013 ,而1013对应员工为庞统,庞统的领导编号为1004,而1004表示刘备,刘备上级编号为1009,1009对应曾阿牛,所有曾阿牛为最终 BOSS),hircdate 表示入职时间(其中在表中甘宁入职最早工资最低),sal 表示工资,COMM 表示佣金,deptno 表示所属部门。查看部门编号的部门名称需要查找表 dept,20代表学工部。

image.png

②指定列查询

表 emp 中个字段(或叫做 列也可以叫做属性)已经做了基础讲解。语句 SELECT * FROM emp 中星号(*)表示所有列,可以替换为列名。如果表中字段过多,可以只查询其中一部分字段。例如需要查看姓名与工资,执行语句 SELECT ename ,sal FROM emp 即可;此查询方式叫指定列查询,语法为 SELECT 列1,【列2...列 n】 FROM 表名;至少查询一列

image.png

例如查询表 emp 中佣金列:SELECT COMM FROM emp;数据显示只有五个人有佣金,其中有四个是30部门中的销售员,黛绮丝奖金3000,殷天正奖金5000,谢逊奖金14000,韦一笑奖金0.00,张三奖金50000。其中张三是后来添加的方便进行右外连接查询

image.png

③完全重复只记录一次

去除重复行,只是在显示时不显示完全相同的两行记录,而不是删除重复记录。SELECT 不会影响表。去除重复行需要在星号前添加关键字  distinct,例如SELECT distinct * FROM emp;仍然显示15行说明表 emp 中没有完全重复的两行记录。执行 SELECT deptno from emp;执行后有完全重复的两行记录,在查询所有列时没有重复的记录,但查询一列时有重复记录,把 SELECT deptno from emp 改为 SELECT distinct deptno from emp 后查询结果只有四条记录,没有重复记录。

image.png

如果查询该公司中工资样式或者该公司的工作种类(去除重复种类)可以使用语句 SELECT distinct job from emp;查询该公司的工作种类:文员,销售员,经理,分析师,董事长,保洁员;没有重复记录。在查询列前加 distinct  ,其作用是去除完全重复的记录,只要记录(只一行数据)中有所区别就不会被去除。在查询一列时只要有数据重复就会被去除。

image.png

④列运算

接下来讲解列运算,共四种变化。例如现在给该公司员工工资涨百分之五十。执行  SELECT *,sal  FROM emp ,(当管理员窗口太小时,点击鼠标右键,选择属性,找到布局,可以在布局中调节管理员窗口大小)执行命令后sal被查询两遍,* 表示所有列,sal表示多查一列。执行 SELECT *,sal*1.5  FROM emp 表示 sal列数据增长百分之五十,而数据库并不发生变化,它只是一种查询手段。

image.png

SELECT *,ename*1.5  FROM emp 当执行此语句时,最后一行数据全为0,即当所给值无法转换为整型时会以0代替。SELECT *,ename+100 FROM emp 当执行此语句时,最后一行数据全为100,即把 ename 中数据当成0了(即无法转换为整数的数据当成0对待)。同样可以进行减运算,除法运算。可以对列进行四则运算,这是列运算。

还可以查询 工资加佣金,即 SELECT*, sal+COMM FROM emp,执行后出错了:没有佣金的员工工资也没了。任何数据与 NULL 相加结果为 NULL,3000+16000=19000,而29750+NULL=NULL,与我们预期不符,我们希望 NULL在运算时当0处理。

image.png

可以使用函数 ifnull(),使用函数把 COMM 列包裹,当 COMM 中数据为 NULL时转换为0,SELECT*, sal+ifnull(COMM ,0)FROM emp;

执行语句后达到理性预期,ifnull(列名,替换的值)。

image.png

把没有上级领导的 mgr 改为 BOSS, SELECT empno,ename,job,ifnull(mgr’BOSS‘),hirodate,sal, COMM,deptno FROM emp;则没有上级领导的增阿牛的 mgr 变为 BOSS。

image.png

字符串类型可以做连续运算,在 MySQL 中不能使用加号连接字符串,SELECT sname+job FROM emp 执行结果为0,把不能转化为整数的值当作0进行处理,即在执行时 甘宁被当成0,文员也被当成0,0+0等于0.

image.png

SELECT ename job || FROM emp ,其中||表示逻辑判断,在其他程序中表示连接字符串,在 MySQL 中不能使用。而在 MySQL  则使用函数 CONCAT(),即 SELECT CONCAT(ename,sal) FEOM emp;

image.png

可以使用函数  CONCAT() 进行更复杂的连接,例如SELECT CONCAT(’我叫,‘ename,’我的工作是‘,sal) FEOM emp;查询功能到目前为止非常强大,如果向 txt 文件中存储数据不能这么方便的查询数据。刚刚讲解了四则运算,字符串连接,ifnull()函数;连接字符串使用 CONCAT() 函数。

image.png

⑤给字符串起别名,在进行字符串连接是列名杂乱,应适当修改。SELECT CONCAT(’我叫,‘ename,’我的工作是‘,sal)as 描述 FEOM emp;

image.png

SELECT ename as 姓名,job as 工作  FEOM emp;给列起别名列名与 as之间没有逗号;其中 as 可以省略,语句可以写为 SELECT ename 姓名,job 工作  FEOM emp;有一问题:问下面语句中是否有误 SELECT empno,ename job,sal from emp;其中 ename job中间没有逗号,其执行结果是对 ename 起别名为 job,语句可以执行。这一题非常具有迷惑性。

image.png

DQL 中基础查询中有列控制与查询整张表,查询整张表语句为 select* from 表明;。列控制包括列运算(如语句 select sal*1.5 from emp,这条语句既是列运算,当 sal 中值不是整数会被当成0进行运算),连接字符串 (select concal(’我的名称是‘,ename) from emp;),处理 NULL 值(select sal+ifnull(comm,0)from emp;把 comm 中的 NULL 转换为0),给列起别名(select ename 姓名 from emp),去除完全重复的行(select distict comm from emp;)

上面学习的是基础查询,内容较多。而本节课程主要学习基础查询的列控制。还有条件控制,其中 where 应该已经掌握,但对模糊查询不太了解,下节课程学习模糊查询。

相关文章
|
存储 弹性计算 安全
带你读《从基础到应用云上安全航行指南》——一文教你如何从零构建机密计算平台解决方案(1)
带你读《从基础到应用云上安全航行指南》——一文教你如何从零构建机密计算平台解决方案(1)
422 0
|
7月前
|
人工智能 小程序 前端开发
【一步步开发AI运动小程序】十八、如何识别用户上传图片中的人体、运动、动作、姿态?
【云智AI运动识别小程序插件】为小程序提供人体、运动及姿态检测的AI能力,本地引擎支持10余种运动,无需后台服务,具备快速、低成本等优势。本文介绍如何通过Canvas方案读取用户上传图片的像素数据,实现人体检测与姿态分析功能,代码简单高效,适合快速集成。更多内容欢迎交流!
|
11月前
|
计算机视觉
ECCV 2024:新梦幻场景生成方法,高质量、视角一致、可编辑3D场景
【10月更文挑战第27天】DreamScene是一种新型的文本到3D场景生成框架,基于3D高斯模型。它通过形成模式采样(FPS)和渐进式三阶段相机采样策略,生成高质量、一致性和可编辑的3D场景。DreamScene在游戏、电影和建筑等行业具有巨大应用潜力,尽管在处理复杂场景时仍存在一些局限性。论文地址:https://arxiv.org/abs/2404.03575
211 1
|
运维 前端开发 算法
阿里及各大企业中台架构详解(上)
阿里及各大企业中台架构详解
1640 0
阿里及各大企业中台架构详解(上)
|
资源调度 JavaScript 前端开发
如何开始使用 Next.js?
【8月更文挑战第4天】如何开始使用 Next.js?
374 3
|
安全
WEB安全~X-Frame-Options
`X-Frame-Options` HTTP响应头用于控制网页是否能在框架中被嵌套,防范点击劫持攻击,保护用户安全。常见取值有`DENY`(禁止嵌套)和`SAMEORIGIN`(同源嵌套)。通过设置此头部,网站能提升安全性,防止被恶意嵌入其他站点。注意合理配置并与其他安全头部结合使用。例如,配置为`ALLOW_FROM baidu.com`允许来自百度的嵌套,`SAMEORIGIN`则仅允许同域名嵌套,而`DENY`则拒绝所有。不配置则无保护。
541 2
|
Java 关系型数据库 数据库
基于springboot+vue车辆充电桩管理系统
基于springboot+vue车辆充电桩管理系统
基于springboot+vue车辆充电桩管理系统
|
SQL 安全 应用服务中间件
技术心得记录:弱口令漏洞详解
技术心得记录:弱口令漏洞详解
|
测试技术 BI
性能基准测试基本流程
性能基准测试基本流程
262 1
|
vr&ar 开发工具 图形学
【Unity 3D】使用EasyAR实现单图识别的AR增强现实功能(附实现步骤)
【Unity 3D】使用EasyAR实现单图识别的AR增强现实功能(附实现步骤)
701 0