数据库基础知识——DQL语言(一)

文章目录

      • 1.基础查询
      • 2.条件查询
      • 3.排序查询
      • 4.常见函数
        • 4.1 单行函数
          • 4.1.1 字符函数
          • 4.1.2 数学函数
          • 4.1.3 日期函数
          • 4.1.4 流程控制函数
          • 4.1.5 其他函数
        • 4.2 分组函数/统计函数/聚合函数
      • 5.分组查询

1.基础查询

语法:
SELECT 要查询的东西
【FROM 表名】;
#查询employees表中所有字段
select * from employees;#查询employees表中的first_name字段
select first_name from employees;#查询employees表中的多个字段
select first_name,salary FROM employees;#查询常量值
select 100+123;
select "zhaoxr"#查询表达式
select 100*98;#查询函数
select version();#起别名
select 98*98 as result;
select last_name as "姓",first_name as "名" from employees;
select last_name "姓",first_name "名" from employees;#去重
select distinct department_id from employees;# +的作用
select 100+99;
select "123"+99;
select "zhaoxr"+"linux";
select null+16;# concat函数
select concat(last_name," ",first_name) "姓名" from employees;
类似于Java中 :System.out.println(要打印的东西);
特点:
① 通过select查询完的结果 ,是一个虚拟的表格,不是真实存在
② 要查询的东西 可以是常量值、可以是表达式、可以是字段、可以是函数

2.条件查询

条件查询:根据条件过滤原始表的数据,查询到想要的数据
语法:
select 要查询的字段|表达式|常量值|函数
from 表
where 条件 ;分类:
一、条件表达式示例:salary>10000条件运算符:> < >= <= = != <>二、逻辑表达式
示例:salary>10000 && salary<20000逻辑运算符:and(&&):两个条件如果同时成立,结果为true,否则为falseor(||):两个条件只要有一个成立,结果为true,否则为falsenot(!):如果条件成立,则not后为false,否则为true三、模糊查询
like
between and
in
is null | is not null通配符:
%:任意多个字符,包含0个字符
_:单个字符
\:转义字符,"\_"代表字符_示例:last_name like 'a%'
# 查询工资大于等于12000的员工ID,姓名和薪水
select employee_id,CONCAT(last_name," ",first_name) as "姓名",salary 
from employees
where salary>=12000;# 查询部分编号不等于90的员工姓名和部门编号
select CONCAT(last_name," ",first_name) as "姓名",department_id
from employees
where department_id!=90;#查询工资在10000到20000之间的员工ID,姓名和工资
select employee_id,concat(last_name," ",first_name) as "姓名",salary
from employees
where salary>=10000 and salary<=20000;#查询员工姓中含有a的员工信息
select *
from employees
where last_name like "%a%";#查询员工姓第三个字母是l,第五个是e的员工信息
select *
from employees
where last_name like "__l_e%"; #查询员工姓的第二个字符是_的员工信息
select *
from employees
where last_name like "_\_%";#查询员工ID在100到200之间的员工信息,包含100和200
select *
from employees
where employee_id between 100 and 200;#查询工种编号是IT_PROG,PU_CLERK,ST_CLERK的员工信息
select *
from employees
where job_id in("IT_PROG","PU_CLERK","ST_CLERK");#查询奖金率为null的员工信息
select *
from employees
where commission_pct is null;

3.排序查询

语法:
select要查询的东西
from表
where 条件order by 排序的字段|表达式|函数|别名 【asc|desc】
#查询员工信息,工资由低到高排列
select *
from employees
order by salary asc;#查询员工信息,部门编号大于等于90,并且按照入职先后排列
select *
from employees
where department_id>=90
order by hiredate asc;#查询员工信息和年薪,并按照年薪从低到高排列
select *,salary*12*(1+ifnull(commission_pct,0)) as "年薪"
from employees
order by salary*12*(1+ifnull(commission_pct,0)) asc;#查询员工的姓名和工资,按照姓名的长度从小到大排列
select CONCAT(last_name," ",first_name) as "姓名",length(concat(last_name," ",first_name)) as "姓名长度",salary
from employees
order by length(concat(last_name," ",first_name)) asc;#查询员工信息,先按工资从低到高排名,再按员工编号从低到高排序
select *
from employees
order by salary asc,employee_id asc;

4.常见函数

4.1 单行函数

4.1.1 字符函数
	concat拼接substr截取子串upper转换成大写lower转换成小写trim去前后指定的空格和字符ltrim去左边空格rtrim去右边空格replace替换lpad左填充rpad右填充instr返回子串第一次出现的索引length 获取字节个数
#length函数|查询员工的姓,以及姓的长度
select last_name,length(last_name)
from employees;#concat函数|查询员工的姓名
select concat(last_name," ",first_name) as "姓名"
from employees;#upper函数和lower函数|查询员工的姓名,姓大写,名小写
select concat(upper(last_name)," ",lower(first_name)) as "姓名"
from employees;#substr截取函数|注意:截取函数从1开始
#返回"i love china"中的"china"
select substr("i love china",8);#返回"我爱你中国"中"中国"
select substr("我爱你中国",4);#返回"i love china"中的"love"
select substr("i love china",3,4);#instr返回子串第一次出现的索引|返回"i love china"中的'c'在第几个位置
select instr("i love china","c");#trim去空格|删除"  love   "左右的空格
select trim("   love   ");#trim去除指定的字符|删除"aaaaaloveaaaa"左右的'a'
select trim('a' from "aaaaaaaloveaaaaa");#lpad填充|使用'0'填充字符"我爱你",总字符数10个,填充结果为"0000000我爱你"
select lpad("我爱你",10,'0');#replace替换|将"我爱china",替换为"我爱中国"
select replace("我爱china","china","中国");
4.1.2 数学函数
	round 四舍五入rand 随机数floor向下取整ceil向上取整mod取余truncate截断
#数学函数
#round四舍五入|2.55四舍五入保留整数部分
select round(2.55);#ceil向上取整,返回>=该数的最小整数|取整2.0001,2.0000
select ceil(2.0001),ceil(2.0000);#floor向下取整,返回<=该数的最大整数|取整-2.0001,2.0000
select floor(-2.0001),floor(2.0000);#truncate截断,保留小数几位|1.99999保留两位小数
select truncate(1.99999,2);#mod取余|10/3的余数
select mod(10,3);
4.1.3 日期函数
	now当前系统日期+时间curdate当前系统日期curtime当前系统时间str_to_date 将字符转换成日期date_format将日期转换成字符

在这里插入图片描述

#时间函数
#查询当前时间
select now();#获取指定的年月日,获取当前年份,月份,日
select year(now()) as "年",month(now()) as "月",day(now()) as "日";#获取员工姓名和入职年份
select concat(last_name," ",first_name) as "姓名",year(hiredate) as "入职年份"
from employees;#str_to_date将日期格式的字符转换为规定的日期格式,规定的日期格式"2021-04-29"
select str_to_date("2021年4月29日","%Y年%m月%d日"),str_to_date("04/29/2021","%m/%d/%Y");#date_format将日期转换为自己想要的日期字符|查询员工的姓名和入职时间,入职时间显示为"2021年4月29日"的格式
select concat(last_name," ",first_name) as "姓名",date_format(hiredate,"%Y年%m月%d日") as "日期"
from employees;
4.1.4 流程控制函数
	if 处理双分支if(判断条件,真就执行此处,假就执行此处)case 要判断的字段或者表达式when 常量1 then 要显示的值1或者语句1when 常量2 then 要显示的值2或者语句2。。。。。else 要显示的值n或者语句nendcase when 条件1 then 要显示的值1或者语句1when 条件2 then 要显示的值2或者语句2。。。。。else 要显示的值n或者语句nend
#流程控制函数
#if函数|查询员工的姓,奖金率,如果有奖金,返回有奖金,没有奖金返回没奖金
select last_name,commission_pct,if(commission_pct is null,"没奖金","有奖金") as "奖金"
from employees;#case|查询员工的姓名,工资,部门ID#如果部门=90,salary*1.1;如果部门=100,salary*1.2;如果部门=110,salary*1.3;其它salary不变;并显示
select concat(last_name," ",first_name),department_id,salary as "原始工资",case department_idwhen 90 then salary*1.1when 100 then salary*1.2when 110 then salary*1.3else salaryend as "当前工资"
from employees;#case|查询员工的姓名,工资#如果工资小于10000,显示低工资;#如果工资大于等于10000,小于20000,显示中等工资;#如果工资大于等于20000,显示高工资
select concat(last_name," ",first_name),salary,case when salary<10000 then "低工资"when salary>=10000 and salary<20000 then "中等工资"when salary>20000 then "高工资"end as "工资区间"
from employees;
4.1.5 其他函数
	version版本database当前库user当前连接用户
#其它函数
#version查看版本号
select version();#database查看当前数据库
select database();#user查看当前用户
select user();

4.2 分组函数/统计函数/聚合函数

	sum 求和max 最大值min 最小值avg 平均值count 计数
#分组函数
#简单使用
select sum(salary) as "总工资",max(salary) as "最高工资",min(salary) as "最低工资",avg(salary) as "平均工资",count(salary) as "工资个数"
from employees;#查询有多少中工资
select count(distinct salary)
from employees;#查询employees表有多少行
select count(*) as "行数",count(1) as "行数"
from employees;
	特点:1、以上五个分组函数都忽略null值,除了count(*)2、sum和avg一般用于处理数值型max、min、count可以处理任何数据类型3、都可以搭配distinct使用,用于统计去重后的结果4、count的参数可以支持:字段、*、常量值,一般放1建议使用 count(*)

5.分组查询

语法:
select 查询的字段,分组函数
from 表
group by 分组的字段特点:
1、可以按单个字段分组
2、和分组函数一同查询的字段最好是分组后的字段
3、分组筛选针对的表	位置			关键字
分组前筛选:	原始表		group by的前面		where
分组后筛选:	分组后的结果集	group by的后面		having4、可以按多个字段分组,字段之间用逗号隔开
5、可以支持排序
6、having后可以支持别名
#查询每个部门的平均工资
select avg(salary),department_id
from employees
group by department_id;#查询每个工种的最高工资
select max(salary),job_id
from employees
group by job_id;#查询工资大于10000的每个工种的最高工资
select max(salary),job_id
from employees
where salary>10000
group by job_id;#查询哪个部门员工的个数大于2
select count(*),department_id
from employees
group by department_id
HAVING count(*)>2;#按员工的姓名长度分组,查询每一组员工的个数,筛选员工个数大于5的有哪些
select count(*),length(last_name) as "len_name"
from employees
group by length(last_name)
having count(*)>5;#查询每个部门每个工种的平均工资
select avg(salary),department_id,job_id
from employees
group by department_id,job_id;#查询每个部门每个工种的平均工资,并按照降序排列
select avg(salary),department_id,job_id
from employees
group by department_id,job_id
order by avg(salary) desc;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483180.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

周志华教授发表首届国际学习与推理联合大会IJCLR开场Keynote:探索从纯学习到学习+推理的AI...

周志华&#xff0c;毕业于南京大学&#xff0c;欧洲科学院外籍院士&#xff0c;国家杰出青年基金获得者&#xff0c;现任南京大学人工智能学院院长、南京大学计算机软件新技术国家重点实验室常务副主任、机器学习与数据挖掘研究所 (LAMDA)所长、人工智能教研室主任。2021年8月1…

第八章 指针实验

C程序实验报告 实验项目&#xff1a; 1、指针基础及指针运算 2、数据交换 3、字符串反转及字符串连接 4、数组元素奇偶排列 姓名&#xff1a;曹时仙 实验地点&#xff1a;教学楼514教室 实验时间&#xff1a;2019.6.12 一、实验目的与要求 1、掌握指针的概念和定义方法 2、掌…

大脑的学习方式如何,机器学习与生物学习的联系将提供「答案」

来源&#xff1a;ScienceAI编辑&#xff1a;凯霞准确指出神经活动如何随着学习而变化&#xff0c;不是黑白分明的。有人认为大脑中的学习或生物学习可以从优化的角度来考虑&#xff0c;这就是在计算机或机器人等人工网络中学习的方式。由卡内基梅隆大学和匹兹堡大学的研究人员共…

登顶Nature | DeepMind用AI首次实现数学领域重大进展,助力科学家证实两大猜想

来源&#xff1a;AI科技评论作者&#xff1a;杏花、莓酊编辑&#xff1a;琰琰数论是人类知识最古老的一个分支&#xff0c;然而它最深奥的秘密与其最平凡的真理是密切相连的。数学原理极易从事实中归纳出来&#xff0c;但证明却隐藏的极深。可以说数学&#xff0c;是一切科学的…

细胞如何获得秩序?除了形成细胞器,还可以发生相分离

来源&#xff1a;集智俱乐部作者&#xff1a;Viviane Callier译者&#xff1a;王百臻 审校&#xff1a;梁金 编辑&#xff1a;邓一雪 导语小小的细胞实际上是一个无比复杂的宇宙。DNA在细胞核中运筹帷幄&#xff0c;指导各种细胞器密切合作&#xff0c;产生功能各异的蛋白质。…

从人类交互通信发展简史看元宇宙发展趋势及商业价值

来源&#xff1a;科协频道从通信角度来看&#xff0c;人类社会通信方式的发展历程和趋势&#xff0c;它一共经历了以下几个阶段&#xff1a;通信方式的发展历程和趋势第一阶段几千年以前的人类通过口口相传的方式&#xff0c;实现人与人之间的通信&#xff0c;这种通信方式的深…

谷歌时间晶体登上Nature,诺奖得主重大猜想成为现实

来源&#xff1a;机器之心没有能量的供给&#xff0c;没有能量的消耗&#xff0c;它的循环运动会永远持续下去。时间晶体就像是一个「永动机」在不同状态之间永久循环往复而不消耗任何能量。来自斯坦福大学、谷歌、马克思 普朗克复杂系统物理研究所和牛津大学的研究团队声称已…

【GoWeb开发实战】Beego的路由控制

Beego的路由控制 二、路由控制 web框架中&#xff0c;路由是重要的一环&#xff0c;对于beego的路由配置如何&#xff1f; 2.1 默认路由 让我们从入口文件main.go先分析起来吧&#xff1a; package mainimport (_ "beegoDemo/routers""github.com/astaxie/beego…

挑战唯物论?诺奖得主彭罗斯:意识产生可能是大脑内的「量子叠加」的结果...

来源&#xff1a;新智元量子物理学取得了巨大成功&#xff0c;但其解释仍然不确定。大脑由神经元组成&#xff0c;而神经元又由分子组成&#xff0c;很可能会受到量子效应的影响。量子力学和神经科学能否融合成「量子意识」理论&#xff1f;「我们是谁」&#xff1f;恐怕没有什…

下一个是什么?2022年值得关注的22项新兴技术

来源&#xff1a;参考消息网英国《经济学人》网站11月8日发表题为《下一个是什么&#xff1f;2022年值得关注的22项新兴技术》的文章。在文章列举的22项新技术中&#xff0c;既有今年大热的“元宇宙”、太空旅游、脑机接口&#xff0c;也有备受期待的量子计算、艾滋病病毒疫苗……

防止ARP欺骗

前言&#xff1a; 曾经因为宿舍里面的同学经常熬夜打游戏&#xff0c;好言相劝不管用&#xff0c;无奈之下使用arp欺骗他们的主机&#xff0c;使之晚上11点之后游戏延迟&#xff0c;掉线&#xff0c;最后&#xff0c;一到11点同学们就都上床睡觉了。 防止arp欺骗的三种思路&…

