『壹』 速求高手解答sql一道上機練習題
1:select 姓名,單位 from 讀者 where 姓名悉兄 like '李%'
2:select 書名,出版單位 from 圖書庫
3:
select 書兆早名,單價 from 圖書表 where 出版單位='高等教育出版社' order by 單價 desc
4:
select 分類號 from 圖書表 where 價格 between 10 and 20 order by 單位出版社,單價
5:
select * from 書名,作者 from 圖書 where 書名 like '計算機%'
6:
select 讀者.姓名,讀者族陸雀.單位 from 讀者 join 圖書 on 圖書.總編號=讀者.借書證號
太多了!不想寫! 哎!
『貳』 寫SQL語句
以下答案准確無誤:
(1) 在學生情況表中插入一條記錄,其中學號、姓名、性別、聯系方式各欄位對應的值分別是」2001203」,」劉麗麗」,」女」,」89561231」。
insert into 學生情況表(學號,姓名,性別,聯系方式) select '2001203','劉麗麗','女','89561231'
(2) 將學生情況表中劉麗麗的聯系納槐方式修改為84135464。
update 學生情況表 set 聯系方式='84135464' where 姓名='劉麗麗'
(3) 從學生情況表中刪除學生劉麗麗的記錄。
delete from 學生情況表 where 姓名='劉麗麗'
(4) 查詢學生情況表中的所有數據。
select * from 學生情況表
(5) 從學生情況表中查詢所有學生的學號、姓名、聯系方式。
select 學號,姓名,聯系方式洞嘩友 from 學生情況表
(6) 查詢學生情況表中的前10條記錄,記錄按照姓名升序排列。
select top 10 from 學生情況表 order by 姓名
(7) 查詢1985年出生的姓李的同學的姓名。
select * from 學生情況表 where 出生日期='1985' and 姓名 like '李%'
(8) 從學生情況表中查詢計算機1班的所有男同學的記錄。
select * from 學生情況表 where 班級='計算機1班' and 性別='男'
(9) 查詢學生情況表中計算機1班和計算機2班的所有同學的記錄。
select * from 學生情況表 where 班級='計算機1班' or 班級='計算機2班'
(10) 查詢選修了課程的計算機1班的所有同學的姓名。
select * from 學生情況表 where 班級='計算機1班' and exists(select 1 from 學生選課表 where 學號=學生情況表.學號)
(11) 分別從學生情況蘆咐表、課程情況表和學生選課表中查詢學生的姓名、課程名和成績,注意表之間的聯系。
select a.姓名,c.課程名,b.成績 from 學生情況表 a ,學生選課表 b,課程情況表 c
where a.學號=b.學號 and b.課程號=c.課程號
(12) 統計學生情況表中的學生人數。
select count(*) from 學生情況表
『叄』 SQL的練習,求答案!!!
/*創建Moonfox_db資料庫*/
use master
if exists(select * from sysdatabases where name='Moonfox_db')
drop database Moonfox_db
create database Moonfox_db
on
(
name='Moonfox_db_data',
filename='D:\Visual Studio 2008 & Sql server 2005\Sql server\Moonfox_db.mdf',
size=10,
filegrowth=2MB
)
log on
(
name='Moonfox_db_log',
filename='D:\Visual Studio 2008 & Sql server 2005\Sql server\Moonfox_db.ldf',
size=5,
filegrowth=20%
)/*創建Department表*/
use Moonfox_db
if exists(select * from sysobjects where name='Department')
drop table Department
create table Department
(
DID int identity (1,1)primary key,--部門編號,主鍵
Dname nvarchar(20),--部門名稱
Address nvarchar(50),--部門地址
Photo decimal(12,0),--電話
)/*創建Employee表*/
use Moonfox_db
if exists(select * from sysobjects where name='Employee')
drop table Employee
create table Employee
(
EID int identity (1,1)primary key,--職工編號,主鍵
Ename varchar(10),--職工名
Gender nchar(2) check(Gender='男' or Gender='女'),--性別,添加限制
Position nvarchar(10) check(Position='員工' or Position='組長' or Position='經理'),--職務,添加限制
Address nvarchar(50),--家庭地址
DID int,--部門編號,外鍵
foreign key(DID) references Department(DID)--外鍵約束
)
/*創建Care表*/
use Moonfox_db
if exists(select * from sysobjects where name='Care')
drop table Care
create table Care
(
CID int identity (1,1)primary key,--保健卡編號,主鍵
EID int,--職工號,外鍵
foreign key(EID) references Employee(EID),--外鍵約束
CheckDate datetime,--檢查身體日期
PhysicalCondition nvarchar(4) check(PhysicalCondition='一般' or PhysicalCondition='差' or PhysicalCondition='好'),--健康狀況
)
/*創建Care表約束*/
alter table Care
add
constraint DF_CheckDate default(getdate()) for CheckDate--預設,默認凈時間為當前計算機時間 路徑自己修改,試圖自己做,選擇語句自己寫。我該睡覺了,抱歉,你試著在sql server中運行下,我等著休息,也不知道寫的有沒有錯誤,沒時間幫你寫省下的了。不急著用的話我明天幫你寫吧。
『肆』 sql語句相關測試
sql語句相關測試
篇一:SQL語句測試
1、(10分)要求:
選擇受理時間在2008-5-1 到 2008-6-1之間的所有申請人姓氏為「劉」的數據,並把「新受理編號」列表示成當前機器時間的年月和原受理編號年月後的數值組合
格式如下:
受理編號,新受理編號,受理時間, 申請人
200801112 201008112 2008-01-13劉XX
需要的表
I_Optinst 業務實例表
REGDATE(受理日期)
Regnum(受理編號)
Proposer(申請人)
解答:select Regnum as 受理編號, as 新受理編號,REGDATE as 受理時間,Proposer as申請人 from Optinst 2、(15分)要求:
前提:只統計業務小類「存量房買賣」
①按照月份分12月列出2008年每個月份的月份對應月份的交易總面積
②按照月份分12月列出2008年每個月份的月份對應月份的交易均價(申報價格/建築面積)
格式
年度月份 交易總面積 年度月份交易均價(元/平方米)
2008-01 23232 2008-01 2323
2008-02 23232008-02 232
2008-03 232323 2008-03 7656
2008-04 232323 2008-03 565
2008-05 232323 2008-03 5656
2008-06 232323 2008-03 565
2008-07 232323 2008-03 67
2008-08 232323 2008-03 676
2008-09 232323 2008-03 6767
2008-10 232323 2008-03 8686
2008-11 232323 2008-03 867
2008-12 232323 2008-03 454
需要的表:
Fc_room 房間表
BAREA(建築面積)
I_Optinst業務實例表
regdate(受理時間)
fc_owner 產權表
COSTVAL(申報價格)
EVLVAL(評估價格)
fc_owoom 房間明細表
1.select regdate as年度月份,BAREA as 交易總面積 from Fc_room,Optinst where
3、(20分)要求:
①:按照時間統計收費明細 統計格式如下
受理編號繳費人收費日期 收費名稱收費金額核費人收費人
②:按照時間匯總(2008年度)統計收費項目分類 統計格式如下
收費名稱 總金額
需要的表:
I_OptInst(業務實例表)
Regnum 受理編號
Proposer 申請人
I_Charge(收費實例表)
HEFEIMAN 核費人
PAYEE 收款人
CDATE 收費日期
I_ChrDtl(收費實例明細表
CNAME 收費名稱
MONEY 收費金額
4、(15分)要求:用途是住宅並且建築面積<=140>140 定義為 「非普通住宅」
用途是商業並且建築面積>140 定義為 「商業A級」
其他情況定義為「非住宅」
根據用途和面積列表出所有數據
格式
受理編號, 用途
200406000386 普通住宅
200406004631 非普通住宅
200406004633 普通住宅
200406004638 普通住宅
200406004641 非住宅
200501000004 普通住宅
200406004568 非住宅
200406005677 商業A級
表:
fc_room
barea 建築面積
BUse 用途
i_optinst
regnum 受理編號
5、(30分)工作量統計
① 選擇出以下格式的數據;並創建視圖名稱為view_AAAA
業務小類業務實例 交易價格建築面積 登記時間
1 存量房買賣 14100 19400.0029.98 2005-11-10 11:32:50 2 新建商品房 15041 229530.00 124.07 2005-11-21 08:59:36 3 新建商品房 15043 177363.00 101.35 2005-11-21 09:15:59 4 新建商品房 13046 71130.0023.71 2005-11-02 10:15:37 5 新建商品房 11280 148563.00 87.39 2005-10-11 09:50:48 6 新建商品房 11353 267369.00 116.04 2005-10-11 15:34:53 7 房改售房 2689 35.22 2004-06-17 08:43:00 8 產權人名稱變更 11701 724.18 2005-10-17 10:05:20 9 新建商品房 7206 158257.00 88.69 2005-09-16 14:50:57 10 存量房買賣 (轉 載於:wWw.cnboThwiN.cOM 博 威範文 網: sql語句測試 )10100 103.07 2005-08-31 20:27:06 11 存量房買賣 12980 51500.0046.66 2005-11-01 14:41:32 12 新建商品房 13000 136782.00 80.46 2005-11-01 15:37:05 13 新建商品房 16946 300844.00 146.33 2005-12-15 14:15:07 14 存量房買賣 10091 509.18 2005-08-31 19:19:25 ② 使用視圖 view_AAAA 當做表 選擇出如下樣式數據
業務小類 件數合計金額 合計面積
1 用途變更 1151.3
2 轉移登記 184.03
3 新建商品房 31 263243643197.34
4 房改售房 8252.43
5 產權人名稱變更 3 778.6
6 單位產新建 311697.49
7 贈與 1 28.48
8 存量房買賣 24 4379004134.67
9 判決仲裁 2 439.41
10 繼承遺贈 1 49.17
11 換證 2 228.88
12 新建房屋 17 928.91
③ 用水晶報表關聯視圖 view_AAAA 設計出類似於②的數據格式 需要的表
FC_Owner
EvlVal交易價格
I_OptInst,
SOName 業務小類
fc_owoom,
BArea 建築面積
FC_Room
regdate 受理日期
篇二:sql查詢語句學習測試答案
第一部分SQL查詢語句的學習
單表查詢 1、--查詢訂購日期在1996年7月1日至1996年7月15日之間的訂單的訂購日期、訂單ID、客戶ID和雇員ID等欄位的值
use eee
SELECT 訂購日期,訂單ID,客戶ID,
雇員ID
FROM 訂單
WHERE 訂購日期BETWEEN '1996-7-1 00:00:00' AND '1996-7-15 23:59:59'
2、--查詢「Northwind」示例資料庫中供應商的ID、公司名稱、地區、城市和電話欄位的值。條件是「地區等於華北」並且「聯系人頭銜等於銷售代表」。
use eee
SELECT 供應商ID,公司名稱,地區,城市,電話
FROM 供應商
WHERE 地區='華北' AND 聯系人職務='銷售代表'
3、--查詢「Northwind」示例資料庫中供應商的ID、公司名稱、地區、城市和電話欄位的值。其中的一些供應商位於華東或華南地區,另外一些供應商所在的城市是天津 use eee
SELECT 供應商ID,公司名稱,地區,城市,電話
FROM 供應商
WHERE 地區IN('華東', '華南') OR 城市='天津'
4、--查詢「Northwind」示例資料庫中位於「華東」或「華南」地區的供應商的ID、公司名稱、地區、城市和電話欄位的值
use eee
SELECT 供應商ID,公司名稱,地區,城市,電話
FROM 供應商
WHERE 地區IN('華東', '華南')
多表查詢 5、--查詢訂購日期在1996年7月1日至1996年7月15日之間的訂單的訂購日期、訂單ID、相應訂單的客戶公司名稱、負責訂單的雇員的姓氏和名字等欄位的值,並將查詢結果按雇員的「姓氏」和「名字」欄位的升序排列,「姓氏」和「名字」值相同的記錄按「訂單 ID」的降序排列
use eee
SELECT 訂購日期,訂單ID,公司名稱,姓氏,名字
FROM 訂單,雇員,客戶
WHERE 訂購日期BETWEEN '1996-7-1 00:00:00' AND '1996-7-15 23:59:59'
AND 訂單.雇員ID = 雇員.雇員ID
AND 訂單.客戶ID = 客戶.客戶ID
ORDER BY 姓氏,名字ASC,訂單ID DESC
6、--查詢「10248」和「10254」號訂單的訂單ID、運貨商的公司名稱、訂單上所訂購的產品的名稱
use eee
SELECT 訂單.訂單ID,公司名稱,產品名稱
FROM 訂單,運貨商,產品,訂單明細
WHERE 訂單.訂單ID IN('10248','10254')
AND 訂單.訂單ID = 訂單明細.訂單ID
AND 訂單明細.產品ID = 產品.產品ID
AND
訂單.運貨商= 運貨商.運貨商ID
7、--查詢「10248」和「10254」號訂單的訂單ID、訂單上所訂購的產品的名稱、數量、單價和折扣
use eee
SELECT 訂單.訂單ID,產品名稱,數量,訂單明細.單價,折扣
FROM 訂單,產品,訂單明細
WHERE 訂單.訂單ID IN('10248','10254')
AND 訂單.訂單ID = 訂單明細.訂單ID
AND 訂單明細.產品ID = 產品.產品ID
篇三:sql語句練習題及答案
一 在資料庫 school 中建立student , sc, course 表。
學生表、課程表、選課表屬於資料庫 School ,其各自的數據結構如下:
學生 Student (Sno,Sname,Ssex,Sage,Sdept)
課程表 course(Cno,Cname,Cpno,Ccredit)
學生選課 SC(Sno,Cno,Grade)
二 設定主碼
1 Student表的主碼:sno2 Course表的主碼:cno 3 Sc表的主碼:sno,cno
1寫出使用 Create Table 語句創建表 student , sc, course 的SQL語句
2
3 刪除student表中的元組
4在資料庫school中刪除關系student
5在student表添加屬性sbirthdate 類型 datetime
Delete
1 刪除所有 JSJ 系的男生 from Student where Sdept=』JSJ』 and Ssex=』男』; 2 刪除「資料庫原理」的課的選課紀錄
from SC where Cno in (select Cno fromCourse where Cname=』資料庫原理』);
Update
1 修改 0001 學生的系科為: JSJ
2 把陳小明的年齡加1歲,性別改為女。 2 修改李文慶的1001課程的成績為 93 分 3 把「資料庫原理」課的成績減去1分
Select 查詢語句
一 單表
1查詢年齡在19至21歲之間的女生的學號,姓名,年齡,按年齡從大到小排列。 2查詢姓名中第2個字為「明」字的學生學號、性別。 3查詢 1001課程沒有成績的學生學號、課程號
4查詢JSJ 、SX、WL 系的年齡大於25歲的學生學號,姓名,結果按系排列 5按10分制查詢學生的sno,cno,10分製成績
(1-10分 為1 ,11-20分為2 ,30-39分為3,。。。90-100為10) 6查詢 student 表中的學生共分布在那幾個系中。(distinct) 7查詢0001號學生1001,1002課程的成績。
二 統計
1查詢姓名中有「明」字的學生人數。 2計算『JSJ』系的平均年齡及最大年齡。 3查詢學生中姓名為張明、趙英的人數
4計算每一門課的總分、平均分,最高分、最低分,按平均分由高到低排列 5 計算 1001,1002 課程的'平均分。
6 查詢平均分大於80分的學生學號及平均分 7 統計選修課程超過 2 門的學生學號
8 統計有10位成績大於85分以上的課程號。 9 統計平均分不及格的學生學號
10 統計有大於兩門課不及格的學生學號
三 連接
1查詢 JSJ 系的學生選修的課程號
2查詢選修1002 課程的學生的學生姓名 (不用嵌套及嵌套2種方法) 3查詢資料庫原理不及格的學生學號及成績
4查詢選修「資料庫原理」課且成績 80 以上的學生姓名(不用嵌套及嵌套2種方法) 5查詢平均分不及格的學生的學號,姓名,平均分。 6查詢女學生平均分高於75分的學生姓名。
7查詢男學生學號、姓名、課程號、成績。(一門課程也沒有選修的男學生也要列出,不能
四 嵌套、相關及其他
1 查詢平均分不及格的學生人數
2 查詢沒有選修1002 課程的學生的學生姓名
3 查詢平均分最高的學生學號及平均分 (2種方法 TOP , any , all) *4 查詢沒有選修1001,1002課程的學生姓名。
5 查詢1002課程第一名的學生學號(2種方法) 6 查詢平均分前三名的學生學號
7 查詢 JSJ 系的學生與年齡不大於19歲的學生的差集
8 查詢1001號課程大於90分的學生學號、姓名及平均分大於85分的學生學號、姓名 9 查詢每門課程成績都高於該門課程平均分的學生學號 10 查詢大於本系科平均年齡的學生姓名
答案
參考答案
1 create table student (sno6), sname var8), ssex2), sagesmallint, sdept var15), primary key(sno));
create table sc
(sno6), cno 4),
grade decimal(12,2), primary key(sno,cno));
into student
values( 』4001』,』趙茵』,』男』,20,』SX』)
from student
student
alter table student add sbirthdate datetime
1 select sno, sname, sage from student
where ssex=』女』 and sage between 19 and 21order by sage desc; 2 select sno, ssexfrom student
where sname like 』_明% 』 ; 3 select sno, cnofrom sc
where grade is null and cno=』1001』 ; 4 select sno, sname from student
where sdept in (』JSJ』,』SX』,』WL』) and sage>25 group by sdept;
select sno, cno, grade/10.0+1 as levelfrom sc ;
select distinct sdept from student ; select grade from sc
where sno=』0001』 and (cno=』1001』 or cno=』1002』) ;
select count(*) from student where sname like 』%明% 』 ; select avg(sage),max(sage) from student where sdept=』JSJ』 ; select cno,sum(grade),avg(grade),max(grade),min(grade) from sc group by cno
order by avg(grade) desc ;
select cno, avg(grade) from sc where cno in(『1001』,』1002』) group by cno ;
select sc.sno ,avg(grade) from scgroup by sc.sno
having avg(grade)>80 ;
select sno from sc group by sno having count(*)>2 ;
select cno from sc where grade>85 group by cno having count(*)=10 ; select sno from sc group by sno having avg(grade)<60 ;
select sno from sc where grade<60 group="" by="" sno="" having="">2 ;
select cno from student,sc where student.sno=sc.sno and sdept=』JSJ』 ; a:select sname from student,sc where student.sno=sc.sno and cno=』1002』
b:select sname from student where sno in (select sno from sc where cno=』1002』)
select sno,grade from sc,course
where sc.cno=course.cno and cname=』資料庫原理』 and grade<60 a:select sname from student ,sc,course
where student.sno=sc.sno and sc.cno=course.cno and grade>80 and cname=』 資料庫原理』 b:select sname from student where sno in (select sno from sc where grade>80 and cno in (select cno from course where cname=』 資料庫原理』)) select sno,sname,avg(grade) from sc,studentwhere student.sno=sc.snogroup by student.sno having avg(grade)<60
a:select sname from student where ssex=』女』 and sno in(select sno from sc group by sno having avg(grade)>75)
b:select sname from sc,student where student.sno=sc.sno and ssex=』女』group by student.sno having avg(grade)>75
select student.sno,sname,cno,grade from student left join sc on student.sno=sc.sno and ssex=』男』
select count(*) from student where sno in( select sno from sc group by sno havingavg(grade)<60)
select sname from student where sno not in(select sno from sc where cno=』1002』)
student
0001 aaX 0002 bb
0003 ccX Sc
0001 1001 0001 1002 0002 1001 0003 1002
Select sname from student where not exists(select* from sc where cno=』1002』 and sc.sno=student.sno)
a:select top 1 sno,avg(grade) from sc group by sno order by avg(grade) desc b:select sno, avg(grade) from sc group by sno
having avg(grade)=(select top 1 avg(grade) from scgroup by sno order by avg(grade) desc) c:select sno, avg(grade) from sc group by sno
having avg(grade)>=all ( select avg(grade) from sc group by sno)
select sname from student where not exists(
select * from course where cno in(『1001』,』1002』) and
not exists(select * from sc where sno =student.sno and cno=course.cno) ) a:select top 1 sno from sc cno=』1002』 order by grade desc b:select sno from sc where cno=』1002』 and grade >=all (
;『伍』 sql 資料庫習題謝謝
1. select '類別為:'+tushuleibie 圖書分類 from T_Book
2. select shuming 書名,zuozhe 作者,jiage*0.7 價格 from T_Book where chubanshe ='機械工業出版社'
3. select shuming 書名,zuozhe 作者,jiage 價格, chubanshe 出版社 from T_Book where jiage between 30 and 60
4. select top 3 shuming 書名,zuozhe 作者,chubanshe 出版社, jiage 價格 from T_Book order by jiage desc
6.select chubanshe 出版社,AVG(jaige) 平均價,MAX(jiage) 最高價 ,MIN(jaige) 最低價 from T_Book group by chubanshe order by SUM(jiage) desc
10.select top 1 chubanshe 出版社, count(*) 出版圖書個數 from T_Book group by chubanshe order by COUNT(*) desc
book表的做好了 reader的自己做吧 欄位名我用拼音做代替的 你自己替換成你表中的欄位
『陸』 SQL、關系代數練習
一、
--1.建立學生表Student,其中以學號為主碼,以系號為外碼,姓名不可以為空值,性別取值為「男」或「女」
CREATETABLEStudent
(
Sno INT,
Name VARCHAR(20) NOTNULL,
Gender CHAR(2),
Class VARCHAR(20),
Major VARCHAR(20),
Dno CHAR(2)
CONSTRAINTpk_Student_SnoPRIMARYKEY(Sno),
CONSTRAINTfk_Student_DnoFOREIGNKEY(Dno)REFERENCESDept(Dno),
CONSTRAINTchk_Student_GenderCHECK(GenderIN('男','女'))
)
--2.檢索與「王強」在同一個班級的學生的學號、姓名、性別
SELECTSno,Name,Gender
FROMStudent
WHEREClass=(='王強')
--3.檢索管理學院沒有選修「電子商務」課程的學生的學號、姓名、班級、專業
SELECTS1.Sno,Name,Class,Major
FROMStudentS1
JOINDeptD
ONS1.Dno=D.Dno
WHEREDname='管理學院'
ANDSnoNOTIN
( SELECTS2.SnoFROMStudyS2
JOINCourseC
ONS2.Cno=C.Cno
WHERESubject='電子商務')
--4.檢索選修了「C語言」且C語言考試成績高於這門課平均成績的學生的學號、姓名
SELECTS1.Sno,Name
FROMStudentS1
JOINStudyS2
ONS1.Sno=S2.Sno
JOINCourseC1
ONS2.Cno=C1.Cno
WHERESubject='C語言'
ANDScore>( SELECTAVG(Score)
FROMStudyS3
WHERES3.Cno=S2.Cno)
--5.在院系表(Dept)中插入一條記錄,系號為06,系名為「物理系」,電話為8470660
INSERTINTODempVALUES('06','物理系','84706600')
--6.將「資料庫原理」課程的學時改為64,學分改為4
UPDATECourse
SETTime=64,
Credit=4
WHERESubject='資料庫原理'
--7.建立由班級、學號、姓名、課程號、課程名、學分、成績七個數據項組成的視圖
CREATEVIEWVW_SC
AS
SELECTClass,Sno,Name,Cno,Subject,Credit,Score
FROMStudentS1
JOINStudyS2
ONS1.Sno=S2.Sno
JOINCourseC
ONS2.Cno=C.Cno
二、
2.