1. 查询单价在10到20之间、印刷数量大于5000的“外语”类图书的书名、单价和印刷数量。
select sm,dj,yssl from tsb
where yssl>5000 and lb ='外语'and dj between 10 and 20 题型:常规
2. 查询店名为“王府井书店”的进书情况,列出图书的书名、进书数量及进书日期。
select sm,jssl,jsrq
from dbo.tsb a join dbo.jsb b on a.isbn =b.isbn join dbo.sdb c on b.sdbh=c.sdbh where sddm ='王府井书店'
题型:常规,根据题意,多表连接,1个条件
3.查询地址在“海淀区”的各书店2001年1月1日以后的详细进书情况,列出书店的名称、每次进书的书名、进书日期和进书数量,
要求查询结果按每次进每本书的数量从多到少的顺序排列。
select sddm,sm,jsrq,jssl
from dbo.tsb a join dbo.jsb b on a.isbn =b.isbn join dbo.sdb c on b.sdbh=c.sdbh where dz like '%海淀区%' and jsrq >'2001-01-01' order by jssl desc
题型:常规,多表连接,两个条件,排序
4. 查询哪些类别的图书在“王府井书店”从没有进过,列出图书的类别。
select distinct lb -- from tsb
where lb not in(select lb
from dbo.tsb a join dbo.jsb b on a.isbn =b.isbn join dbo.sdb c on b.sdbh=c.sdbh where sddm ='王府井书店' )
题型:没有型。条件A满足B条件下没有做的事情,三步走
第一步根据题意,要列出的字段,即select语句中需出现的字段,在哪个表中 第二步,满足B条件的select 语句
第三步,A not in (满足B条件的select 语句)
5. 新筹建一个书店,编号为“S111”,书店名为“当代书城”,地址和电话还没有确定,请将此书店信息插入到书店表中。
insert into sdb (sdbh ,sddm ) values('S111','当代书城') 题型:常规,注意对应顺序
6. 将“计算机”类图书的单价高于“计算机”类图书的平均单价超过50元的图书的单价减10元。
update tsb set dj=dj-10 where dj >((select AVG(dj)+50 from tsb
where lb ='计算机'))
题型:常规,往往会加个子查询,update 表名 set 字段=表达式
From 表格 ------------------------可以省略 Where 条件------------------------可以省略
--1. 查询姓“张”和姓“王”的客户的详细信息。 select * from khb where khm like '[张王]%'
题型:常规,可以用字符串left和right函数来做,但还是上面的方法简单。
--2. 查询2008年每个月每个商品的销售总数量,列出月份、商品号和销售总数量,结果按月份和商品号升序排序
select month(xsrq), sph, sum(xssl) from xsb where year(xsrq) = 2008 group by month(xsrq),sph order by month(xsrq),sph 题型:常规
--3. 查询被卖出次数最少的三种商品(包括没有被卖出过的商品,包括并列的情况),列出商品名、类别和进价。
select spm, lb, jj from spb where sph in (
select top 3 with ties a.sph from spb a left join xsb b on a.sph = b.sph group by a.sph
order by count(b.sph) asc)
题型:排序型。子查询,蓝色标记的字段语句,最少词用top,并列用with ties,分组排序,然后列出显示的字段和来自的表,用商品号做和子查询连接字段。
--4. 查询在2008年3月到8月期间没有被卖出过的“电脑”类商品的名称和进价。 select spm, jj from spb where sph not in ( select sph from xsb
where xsrq between '2008/3/1' and '2008/8/31') and lb = '电脑' 题型:没有型
1、显示的字段和来自的表格
2、满足B的条件是:期间 所以 从销售表中提取商品号,条件是满足题中要求的日期 3、用商品号做连接
--5. 查询至少购买了“电视”和“冰箱”两类商品的客户名、购买的商品名和类别。 select distinct khm,spm,lb
from khb a join xsb b on a.khh = b.khh
join spb c on c.sph = b.sph
where a.khh in (
select khh from xsb join spb on xsb.sph = spb.sph where lb = '电视') and a.khh in (
select khh from xsb join spb on xsb.sph = spb.sph where lb = '冰箱') 题型:至少型。
步骤:第一步,列出要显示的字段,判断各自表格,进行连接
第二步,由于列别(lb)不能既是电视,又是冰箱,必须找一个字段来表示,商品号也不行,于是客户号
第三步,两个子句间用and运算,说明既在和又在。
--6. 在客户表中插入一新记录,客户号为“K100”,客户名为“新客户”,积分用默认值。 insert into khb(khh,khm) values('K100','新客户') 题型:常型
--7. 将销售总数量超过1000的商品的进价降低10%。 update spb set jj = jj * 0.9 where sph in (
select sph from xsb group by sph having sum(xssl) > 1000)
题型:常规:修改。往往会加个子查询
--1、查询2006年以后(包括2006年)的投稿情况,显示作者名、期刊名、文章名称和投稿日期。 select zzm,qkm,wzmc,tgrq
from zzb join tgb on zzb.zzh=tgb.zzh join qkb on tgb.qkh=qkb.qkh where tgrq>='2006/1/1' 常规:多表,条件1
--2、查询姓哪个姓的作者最多,列出这个姓氏和姓这个姓氏的作者人数,包含并列的情况。 select top 1 with ties left(zzm,1),count(*) from zzb
group by left(zzm,1) order by count(*) desc
题型:排序型。用top 来做,数量一般用count(*)来做。
--3、查询作者“杨伍华”没有投过稿的核心期刊的名称 select qkm from qkb
where lb='是' and qkh not in (select qkh
from zzb join tgb on zzb.zzh=tgb.zzh where zzm='杨伍华' )
题型:没有型。A在满足B条件没有,子查询。
步骤:第一步:分析A和B,换个句子,哪些核心期刊作者“杨伍华”没有投过稿,列出名称,题中A为核心期刊,qkh和lb是, B为杨伍华。 第二步,题意名称字段和所属表格
第三步,select qkh 满足作者为杨伍华的期刊,类别不在以上的就求得题解
--4、查询“杨伍华”投过稿的期刊的投稿情况,显示期刊号,审稿通过总次数, 版面费总金额(说明:只有审稿结果为\通过\时,作者才需向期刊缴纳相应版面费), --要求只列出投稿次数超过5次(不包括5次)且版面费总金额大于7000的情况。 select tgb.qkh,count(*),sum(bmf) from tgb join qkb on tgb.qkh=qkb.qkh where sgjg='通过' and tgb.qkh in (select qkh
from tgb join zzb on tgb.zzh=zzb.zzh where zzm='杨伍华') group by tgb.qkh
having count(*)>5 and sum(bmf)>7000
题型:多条件综合类型
步骤:第一步:明确要显示的字段以及来自的表格。 第二步:考虑说明的条件
第三步:以期刊号作分组,后面的条件在分组的基础上再设条件 第四步:杨伍华投过稿的期刊号,做一个子查询。
--5、查询全体作者(包括还没有投过稿的作者)的人均投稿次数,列出总投稿次数、总人数和人均投稿次数.
--要求平均投稿次数保存到小数点后2位
select count(tgb.zzh),count(distinct zzb.zzh),
cast(count(tgb.zzh)*1.0/count(distinct zzb.zzh) as numeric(4,2)) from zzb left join tgb on zzb.zzh=tgb.zzh 题型:平均次数型 步骤:第一步:显示字段
第二步:count总投稿表中的次数,count作者表中的人数,有重复,必须用distinct cast(count(tgb.zzh)*1.0/count(distinct zzb.zzh) as numeric(4,2)),类似的条件必须记住。
第三步:作者表左连接投稿表,是因为还有作者没有投过表,也要统计进去。
--6、向投稿表中插入一条记录,作者号为“zz01”,期刊号为“qk02”,文章名称为“地铁限界系统的研究”,
--投稿日期和审稿结果为默认值。 insert into tgb(zzh,qkh,wzmc)
values('zz01','qk02','地铁限界系统的研究')
题型:常规
--7、删除投稿表中2000年以前(包括2000年),期刊名为\哲学研究\中审稿未通过的的投稿记录。
delete from tgb
from tgb join qkb on tgb.qkh=qkb.qkh
where sgjg='未通过' and year(tgrq)<=2000 and qkm='哲学研究'
题型:常规
--1. 查询姓“张”和姓“王”的客户的详细信息。 select * from khb where khm like '[张王]%' 题型:常规
--2. 查询2008年每个月每个商品的销售总数量,列出月份、商品号和销售总数量,结果按月份和商品号升序排序
select month(xsrq), sph, sum(xssl) from xsb where year(xsrq) = 2008 group by month(xsrq),sph order by month(xsrq),sph 题型:常规
--3. 查询被卖出次数最少的三种商品(包括没有被卖出过的商品,包括并列的情况),列出商品名、类别和进价。
select spm, lb, jj from spb where sph in (
select top 3 with ties a.sph from spb a left join xsb b on a.sph = b.sph group by a.sph
order by count(b.sph) asc) 题型:排序型.top
步骤:第一步:考虑显示的字段
第二步: top 3, order by count(sph) asc,spb和xsb 左连接,左边是全部的商品,右边是销售情况。
第三步:用sph做连接。
--4. 查询在2008年3月到8月期间没有被卖出过的“电脑”类商品的名称和进价。 select spm, jj from spb where sph not in ( select sph from xsb
where xsrq between '2008/3/1' and '2008/8/31') and lb = '电脑' 题型:没有型。
步骤:第一步,分析AB。与哪些核心期刊作者“杨伍华”没有投过稿,列出名称相同,哪些“电脑”类商品的名称和进价没有卖出过,列出名称和进价。B为电脑类的商品的名称和进价,A为商品号。
第二步:要显示的字段 第三步:找字段连接。
--5. 查询至少购买了“电视”和“冰箱”两类商品的客户名、购买的商品名和类别。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库SQL重要的常用查询语句在线全文阅读。
相关推荐: