sql的查询

article/2025/10/23 0:40:13

sql的查询

  • (1)什么是排序
    order by
  • (2)如何排序
    》》数据库的查询(排序:order by)
    SELECT * FROM 表名 ORDER BY 排序字段 ASC(升序)|DESC(降序);
  • (3)特点
    指定列
    指定升序或者降序
    order by 排序只对数字和英文字符串有效,对汉字无效
    可以指定一个或者多个列作为排序条件
  • (4)字典顺序 对中文无效
    admin delete

初始化数据

# 准备数据
drop database day13;
create database day13;
use day13;
# 执行
create table category (cid int primary key auto_increment,cname varchar(50)
);
create table products(pid int primary key ,pname varchar(50),price int,flag varchar(2),				#是否上架标记为:1表示上架、0表示下架category_id int
);
alter table products add foreign key (category_id) references category (cid);#分类
insert into category(cid,cname) values(1,'家电');
insert into category(cid,cname) values(2,'服饰');
insert into category(cid,cname) values(3,'化妆品');
#商品
insert into products(pid, pname,price,flag,category_id) values('1','联想',5000,'1',1);
insert into products(pid, pname,price,flag,category_id) values('2','海尔',3000,'1',1);
insert into products(pid, pname,price,flag,category_id) values('3','雷神',5000,'1',1);insert into products (pid, pname,price,flag,category_id) values('4','杰克琼斯',800,'1',2);
insert into products (pid, pname,price,flag,category_id) values('5','真维斯',200,'1',2);
insert into products (pid, pname,price,flag,category_id) values('6','花花公子',440,'1',2);
insert into products (pid, pname,price,flag,category_id) values('7','劲霸',2000,'1',2);insert into products (pid, pname,price,flag,category_id) values('8','香奈儿',800,'1',2);
insert into products (pid, pname,price,flag,category_id) values('9','相宜本草',200,'1',2);

案例

1.使用价格排序(降序) -- 可以指定一个列select * from products order by price desc;2.在价格排序(降序)的基础上,以分类排序(降序)-- 可以指定多个列select * from products order by price desc,category_id desc;3.显示商品的价格(去重复),并排序(降序) -- distinct去掉重复select distinct price from products order by price desc

sql的查询- 聚合函数***

  • (1)什么是聚合函数?
    聚合函数(类似于Java中的方法: 函数名())
  • (2)哪些是常用聚合函数?
    五个聚合函数:
    》count:统计指定列不为NULL的记录行数;
    如:统计pname列的行数,如果有NULL值,则不统计
    》sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
    》max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
    》min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
    》avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
  • (3)语句执行顺序
    from ->where ->count(*)
    SELECT COUNT(*) FROM product WHERE price > 200;
1.使用价格排序(降序) -- 可以指定一个列select * from products order by price desc;2.在价格排序(降序)的基础上,以分类排序(降序)-- 可以指定多个列select * from products order by price desc,category_id desc;3.显示商品的价格(去重复),并排序(降序) -- distinct去掉重复select distinct price from products order by price desc# person.eat() 方法或者函数  sql也是有函数 xxx()1 查询商品的总条数select count(*) from products 》2 查询价格大于200商品的总条数select count(*) from products where price > 2003 查询分类为 1 的所有商品的总和select sum(price) from products where category_id = 14 查询分类为 2 所有商品的平均价格select avg(price) from products where category_id = 25 查询商品的最大价格和最小价格select max(price),min(price) from products

sql的查询-分组***

  • (1)什么是分组?
    将数据按照某个规则或者某个特征分成N组
    一般不对id进行分组
    如果是对分组之后的结果再进行过滤,则必须使用having 不能使用where
  • (2)如何进行分组
    SELECT 字段1,字段2… FROM 表名 GROUP BY 分组字段 HAVING 分组条件;
    from > group by -> count(*) ->having -> select
  • (3)案例:
    1 统计各个分类商品的个数
    2 统计各个分类商品的个数,且只显示个数大于3的信息
select 字段1,字段2from 表名 group by 分组字段 having 分组条件; 1 统计各个分类商品的个数
select category_id ,count(*) from products group by category_id ;2 统计各个分类商品的个数,且只显示个数大于3的信息
select category_id ,count(*) c from products group by category_id having c>3  ;

分页***

  • (1)什么是分页?
    数据库分页也是在数据库里写查询语句,不同的是查询的都是指定条数到指定条数的数据,不是一次性把数据全查出来
  • (2)如何分页?***
    SELECT 字段1,字段2… FROM 表名 LIMIT M,N
    (M:表示从哪一行的索引(从0开始)开始显示,N表示要显示几行)
    第1页: N*(1-1) 第2页: N*(2-1) 第page页: N*(page-1)
  • (3)显示prouct表的前5行
    在这里插入图片描述

sql练习

  • (1)初始化数据
