python count函数用法 comm_python3:MySQL 8.0学习笔记(第五部分:单表查询操作)

在讲解单表查询时,首先创建一个emp的员工表,表中字段包括:empno(员工编号)、ename(员工姓名)、job(员工职位)、mgr(员工领导)、hiredate(员工入职日期)、sal(员工月薪)、comm(员工津贴)、deptno(员工部门编号):

create table emp(

emp_id int(4) primary key,

emp_name varchar(5),

emp_job varchar(10),

emp_mgr varchar(5),

emp_hiredate date,

emp_sal decimal(7,2),

emp_comm decimal(7,2),

emp_deptno int(2)

);

为emp员工表插入多条数据:

insert emp values

(7369, 'Smith', 'clerk', 7902, '1980-12-17', 800, null, 20),

(7499, 'Allen', 'salesman', 7698, '1981-02-20', 1600, 300, 30),

(7521, 'Ward', 'salesman', 7698, '1981-02-22', 1250, 500, 30),

(7566, 'Jones', 'manager', 7839, '1981-04-02', 2975, null, 20),

(7654, 'Maritn', 'salesman', 7698, '1981-09-28', 1250, 1400, 30),

(7698, 'Blake', 'manager', 7839, '1981-05-01', 2850, null, 30),

(7782, 'Clark', 'manager', 7839, '1981-06-09', 2450, null, 10),

(7788, 'Scott', 'analyst', 7566, '1987-04-19', 3000, null, 20),

(7839, 'King', 'president', null, '1981-11-17', 5000, null, 10),

(7844, 'Turner', 'salesman', 7698, '1981-09-08', 1500, 0, 30),

(7876, 'Adams', 'clerk', 7788, '1987-05-23', 1100, null, 20),

(7900, 'James', 'clerk', 7698, '1981-12-03', 950, null, 30),

(7902, 'Ford', 'analyst', 7566, '1981-12-03', 3000, null, 20),

(7934, 'Miller', 'clerk', 7782, '1982-01-23', 1300, null, 10);

1.简单查询:

1.查询所有数据:

select * from emp;

2.查询指定数据

select emp_id,emp_name,emp_hiredate from emp;

3.去重复记录的查询:

select distinct emp_deptno from emp;

4.使用算术运算符的查询:

select emp_id,emp_name,emp_job,emp_sal*12 from emp;

5.使用字段别名的查询:

select emp_id,emp_name,emp_job as work,emp_sal*12 as yearsalary from emp;

6.设置数据显示格式的查询:

select concat('工号:',emp_id,',姓名:',emp_name,',部门:',emp_deptno,',职位:',emp_job,',年薪:',emp_sal*12) as info from emp;#如果数据中有一个为null,则返回null

2.对查询结果排序:

1.按照指定的单字段排序:

select emp_id,emp_name,emp_job,emp_sal*12 as year_sal from emp order by year_sal;

2.按照指定的多字段排序(asc和desc分别表示升序和降序,升序时可不写asc):

select emp_id,emp_name,emp_job,emp_sal*12 as year_sal from emp order by year_sal,emp_name;

3.条件查询:

1.使用比较运算符进行查询:

select emp_id,emp_name,emp_job from emp where emp_job='clerk';

2.使用[not] between and 的范围查询:

select emp_id,emp_name,emp_job from emp where emp_id between 7800 and 8000;

3.使用in的条件查询:

select emp_id,emp_name,emp_job from emp where emp_job in ('clerk');

4.使用is [not] null的空值查询:

select emp_id,emp_name,emp_job,emp_comm from emp where emp_comm is null;

5.使用[not] like的模糊查询:

a.使用 “%”通配符的模糊查询:

select * from emp where emp_name like 'S%';

b.使用“_”通配符的模糊查询:

select * from emp where emp_name like "_l%";

c.使用not like的模糊查询:

select * from emp where emp_name not like "%s%";

6.使用and的多条件查询:

select * from emp where emp_name like "%s%" and emp_sal>1200;

7.使用or的多条件查询:

select * from emp where emp_name not like "%s%" or emp_sal >2000;

4.限制查询:

1.不指定初始位置的限制查询:

select * from emp where emp_name not like "%S%" limit 3;

2.指定初始位置的限制查询:

select * from emp where emp_name not like "%S%" limit 3,3;

5.使用函数查询:

1.单行函数:

1->:select concat('工号:',emp_id,',姓名:',emp_name,',工资:',emp_sal) as info from emp where emp_sal>1000;#concat函数

2->:select * from emp where length(emp_name)> 5;#length函数

3->:select * ,lower(emp_name),upper(emp_name) from emp where emp_sal>2000;#lower,upper函数

4->:select * ,replace(emp_job,'clerk','staff') newjob from emp where emp_job = 'clerk';#replace函数

5->:select *,substring(emp_name,1,3) subname from emp where emp_job = 'clerk';#substring函数

2.数值函数:

MySQL为我们提供了一个名为'dual'的虚拟表,我们可以用它来进行演示,如果没有where语句,我们可以省略from dual语句。

1.abs(),ceil(),floor(),mod(),pi(),pow()函数的使用:

1->:select abs(-1.2);#取绝对值

2->:select ceil(1.2);#向上取值

3->:select floor(1.2);#向下取值

4->:select mod(5,2);#取模

5->:select pi();#取圆周率的值

6->:select pow(2,3);取指数的值,2的3次方

2.rand()函数的使用(产生0,1之间的随机数值)

1->:select rand(),rand();#产生两个0,1之间的随机数

2->:select rand()*5;#产生0,5之间的随机数

3->:select floor(rand()*5);#产生0,5之间的随机整数,5产生的概率基本为0

4->:select round(pi()),round(pi(),2),round(pi(),4);#取小数点后位数,四舍五入

5->:select truncate(pi(),0),truncate(pi(),2),truncate(pi(),4);#取小数点后位数,直接截断,而不是四舍五入,且位数无默认位。

2.日期与时间函数:

1.使用curdata(),curtime(),now()函数查询:

select curdate(),curtime(),now();#获取日期,时间与日期时间

2.systdate()函数的使用:

select sysdate();#获得系统时间

3.使用dayofyear(),dayofweek(),week()函数查询:

select dayofyear(curdate()),dayofweek(curdate());#查询当前日期为该年第多少天,该周多少周(从周日起算)

select week(curdate());#查询当前日期位于该年多少周

4.使用date_add(),date_sub()函数查询

select date_add(curdate(),interval '10' day);#interval(间隔) day为间隔类型

select date_sub(curdate(),interval '10' day);

5.使用datediff()函数查询

select datediff('2019-5-20',curdate());#计算日期间隔

4.流程函数

1.使用if()函数查询:

select emp_id,emp_name,emp_sal,if(emp_sal>2000,'high','low') as sal_level from emp where emp_deptno = 20;

2.使用ifnull()函数查询:

1->:select emp_id,emp_name,emp_sal,emp_comm,emp_sal*12+emp_comm as year_income from emp where emp_deptno = 30;#不使用ifnull()函数,与使用进行对比

2->:select emp_id,emp_name,emp_sal,emp_comm,emp_sal*12+ifnull(emp_comm,0) as year_income from emp where emp_deptno = 30;#使用ifnull()函数

3.使用nullif()函数查询:

select nullif(1,1),nullif(1,2);

4.使用case...when...then...else...end...()函数查询:

select emp_name,emp_sal,emp_deptno,case emp_sal>=3000 when true then 'high' else 'low' end sal_level from emp where deptno = 20;

2.多行函数:

1.count()函数的使用:

select count(*) from emp;

select count(emp_comm),count(emp_id) from emp;

2.sum()和avg()函数的使用:

select sum(emp_sal) sum_sal,avg(emp_sal) avg_sal from emp;#求和、计算平均值

3.max()和min()函数的使用:

select max(emp_sal),min(emp_sal) from emp;

6.分组查询:

1.简单的group by 查询:

select * from emp group by emp_deptno;

select * from emp group by emp_job,emp_deptno;

2.group by与统计函数:

select emp_deptno,count(*),max(emp_sal),min(emp_sal),sum(emp_sal),avg(emp_sal) from emp group by emp_deptno;

3.group by与group_concat()的分组查询:

select emp_deptno,count(*),group_concat(emp_name) from emp group by deptno;

4.group by与having:

select emp_deptno,count(*),max(emp_sal),min(emp_sal),sum(emp_sal),avg(emp_sal) from emp group by emp_deptno having avg(emp_sal)>=2000;

MySQL中各子句的执行过程由先到后依次为:from->where->group by->having->select->order by。

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

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

相关文章

该计算机没有运行windows无线服务器,老司机示范win7系统诊断提示此计算机上没有运行的windows无线服务的恢复方法...

随着win7系统的普及,大家是否遇到过win7系统诊断提示此计算机上没有运行的windows无线服务的情况,近日就有朋友向我反映win7系统诊断提示此计算机上没有运行的windows无线服务的问题,那么我们应该如何处理win7系统诊断提示此计算机上没有运行…

mysql主库从库在同一台服务器_MySQL数据库的主从配置(多主对一从)

一、实验环境部署主服务器 192.168.18.42 端口3306 》 从服务器 192.168.18.44 端口 3306主服务器 192.168.18.43 端口3306 》 从服务器 192.168.18.44 端口 3307##数据库,已经安装mysql服务,安装部分略。从服务器上的多个mysql实例,请看另…

golang int64转string_(一)Golang从入门到原地起飞

1、Golang 变量定义方法:1)定义变量 变量名 类型 表达式var go string "hello" 2)在函数内部,可以使用更简略的 : 方式声明并初始化变量。注意:短变量只能用于声明局部变量,不能用于全局变量的…

domino缺省注册服务器或无法访问,Domino服务器挂起时的现象

1。Domino 服务器挂起时的现象:2。Domino 服务器挂起时需要收集的数据:3。Domino 服务器需要在notes.ini中添加的参数:4。有关QNC/Nsd:5。设置Statrep.nsf 的方法:6。有关用Debug_Capture_Timeout1来收集信号灯的数据信…

latex 分页_latex 图片跨页显示问题???

latex 中一个页面有很多图片,超出一页就显示不出来了:请问怎么让后续图片显示在一个新页面中?图片显示代码如下每行显示三张:\begin{figure}\centering\includegraphics[width1.8 in]{images/Fig5_Sample11a.jpg}\quad\includegra…

session传递参数_JWT与Session的比较

