sql学习总结(3)——SQL单表查询技术

基本格式:

select [all | distinct] select_list

from table_list/view_list

[where conditions]

[group by group_list]

[having conditions]

[order by order_list]

例:

select 职工号,姓名,工资 as 月工资,(工资*12+5000)/6 as 年奖金 from 职工

select *from 职工 where 仓库号 in (‘wh1’,’wh2’) and 性别!=’女’ and 工资>=1300 and 工资<=2100

3.1几种特殊SQL查询

3.1.1模糊查询


通配符


含义


%


包含0个或多个字符


_(下划线)


包含一个字符


[]


指定范围(如[a~z]) 任何单一字符


[^]


不属于指定范围(如[^a~z])  任何单一字符

--显示工资的百位数不在2~6之间,姓名中含有“平”字,并且仓库号在wh1和wh3中的职工信息:

select * from 职工 where 工资 like ‘_[^2-6]%’ and 姓名 like ‘%平%’ and 仓库号 in (‘wh1’,’wh3’)

3.1.2空值和限制范围查询

select * from 职工 where 工资 between 1500 and 1800 and 性别 is not null and 仓库号in (‘wh1’,’wh2’)

3.1.3显示部分记录查询

select top [3* | 30 percent] from 职工 where 工资>1500

3.1.4保存查询

select 职工号,姓名,工资,工资/30 as 天工资,工资*3 季度工资,工资*12 as 年工资 into 含计算字段的表 from 职工 where 工资<=1900

3.2单表嵌套查询

select * from 仓库 where 仓库号!=’wh1’ and 面积>=(select 面积 from 仓库 where 仓库号=’wh1’)

3.3统计函数查询


统计函数


含义


count(*)


统计选择的记录的个数


count()


统计特定列中值的个数


sum()


计算总和(必须是数值型字段)


avg()


计算平均值(必须是数值型字段)


max()


确定最大值


min()


确定最小值

select 职工.*,(select avg(工资) from 职工) as 平均工资,工资-(select avg(工资) from 职工) as 与平均工资的差 from 职工 where abs(工资-(select avg(工资) from 职工))>200

3.4排序和Compute By查询

select top 3 * from 职工 order by 工资 asc

select * from 职工 order by 工资desc,职工ID asc

--显示工资大于2000的职工信息及职工信息

select * from 职工 where 工资>2000

compute avg(工资),max(工资),min(工资),sum(工资)

--显示不同仓库的职工信息及职工汇总信息

select * from 职工 order by 仓库号

compute avg(工资),max(工资),min(工资),sum(工资) by 仓库号

3.5分组查询

分组查询关键字:group by,如果是分组之前的条件要用where,如果是分组之后的条件则用having。

显示工资大于zg1职工工资的不同仓库的平均工资、工资和、最大工资、最小工资、工资人数信息:

select 仓库号,max(工资) as最大工资,min(工资) as 最小工资,sum(工资) as 工资总和,avg(工资) as 平均工资,count(*) as 职工人数 from 职工 where 工资>(select 工资 from 职工 where 职工号=’zg1’) group by 仓库号

显示不同仓库的平均工资、工资和、最大工资、最小工资、工资人数信息,但要求该仓库的平均工资大于1650:

select 仓库号,max(工资) as最大工资,min(工资) as 最小工资,sum(工资) as 工资总和,avg(工资) as 平均工资,count(*) as 职工人数 from 职工 group by 仓库号 having avg(工资)>1650

显示职工所在仓库的最大工资与最小工资之差在700~800之间的职工信息:

select * from 职工where 仓库号 in(

select 仓库号from 职工 group by 仓库号

having max(工资)-min(工资) between 700 and 800)

显示不同职工经手订单金额最大的订单信息:

select a.* from 订购单 a where 金额=(

select max(金额) from 订购单 where 职工号=a.职工号)

注意:这里应该边求出每名职工订单金额的最大值,边显示该职工所对应的这条订单的信息。

很多人这样做:

select * from 订购单 where 金额 in (select max(金额) from 订购单 group by 职工号)

这种做法错误。

3.6量词查询

常用量词any、all和some,其中any和some是同义词,只要子查询有一行使结果为真,则为真;all要求子查询中所有行为真时,才为真。

select * from 职工  where 工资>=any(select 工资 from 职工 where 仓库号=’wh2’)

select * from 职工 where 工资>=all(select 工资 from 职工 where 仓库号=’wh1’)

时间: 2024-08-02 03:04:40

sql学习总结(3)——SQL单表查询技术的相关文章

SQL学习系列(一)之多表查询

在数据库中,各个表之间存在一定的联系,如果需要对数据进行一系列的查询是,仅仅从一个表或一个库中获得数据信息是不够的,需要从多个表或多个数据库提取所需要的数据信息,而进行一些简单select语句查询是无法满足用户需求的,这时就需要涉及到高级查询. 以下都用A.B代表数据库表. 1.内连接查询-内连接使用比较运算符对各个表中的数据进行比较操作,并列出各个表中与条件相匹配的所有数据行. 关键字:INNER JOIN或JOIN (1).等值连接 语句格式:select a * ,b * from A a

【知了堂学习笔记】SQL查询基础语句(单表查询、多表查询)

SQL查询基础 1.单表查询 从数据库中查找数据 专业的称谓又称为投影 基本查询语句结构 select 列 from 表 * 所有列不是所有其他东西 查询所有数据 例:SELECT * FROM t_studen 需要执行比较细的操作  加上条件筛选:查询id为2号的学生信息 SELECT * FROM t_student WHERE id=2; 筛选的执行步骤 例:SELECT * FROM t_student WHERE id=2; SELECT *          (3) 再查询  筛选

一个MySQL 单表查询SQL,引起一次“故事”

一.描述故事的过程是这个样子的,MySQL 数据库有一张40多G的大表,开发人员执行了一个单表查询,结果我就收到了一个磁盘空间满的告警.一下子就不淡定了,谁在搞事情,脑海里各种可能行想了一遍,想到的最多的就是ibtmp1爆了,第一时间线上看一下,查到了最大的那个文件,结果和想的一样.这里我们要看SQL是怎么写的,表结构是什么样子,然后和官网对比,MySQL在查询的时候有很多可能会使用磁盘临时表,包括表连接.排序.大字段等等. 二.解决方法临时解决方法:1.临时扩一下硬盘2.直接重启 终结解决方案

python 之 Django框架(orm单表查询、orm多表查询、聚合查询、分组查询、F查询、 Q查询、事务、Django ORM执行原生SQL)

12.329 orm单表查询 import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "orm_demo.settings") import django django.setup() # 启动Django项目 from app01 import models #返回QuerySet对象的方法: r

SQLServer学习笔记&lt;&gt;.基础知识,一些基本命令,单表查询(null top用法,with ties附加属性,over开窗函数),排名函数

Sqlserver基础知识 (1)创建数据库 创建数据库有两种方式,手动创建和编写sql脚本创建,在这里我采用脚本的方式创建一个名称为TSQLFundamentals2008的数据库.脚本如下:   同时往数据库表插入一些数据,用户后续对数据库的sql的练习.在这里有需要的可以下载相应的脚本进行数据库的初始化.我放到百度云上面,请戳 我:http://yun.baidu.com/share/link?shareid=3635107613&uk=2971209779,提供了<Sqlserver

python学习第七十四天:单表查询

单表查询 创建表 创建模型 在models.py中定义类,一个类就是一张表 from django.db import models class Book(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=64) pub_data = models.DateField() price = models.DecimalField(max_digits=5, decima

hibernate学习---单表查询

我们都知道SQL是非常强大的,为什么这么说呢?相信学过数据库原理的同学们都深有体会,SQL语句变化无穷,好毫不夸张的说可以实现任意符合我们需要的数据库操作,既然前面讲到Hibernate非常强大,所以Hibernate也是能够实现SQL的一切数据库操作. 在SQL中,单表查询是最常用的语句,同理Hibernate最常用到的也是查询语句,所以今天就来讲讲Hibernate的单表查询: 今天要将的内容分以下几点: 查询所有 查询结果排序 为查询参数动态赋值 分页查询 模糊查询 唯一性查询 聚合函数查

04 数据库入门学习-单表查询、多表查询、子查询

1.复制表 #创建了一张测试表 mysql>create table test (id int primary key auto_increment,name char(10)); #显示原表结构 mysql> desc test; +-------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+---

MySQL学习9 - 单表查询

一.单表查询的语法 二.关键字的执行优先级(重点) 三.单表查询示例 1.where约束 2.group by分组查询 3.聚合函数 4.HAVING过滤 5.order by查询排序 6.limit 限制查询的记录数 一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二.关键字的执行优先级(重点) 重点中的重点:关键字的执行优先级 from where