create table student(id int,name varchar(20),chinese int,english int,math int
);
insert into student(id,name,chinese,english,math) values(1,'张小明',89,78,90);
insert into student(id,name,chinese,english,math) values(2,'李进',67,53,95);
insert into student(id,name,chinese,english,math) values(3,'王五',87,78,77);
insert into student(id,name,chinese,english,math) values(4,'李一',88,98,92);
insert into student(id,name,chinese,english,math) values(5,'李来财',82,84,67);
insert into student(id,name,chinese,english,math) values(6,'张进宝',55,85,45);
insert into student(id,name,chinese,english,math) values(7,'黄蓉',75,65,30);

题目

#对数学成绩排序后输出。
#对总分排序后输出,然后再按从高到低的顺序输出
#对姓李的学生成绩排序输出

参考答案

#对数学成绩排序后输出。select math from student order by math desc;#对总分排序后输出,然后再按从高到低的顺序输出select chinese+english+math as z from student order by z desc;#对姓李的学生成绩排序输出select name,chinese+english+math as z  from student where name like '李%' order by z desc

sql的练习2

  • (1)初始化数据
create table emp(empno		int, -- 编号ename		varchar(50), -- 员工姓名job		varchar(50), -- 岗位名称mgr		int, -- 上级领导编号hiredate	date,-- 入职日期sal		int, -- 工资comm		int, -- 奖金deptno		int  --  部门编号
) ;insert into emp values(7369,'SMITH','CLERK',7902,'1980-12-17',800,null,20);
insert into emp values(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
insert into emp values(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
insert into emp values(7566,'JONES','MANAGER',7839,'1981-04-02',2975,null,20);
insert into emp values(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
insert into emp values(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,null,30);
insert into emp values(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,null,10);
insert into emp values(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,null,20);
insert into emp values(7839,'KING','PRESIDENT',null,'1981-11-17',5000,null,10);
insert into emp values(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
insert into emp values(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,null,20);
insert into emp values(7900,'JAMES','CLERK',7698,'1981-12-03',950,null,30);
insert into emp values(7902,'FORD','ANALYST',7566,'1981-12-03',3000,null,20);
insert into emp values(7934,'MILLER','CLERK',7782,'1982-01-23',1300,null,10);
  • (2)案例2
-- 1、按员工编号升序排列不在10号部门工作的员工信息-- 2、查询姓名第二个字母不是”A”且薪水大于800元的员工信息,按年薪降序排列-- 3、求每个部门的平均薪水-- 4、求各个部门的最高薪水-- 5、求每个部门每个岗位的最高薪水-- 6、求平均薪水大于2000的部门编号-- 7、将部门平均薪水大于1500的部门编号列出来,按部门平均薪水降序排列

参考答案

-- 1、按员工编号升序排列不在10号部门工作的员工信息select * from emp where deptno != 10 order by empno asc;-- 2、查询姓名第二个字母不是”A”且薪水大于800元的员工信息,按年薪降序排列 not()取反select * ,(sal*12+ifnull(comm,0)) nx from emp where sal > 800 and not(ename like '_A%') order by nx desc ;-- 3、求每个部门的平均薪水select deptno,avg(sal) from emp group by deptno;-- 4、求各个部门的最高薪水select deptno,max(sal) from emp group by deptno;-- 5、求每个部门每个岗位的最高薪水select deptno,job,max(sal) from emp group by deptno,job;-- 6、求平均薪水大于2000的部门编号select deptno, avg(sal) pingjun from emp group by deptno having pingjun > 2000select deptno from emp group by deptno having  avg(sal)   > 2000-- 7、将部门平均薪水大于1500的部门编号列出来,按部门平均薪水降序排列select deptno, avg(sal) p from emp group by deptno having p > 1500 order by p desc

http://chatgpt.dhexx.cn/article/HQ5h4REp.shtml

相关文章

SQL 数据查询

前言,数据库中有5个表,student,sc,course,tc,teacher;(sql server里面不区分大小写) student sc tc course teacher 1. 查询软件工程学院(SE)学生的学…

SQL数据查询

目录 1、求各系学生的平均成绩,并把结果存入新建的数据库表中(请自己创建一个表存放结果) 2、统计每门课程的选修学生人数及各门课程的平均成绩 3、找出各系年龄最大的学生,显示其学号、姓名;(利用相关子…

数据库:SQL数据查询(详细、全面)

以下题目中加粗字体为重点哦~ 一、查询指定列、全部列 1.查询全体学生的学号和姓名 SELECT SNO, SN FROM S 2.查询全部列 SELECT * FROM S 二、查询经过计算的值 3. 查询全体学生的姓名、出生年份 SELECT SN, 2020-AGE FROM S 4. 查村全体学生的姓名、出生年份和系名&#xff…

2022留学生落户上海成本大概是怎样的?

现在留学生落户上海整体来说除了对于社保没有要求的落户方式,那么对于普通的留学生落户来说,就得有社保和个税的要求了,那么这里面的成本是有多少呢,下面来看看这里面的情况: 留学生落户上海根据判断自己的社保基数及累…

非上海户籍人员在上海买房需要啥条件?

和你一起终身学习,这里是程序员Android 非沪籍想在上海买房说实话有点难,毕竟每平米大几万的房价不是盖的,既然您点进来看了,说明你有这个想法,有想法就行,虽然我们不一定能买得起,但不能阻挡我…

上海落户计算机水平毕业研究生,2021上海积分落户应届毕业生直接落户上海

原标题:2021上海积分落户应届毕业生直接落户上海 ——上海落户积分120分,不是研究生毕业就有100分吗?研究生毕业就有100分,正常读书年龄肯定很小就有30分了啊,不是直接就可以落户了吗?为什么大家都在说很难…

上海居住证转户口证攻略

2019独角兽企业重金招聘Python工程师标准>>> 一、居转户条件: 1.居住证满7年,社保满7年,税单满7年 2.最近3年连续社保是上海平均值2倍以上(或者具备中级以上职称) 3.自有产权房 二、居转户材料&#x…

2019非上海生源高校应届生落户指南

流程 一、计算积分基本要素导向要素用人单位要素 二、准备申请材料三、审核--证明信四、证明信-个人户口本落户社区公共户落户家庭户或者单位集体户口落户家庭户落户单位集体户口 博主从五月份准备落户申请材料,到十月中旬拿到上海个人户口本,历时五个月…

上海程序员落户攻略

上海居住证落户简称 “居转户” , 本文主要写给在上海打拼的程序员们,告诉大家比写代码更重要的一件事情是落户。讲述一些关于上海居住证落户的一些政策和一些建议。 很多人以为居转户,只要上海居住证满7年就可以转了,殊不知&…

上海落户计算机水平毕业研究生,2020年上海落户有哪些新规定?附研究生落户分值表!...

相信对于不少的年轻人来说,上海都是他们向往的城市,很多毕业生都在毕业后都希望可以留在上海,如果能够落户就再好不过了。下面小编就给大家说说2020年上海落户有哪些新规定,研究生如何落户,想了解的快来看看吧。 一、2…

2017年上海最新落户政策重磅出炉!你达标了吗?(明年就毕业了希望一切顺利)

2017年最新非上海户籍的应届毕业生落户标准公布, 应届毕业生落户标准分为72分! 具体申请可根据2017《上海市居住证》和 居住证积分指南、申请本市户籍办法。 想想当初选择来魔都读书生活, 每天起早贪黑究竟为了什么? 很多人的“小…

【个人亲历】上海市人才引进落户最详细的流程记录说明

目录 一、材料准备 二、网上审核 2.1、预审上报 2.2、线下提供证明材料 2.3、初审、审核 2.4、公示 三、落户证明领取和准迁证查询 3.1、线下领取落户证明 3.2、准迁证查询 附:应用汇总: 从2022年6月领导通知我够资格人才引进落户以及2022…

2022留学生落户上海怎么办理社区公共户?

很多留学生会担心的一个问题是个人和直系亲属在沪无房产,且单位也无集体户怎么办呢? 其实无须担心,这种情况下可以按公安机关规定申请挂靠 社区公共户!简单而言 ,就是租房在哪,就落户在相应的派出所。 落户通过后,留…

重磅!上海出落户新政:双一流应届硕士可直接落户!

点击上方“3D视觉工坊”,选择“星标” 干货第一时间送达 编辑丨科研大匠 9月23日,据上海学生就业创业服务网,上海市高校招生和就业工作联席会议制定的《2020年非上海生源应届普通高校毕业生进沪就业申请本市户籍评分办法》(以下简…

上海落户条件—海归落户上海

上海落户条件—海归落户上海 国际留学生落户上海 2020年底,上海市政府发布上海落户2020新政改革,明确指出“基于国家户籍制度改革的新趋势,以及上海所面临的人才不足和各地人才竞争形势,对上海居住证转户籍人口提出一个基本的政策…

留学回国人员申办上海常住户口实施细则

留学回国人员申办上海常住户口实施细则 (政策有效期至2025年11月30日) 第一条 目的和依据 为贯彻落实人才强市战略,加大海外人才引进力度,规范留学回国人员申办上海常住户口工作,根据《公安部、人力资源和社会保障部关…

微信appid、openid、unionid的区别和关联

微信小程序的appid、openid、unionid appidopenidunionid三者关系 appid application identification (简称appid) 翻译一下就是某个应用的标识(id) 比如说在一个公众号主体下 你不仅可以拥有h5网站,小程序,小游戏,企业微信等等,这些都有一个单独的appid openid 每一个应用下…

获取openId

小程序—获取openId(用来标识用户唯一) 在需要的页面.js下 getopenid(){wx.cloud.callFunction({name:getOpenId,//注意名字是自己当前云函数中的openID的目录名success(res){console.log("获取云函数成功",res);},fail(res){console.log(&qu…

微信的openid

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter7_3 微信h5静默、非静默授权获取用户openId的方法和步骤: 一、openId是什么? openId是用户在当前公众号下的唯一标识(‘身份证’),就是说通过这个openId,就…

微信小程序获取openid

获取openId (用户唯一标识)和session_key 第一步,获取code 调用wx.login(OBJECT) 获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key…