如今,越来越多的项目开始采用JWT作为认证授权机制,那么它和之前的Session究竟有什么区别呢?今天就让我们来了解一下。JWT是什么定义JSON Web Token(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑和自包含的方式,用于…

scp复制本地文件到远程服务器,scp 本地文件到远程服务器

linux中scp命令的使用linux远程拷贝文件命令:scp(scp:secure corp)(1)从本地拷贝文件到远程服务器scp/opt/script/test.pl root192.168.3.130:~/将本地/opt/scritp/文件夹下的test.pl脚本文件拷贝到远程服务器192.168.3.130的用户目录下...文章科技小能手2017-11-12758浏览量li…

keras 分布式_TensorFlow 2.0正式版官宣!深度集成Keras

新智元报道 来源:medium、GitHub编辑:小芹、大明【新智元导读】TensorFlow 2.0正式版终于发布了!深度集成Keras,更简单、更易用,GPU训练性能提升。这是一个革命性的新版本,欢迎来到 TensorFlow 2.0&#x…

python定义空列表lt_Pythonlt;1gt;List

list里的元素以逗号隔开,以[]包围,当中元素的类型随意 官方一点的说:list列表是一个随意类型的对象的位置相关的有序集合。 它没有固定的大小(1)。通过对偏移量 (2)进行赋值以及其它各种列表的方法进行调用,可以改动列表的大小。 …

新天龙官网服务器更新消息,新天龙八部怀旧服太火,增开7组服务器不够用,还得继续扩容...

原标题:新天龙八部怀旧服太火,增开7组服务器不够用,还得继续扩容最近《新天龙八部》怀旧服上线的消息,相信各位都有耳闻,作为国产最经典的网游之一,新天龙开怀旧服自然吸引了无数老玩家回归。而且还有很多路…

大疆云台如何使用华为mate20pro_华为Mate30+大疆灵眸Osmo3,让你的照片和短视频称霸朋友圈...

自华为Mate30国内上市以后,短短几天刷爆朋友圈,尤其是Mate30pro现在更是一机难求。华为Mate30pro打造了全球首款4000万像素电影级拍摄手机,华为Mate30pro支持7680帧超慢速摄影,支持4K HDR拍摄,以及双OIS防抖。2019年8月…

c语言int转字符串_C语言零基础入门-指针-05

C语言零基础入门-指针-05本节要点:1,字符指针。2,字符串指针。3,指针的参数传递4,多重指针01. 字符指针这里的定义与前面的基本一样,所谓的字符指针就是这个指针指向的是一个字符型的变量。01.1 单个字符代…

圆平移后的方程变化_平移法解题

提要平面内把一个图形沿着一定的方向移动一定的距离得到另一个图形,这种变换称为平移变换。根据需要,平移的对象可以是线段,直线,角,圆,整个图形等。平移只改变图形的位置,不改变图形的形状和大…

有没有什么方法快速能找到导致软件崩溃的进程_崩溃!电脑突然黑屏无法启动...

Hello!我是爽哥,欢迎你的到来,我会不定期推送关于电脑方面的实用教程及资讯,点击上方蓝色字体公众号名称“爽哥来搞机”关注我,实用干货全部拿走!什么?!为什么我的电脑一直黑屏无法开机了,昨天…

服务器内存会显示ecc么,服务器内存ecc

服务器内存ecc 内容精选换一换设备实时状态查询是检测设备在运行过程中的状态信息。用户可任选以下指令之一查看设备实时状态查询命令的可用参数。ascend-dmi -i -hascend-dmi -i --help各参数解释如表1所示。以查看芯片的详细信息为例。ascend-dmi -i -dt若推理服务器返回如图…

可燃气体浓度多少合格_安燃无恙 | 可燃气体报警器的常见故障处理

说到报警器可能大家都不陌生,在商场、家居住宅、银行等场合都能够看到报警器的存在,而且随着科技的发展还出现了远红外报警器、烟感报警器等多功能报警器。它们不仅被应用在防盗方面还应用在消防领域用于火灾预警,但是今天说的这一种报警器算…

ajax荷马史诗,荷马史诗(8)

《奥德赛》(Odyssey)奥德修斯的希腊文原意是“麻烦”:他既带给别人麻烦,自己也遭遇麻烦《埃阿斯和卡珊德拉》(Ajax and Cassandra)《荷马史诗》里有两个埃阿斯,上图的埃阿斯又称小埃阿斯(Ajax theLesser),特洛伊战争时罗克里斯(Lo…

nacos 本地测试_Nacos注册中心落地实践

前言公司在19年开始推进同城双活架构,未来规划是在南汇机房出现故障时能把所有读流量切到宝山机房,这样至少保证读请求是没问题的;我们的微服务使用的zookeeper来做服务发现, zk由于它的强一致性模型不适合多机房部署, 由于zk的服务发现模型是基于会话机制创建的临时节点, 就算…

python通讯录管理系统 tk_通讯录管理系统课程设计

按照惯例,一波课程设计走起~ 这次写的是通讯录管理系统,经过几番大修和N1次小修之后BUG已经很少了~先来看看期间遇到的哪些问题吧: Qusetion 1:针对手机号的排序问题(即交换结构体) 2:文件写入和…

h5与小程序服务器如何辨别,小程序丨教你六招,快速区分H5页面还是APP页面

限制的H5技术和原生APP的技术很多类似或者实现效果很相像,不仔细去观察,大多人不会察觉两种有何不同。第九程序帮大家整理出比较容易判断的一个APP页面是原生的还是H5页面的方法。希望可以帮到大家,以便更加容易区分H5页面和原生App页面。 一…