孙文智/胡霁/汪小京团队揭示延迟满足的神经基础

来源&#xff1a;北京脑编辑&#xff1a;绿萝导语&#xff1a;20 世纪 60-70 年代&#xff0c;斯坦福大学心理学家瓦尔特•米舍尔团队进行了一系列有关自制力的心理学实验&#xff0c;其中包括著名的棉花糖实验&#xff0c;得出结论&#xff1a;「能为偏爱的奖励坚持忍耐更长时…

为什么数学家、统计学家和机器学习专家会用不同方式解决问题?

来源&#xff1a;数学建模andMATLAB原文作者&#xff1a;Nir Kaldero翻译&#xff1a;Fibears原文链接: http://www.galvanize.com/blog/2015/08/26/why-a-mathematician-statistician-machine-learner-solve-the-same-problem-differently-2/#.VeUQMNOqoVU乍一看&#xff0c;机…

眼耳鼻舌身意,严肃地聊一聊元宇宙的“技术拼图”

来源&#xff1a;脑极体元宇宙太太太火了&#xff0c;以至于还没来得及认真聊一聊技术本身&#xff0c;各种炒房团、割韭菜、融资潮、付费课……就纷至沓来&#xff0c;我看不懂但大受震撼。吃多了瓜&#xff0c;颇有一种“累了毁灭吧”的虚无感。不过&#xff0c;元宇宙的技术…

数据库高级知识——mysql架构介绍(一)

文章目录1.MySQL简介1.1 概述1.2 Mysql高级2.Mysql Linux版的安装2.1 MySQL下载官网2.2 安装与卸载2.3 查看MySQL安装版本2.4 mysql服务的启停2.5 登录mysql2.6 设置开机自启动2.7 MySQL相关文件2.8 修改字符集3.Mysql配置文件3.1二进制日志log-bin3.2 错误日志log-error3.3 慢…

美国大胆预测:未来300年的人类竟然是这样的!

来源&#xff1a;云犀科技编辑&#xff1a;小艾 关于未来&#xff0c;人们越来越向往300年后人类社会的发展又会是什么样子呢&#xff1f;对于未来&#xff0c;大家又是怎么预测的呢&#xff1f;▼5年后▼三维全息虚拟技术正式大规模商用&#xff0c;可以通过VR、AR技术进行远程…

数据库高级知识——mysql架构介绍(二)

文章目录1.Mysql逻辑架构介绍1.1 总体概览1.2 查询说明2.Mysql存储引擎2.1 查看命令2.2 各个引擎简介2.3 MyISAM和InnoDB2.4 阿里巴巴、淘宝用哪个1.Mysql逻辑架构介绍 1.1 总体概览 和其它数据库相比&#xff0c;MySQL有点与众不同&#xff0c;它的架构可以在多种不同场景中…

联邦学习应用思考:需求还是方法?

来源&#xff1a;AI数据派前言&#xff1a;目前&#xff0c;“联邦学习”这个术语在市场上存在很多认识上的误解和混淆&#xff0c;主要原因是其既在广义上表达了保护数据前提下联合多方数据训练模型的需求&#xff0c;又在狭义上表示了一类通过暴露部分数据信息来提升训练性能…

数据库高级知识——索引优化分析(一)

文章目录1.SQL性能下降原因2.常见通用的Join查询2.1 SQL执行顺序2.2 Join图3.索引简介3.1 索引是什么3.2 索引优势3.3 索引劣势3.4 索引分类3.5 mysql索引结构3.6 哪些情况需要创建索引3.7 哪些情况不要创建索引1.SQL性能下降原因 查询数据过多 能不能拆&#xff0c;条件过滤…

使用C++代码打印数字正方形

使用C代码打印数字正方形 作为一名初学者&#xff0c;最近在跟着网课学习C程序设计基础。在学习过程中遇到了一些习题&#xff0c;我根据自己的理解和思路写了一些代码实现&#xff0c;算是对自己学习过程的一个记录&#xff0c;也希望可以对别人有些许帮助。 题目描述 输入描述…