當前位置:首頁 » 編程語言 » sql考試題

sql考試題

發布時間: 2022-05-23 10:30:14

㈠ 求解 sql server 2000 考試試題

1.一名學生可以選修多個科目,一個科目可以被多個學生選修,這種關系是
D.
A.一對一
B.一對多
C.多對一
D.多對多
2.現階段處於數據處理技術的哪個階段?
d
A.人工管理
B.文件管理
C.資料庫系統
D.資料庫系統管理
3.NULL是指
b
A.
0
B.

C.
不確定
D.
無意義
4.
向表中插入一條記錄使用(
b
)語句。
A.
select
B.
insert
C.
create
D.
update
5.
如要查找姓李的同學,應使用(
c
)通配符。
A.
*
B.
_
C.
%
D.
^
6.
SELECT語句中與HAVING子句通常同時使用的是(
c
)子句。
A.ORDER
BY
B.WHERE
C.GROUP
BY
D.無需配合
7.
SQL
Server2000是一個(
c
)的資料庫系統
A.網狀型
B.層次型
C.關系型
D.以上都不是
8.假設「產品」表中有「產品ID」,「產品名稱」,「價格」此三個欄位,要在此表裡添加一條新記錄,下列SQL語句能實現添加功能的是
c
A.
UPDATE
INSERT
產品
VALUES('01008','花生','20');
B.
INSERT
產品
VALUES(01008,花生,20);
C.
INSERT
INTO
產品
VALUES('01008','花生','20');
D.
INSERT
*
FROM
產品
VALUES('01008','花生','20');
9.
用於刪除表中所有數據行的命令是
c
A.DELETE
TABLE
表名
B.TRUNCATE
TABLE
表名
C.DROP
TABLE
表名
D.ALTER
TABLE
表名
10.
SQL
Server
2000提供了一整套管理工具和實用程序,其中負責啟動、暫停和停止SQL
Server的4種服務的是
d
A.企業管理器
B.導入和導出數據
C.事件探察器
D.服務管理器
1.
在SQL中,用___update
_命令可以修改表中的數據,用__alter__命令可以修改表的結構。
2.
刪除表命令是:_____drop______。
3.
資料庫系統的特點分別是數據的結構化、數據的共享性高、冗餘度低、易於擴充
、數據獨立性和
數據由DBMS統一管理和控制

4.
在資料庫的表中,
主鍵
是指表中的某一列,該列的值唯一標識一行。
5.
SQL
Server中索引類型包括的三種類型分別是_聚集____、__費聚集____和___唯一___。
6.
SQL
Server
2000的文件包括:
數據文件(.mdf或.ndf)和
ldf

1.數據的概念及種類:
所謂數據,通常指用符號記錄下來的可加以鑒別的信息。例如,為了描述黑板的信息,可以用一組數據「黑色、矩形、3.2m×1.4m」來表示,由於「黑色」、「矩形」、「3.2」、「m」……這些符號已經被人們賦予了特定的語義,所以它們就具有了傳遞信息功能。
2.數據的特點:
數據是信息的符號表示或稱為載體,信息則是數據的內涵,是對數據的語義解釋。但另一方面,某一具體信息與表示它的數據的這種對應關系又因環境而異。同一信息可能有不同的符號表示,同一數據也可能有不同的解釋。數據處理領域中的數據概念較之科學計算領域中數據概念已經大大地拓寬了。定義中所說的符號,不僅包含數字元號,而且包含文字、圖像和其他符號;而所謂「記錄下來」也不僅是指用筆寫在紙上,還包括磁記錄、光刻等各種記錄形式。
3.資料庫的概念:
資料庫這個名詞起源於20世紀50年代,當時美國為了戰爭的需要,把各種情報集中在一起,存入計算機,稱為Information
Base或Database。1963年美國Honeywell公司的IDS(Integrated
Data
Store)系統投入運行,揭開了資料庫技術的序幕。1965年美國利用資料庫幫助設計了阿波羅登月火箭,推動了資料庫技術的產生。當時社會上產生了許多行行色色的Database或Databank,但基本上都是文件系統的擴充。1968年美國IBM公司推出了層次模型的IMS資料庫系統,並於1969年形成產品;1969年,提出了COBOL語言的美國CODASYL(Conference
on
Date
System
Language,數據系統語言協會)組織的資料庫任務組(DBTG)發表了網狀資料庫系統的標准文本(1971年正式通過);1970年初,IBM公司的高級研究員E.F.Codd發表論文提出了關系模型,奠定了關系資料庫的理論基礎
4.列舉創建資料庫的方法:
1)create
database
資料庫名()
2)在企業管理器中,選擇資料庫,點新建資料庫就,填寫名稱,選擇路徑,確定就可以了。
1.
顯示雇員表中所有信息。
select
*
from
employ(雇員表)
2.
顯示雇員表中的雇員ID和姓名列的內容。
select
雇員ID,姓名
from
employ
3.
在雇員表中使用英文employeeid代替雇員ID,用name代替姓名顯示列標題。
select
雇員ID
as
employeeid
,姓名
as
name
from
employ
4.
在雇員表中消除「職務」列中的重復行。
select
distinct
職務
from
employ
5.
獲得雇員表中職務為銷售代表的人的雇員ID和姓名。
select
雇員id,姓名
from
employ
where
職務=』銷售『
6.
獲得雇員ID大於等於4的所有職員的雇員ID,姓名和職務。
select
雇員ID,姓名,職務
from
employ
where
雇員ID>=4
7.
從產品表獲得單價大於5美元的所有產品名稱,匯率為1人民幣兌換0.125美元。
select
*
from
proct
(產品表)
where
單價>5
and
匯率=0.125
8.
產品表中獲得單價在30~40之間的所有產品的單價,產品名稱和庫存量。
select
單價,產品名稱,庫存量
from
產品表
where
單價>30
and
單價<40
9.
查找雇員表中姓「張」的雇員的所有列信息。
select
*
from
employ(雇員表)
where
姓名
like
'張%'
10.
查找雇員表中姓名的第二個字為「雪」的雇員的所有列信息。
select
*
from
client
where
adress
like
'_雪%'

㈡ 求助SQL考試題。。明天早上就考了 今晚要交

1.select 書名,出版社 from 圖書 where 20=<價格=<50 order by 價格 desc
2.select distinct a.書號 as 圖書種類 ,a.操作員帳號 from 借出 a,操作員 b where a.操作員帳號=(select b.操作員帳號 from 操作員 where 操作員姓名='李凡')
3.select 書名,出版社 from 圖書 where 書名 like '%資料庫%' or 書名 like '%SQL%'
4.delete from 課程 where 課程編號 in ( '20016','20018','20019')
5.insert into 教師 (教師編號,姓名,所在部門,職稱) values (60016,王力,,講師)
6.select a.生產廠家,count(b.商品編號) as 商品種類 from 商品 b,(select distinct 生產廠家 from 商品) as a where a.生產廠家=b.生產廠家 group by a.生產廠家

㈢ SQL資料庫練習題

1.DISTINCT、top
2.convert
3.查詢、更新、管理
4.主鍵、外鍵
5.ROLLBACK TRAN、COMMIT TRAN
6.sp_renamedb
8.identity
9.插入數據的列數必須和表中列數相等
10.空
12.truncate
14.原子性、一致性、隔離性、永久性
16.count、avg、len、substring
17.cast
18.windows
19.物理數據表
20.<>、!=

㈣ sql筆試題

兩個表第一個store(store_id,city,space)
第二個employee(store_id,emp_id,salary)
1、每家店的平均工資
select t1.store_id,AVG(salary) from store t1 inner join employee t2 on t1.store_id=t2.store_di
group by t1.store_id

2、每個城市的平均工資
select t1.city,AVG(salary) from store t1 inner join employee t2 on t1.store_id=t2.store_di
group by t1.city
3、查找該城市存在員工工資低於1000的城市信息
select distinct t1.city
from store t1 inner join employee t2 on t1.store_id=t2.store_id
where t2.salary<1000

4、查找城市其職工工資有低於1000的該城市職工平均工資
select t1.city,avg(t2.salary)
from store t1 inner join employee t2 on t1.store_id=t2.store_id
where exists(select * from employee t3
where t1.store_id=t3.store_id and t3.salary<1000)
group by t1.city

其他的自己看吧,比較簡單
5、每個城市工資最高的員工信息
select t2.city,t1.* from employee t1 inner join store t2 on t1.store_id=t2.store_id
where exists(
select * from (
select t1.city,max(salary) from store t1 inner join employee t2 on t1.store_id=t2.store_di
group by t1.city) tt where t1.city=tt.city and t2.salary=tt.salary)
6、查詢每個城市的員工總工資,總的店面面積(?),門店的數量,員工數量,最高/最低工資數

㈤ 求sql資料庫考試題答案

1.create database Readbook
on
(name=Readbook_data,filename='D:\server\Readbook_data.mdf',size=2mb,maxsize=10mb,filegrowth=1mb)
log on
(
name=Readbook_log,
filename='D:\server\Readbook_log.ldf',size=1mb,maxsize=5mb,filegrowth=1mb
)
go
2.use mybase
go
alter database mybase
add log file
(
name=Readbook2_log,
filename='D:\server\mybase2_log.ldf',size=2mb,maxsize=10mb,filegrowth=1mb
)
go
3.alter database mybase
remove file Readbook2_log

㈥ sql語句 面試題

A.創建表格CODE省略

註明:學生表PK stu_id 課程表pk cos_id 分數表PK enrollment_id FK stu_id,cos_id

B.插入數據code省略

C.Query

  1. select s.stu_id,stu_name,count(cos_id) from student s,enrollments e where s.stu_id = e.stu_id and e.grade>60 group by s.stu_id,stu_name;

  2. select e.stu_id,s.stu_name,c.cos_name from student s,enrollments e,course c

    where s.stu_id = e.stu_id

    and e.cos_id = c.cos_id

    and c.cos_name = 'CHINESE'

    and s.stu_name like 'W%';

  3. select stu_id,stu_name from (select e.stu_id,stu_name,cos_name from enrollments e,student s,course c

    where s.stu_id = e.stu_id

    and e.cos_id = c.cos_id

    and c.cos_name IN ('CHINESE','MUSIC'))

    group by stu_id,stu_name

    having count(cos_name) = 2

  4. select distinct e.cos_id,c.cos_name,count(e.stu_id) stu_count,count(e.stu_id)-NVL(A.FAIL,0) upscore,(count(e.stu_id)-NVL(A.FAIL,0))/count(e.stu_id) rate from

    (select cos_id,count(stu_id) fail from enrollments where grade<60 group by cos_id) a,enrollments e,course c

    where e.cos_id = a.cos_id(+)

    and e.cos_id = c.cos_id

    group by e.cos_id,NVL(a.fail,0),c.cos_name;

  5. update student

    set avg_grade =(select avg(grade) X from enrollments group by stu_id

    having student.stu_id = enrollments.stu_id);

  6. select stu_id,avg(grade) from

    (select stu_id,cos_id,grade,row_number() over(partition by stu_id order by grade ) X from enrollments)

    group by stu_id

    having count(*)<=2

    UNION

    select A.stu_id,avg(A.grade)from

    (select stu_id,cos_id,grade,row_number() over(partition by stu_id order by grade ) X from enrollments) A,

    (select stu_id,count(*) c from

    (select stu_id,cos_id,grade,row_number() over(partition by stu_id order by grade ) X from enrollments)

    group by stu_id) B

    where A.stu_id = B.stu_id

    and A.x>1 and x<B.c

    group by A.stu_id,b.c

_________________________________________________

環境:oracle 10g/TOAD 以上代碼均通過測試,如有問題,請聯系,謝謝

㈦ SQL測試題(註:最佳答案必須能在MySQL下運行)

/*
閑著沒事,瞅瞅網路上的問題,今天天晚了,先解決一個,另一個明兒個再說了!
第二道題也算已經搞定了!
環境 : mysql Ver 14.12 Distrib 5.0.45, for Win32 (ia32)
參考 :
exist與in 的區別
http://blog.csdn.net/change888/archive/2008/03/31/2232778.aspx
*/
/*********************************問題 1 **************************************/

drop table if exists s;
create table if not exists s (s varchar(32), sn varchar(32), sd varchar(32),
sa int);
insert into s values ('s1', '朱', '開發本部', 23);
insert into s values ('s2', '牛', '人事部', 25);
insert into s values ('s3', '楊', '財務部', 26);
insert into s values ('s4', '馬', '開發本部', 22);
insert into s values ('s5', '呂', '人事部', 27);
insert into s values ('s6', '於', '開發本部', 28);
insert into s values ('s7', '侯', '開發本部', 28);

drop table if exists c;
create table if not exists c (c varchar(32), cn varchar(32));
insert into c values ('c1', '軟體工程');
insert into c values ('c2', '計算機技術與科學');
insert into c values ('c3', '車輛工程');

drop table if exists sc;
create table if not exists sc (s varchar(32), c varchar(32));
insert into sc values ('s1', 'c1');
insert into sc values ('s1', 'c2');
insert into sc values ('s1', 'c3');
insert into sc values ('s2', 'c1');
insert into sc values ('s2', 'c3');
insert into sc values ('s3', 'c2');
insert into sc values ('s4', 'c2');
insert into sc values ('s4', 'c3');
insert into sc values ('s5', 'c1');
insert into sc values ('s6', 'c3');

/* 1. 查詢選修課程名稱為 「軟體工程」 的學員學號和姓名 */
select s.s '學號', s.sn '姓名' from s where s.s in
(select sc.s from sc where sc.c in
(select c.c from c where c.cn = '軟體工程'));

/* 2. 查詢選修課程編號為 「C2」 的學員姓名和所屬單位 */
select s.sn '姓名', s.sd '所屬單位' from s where s.s in
(select sc.s from sc where sc.c = 'C2');

/* 3. 查詢選修課程編號 不 為 「C2」 的學員姓名和所屬單位 */
select s.sn '姓名', s.sd '所屬單位' from s where
s.s not in (select sc.s from sc where sc.c = 'C2')
and
s.s in (select sc.s from sc);

/* 4. 查詢選修全部課程的學員姓名和所屬單位 */
select s.sn '姓名', s.sd '所屬單位' from s where
(select count(DISTINCT sc.c) from sc where sc.s = s.s)
=
(select count(DISTINCT c.c) from c );

/* 5. 查詢選修了課程的學員人數 */
select count(DISTINCT sc.s) '人數' from sc;

/* 6. 查詢選修課程 >= 2 門的學員學號和所屬單位 (不得不用 CASE 語句了)*/
select s.sn '姓名', s.sd '所屬單位' from s where s.s in
(select CASE WHEN count(DISTINCT sc.c) >=2 THEN sc.s END from sc group by sc.s );

/* 運行結果
------------------------------------1
+------+------+
| 學號 | 姓名 |
+------+------+
| s1 | 朱 |
| s2 | 牛 |
| s5 | 呂 |
+------+------+
------------------------------------2
+------+----------+
| 姓名 | 所屬單位 |
+------+----------+
| 朱 | 開發本部 |
| 楊 | 財務部 |
| 馬 | 開發本部 |
+------+----------+
------------------------------------3
+------+----------+
| 姓名 | 所屬單位 |
+------+----------+
| 牛 | 人事部 |
| 呂 | 人事部 |
| 於 | 開發本部 |
+------+----------+
------------------------------------4
+------+----------+
| 姓名 | 所屬單位 |
+------+----------+
| 朱 | 開發本部 |
+------+----------+
------------------------------------5
+------+
| 人數 |
+------+
| 6 |
+------+
------------------------------------6
+------+----------+
| 姓名 | 所屬單位 |
+------+----------+
| 朱 | 開發本部 |
| 牛 | 人事部 |
| 馬 | 開發本部 |
+------+----------+
*/

/*********************************問題 2 **************************************/

drop table if exists s ;
create table if not exists s ( sno varchar(32), sname varchar(32));
insert into s values ('s1', '朱');
insert into s values ('s2', '牛');
insert into s values ('s3', '楊');
insert into s values ('s4', '馬');
insert into s values ('s5', '呂');
insert into s values ('s6', '於');
insert into s values ('s7', '侯');

drop table if exists c;
create table if not exists c ( cno varchar(32), cname varchar(32),
cteacher varchar(32));
insert into c values ('c1', '數學', '張');
insert into c values ('c2', '日語', '李'); /*假設李老師同時教授日語和英語*/
insert into c values ('c3', '英語', '李');

drop table if exists sc;
create table if not exists sc (sno varchar(32), cno varchar(32),
scgrade double);
insert into sc values ('s1', 'c1', 75);
insert into sc values ('s1', 'c2', 70);
insert into sc values ('s1', 'c3', 80);
insert into sc values ('s2', 'c1', 50);
insert into sc values ('s2', 'c3', 40);
insert into sc values ('s3', 'c1', 50);
insert into sc values ('s3', 'c2', 60);
insert into sc values ('s4', 'c1', 90);
insert into sc values ('s4', 'c2', 40);
insert into sc values ('s4', 'c3', 20);
insert into sc values ('s5', 'c1', 80);
insert into sc values ('s6', 'c1', 85);

/* 1. 沒有 選 修過「李」老師講授課程的所有學生姓名 */
select s.sname '姓名' from s where s.sno not in
(select sc.sno from sc where sc.cno in
(select c.cno from c where c.cteacher = '李'));

/* 2. 列出有二門以上(含兩門)不及格課程的學生姓名及其平均成績 */
select s.sname '姓名', AVG(sc.scgrade) '平均成績' from s, sc
where s.sno = sc.sno
and
(select count(sc.sno) from sc where sc.sno = s.sno
and sc.scgrade < 60 ) >= 2
group by s.sno;

/* 3. 列出既學過「C1」號課程,又學過「C2」號課程的所有學生姓名 */
select s.sname '姓名' from s where s.sno in
(select t1.sno from sc t1, sc t2
where t1.sno = t2.sno and t1.cno = 'c1' and t2.cno = 'c2');
/*或者*/
select s.sname '姓名' from s where s.sno in
(select sc.sno from sc where sc.cno = 'c1' and sc.sno in
(select t1.sno from sc t1 where t1.cno = 'c2'));

/* 4. 列出「C1」號課成績比「C2」號同學該門課成績高的所有學生的學號 */
select t1.sno '學號' from sc t1, sc t2
where t1.sno = t2.sno and t1.cno = 'c1'
and t2.cno = 'c2' and t1.scgrade > t2.scgrade;

/* 5. 列出「C1」成績比「C2」成績高的學生的學號及其「C1」和「C2」的成績 */
select t1.sno '學號', t1.scgrade 'C1成績', t2.scgrade 'C2成績' from sc t1, sc t2
where t1.sno = t2.sno and t1.cno = 'c1'
and t2.cno = 'c2' and t1.scgrade > t2.scgrade;

/* 運行結果
------------------------------------1
+------+
| 姓名 |
+------+
| 呂 |
| 於 |
| 侯 |
+------+
------------------------------------2
+------+----------+
| 姓名 | 平均成績 |
+------+----------+
| 牛 | 45 |
| 馬 | 50 |
+------+----------+
------------------------------------3
+------+
| 姓名 |
+------+
| 朱 |
| 楊 |
| 馬 |
+------+
------------------------------------4
+------+
| 學號 |
+------+
| s1 |
| s4 |
+------+
------------------------------------5
+------+--------+--------+
| 學號 | C1成績 | C2成績 |
+------+--------+--------+
| s1 | 75 | 70 |
| s4 | 90 | 40 |
+------+--------+--------+
*/

㈧ 面試題目(sql)

1、忍不住想說一句,因為第一題中的欄位類型是
【日期型】,而各種資料庫操作日期型數據有不同的方法,沒有一種共通的方法,所以脫離了資料庫而言沒有一種共通的sql。
2、select
ID,NAME,ADDRESS,PHONE,LOGDATE
from
T
where
ID
in(
select
ID
from
T
group
by
NAME
having
count(*)>1)
order
by
NAME;
3、delete
from
T
where
ID
not
in
(select
min(id)
from
T
group
by
name);
4、update
T
set
T.ADDRESS=(select
E.ADDRESS
from
E
where
E.NAME=T.NAME),
T.PHONE=(select
E.PHONE
from
E
where
E.NAME=T.NAME);
5、這個不同的資料庫也有不同的處理方法,不能脫離資料庫談了。
如:SqlServer或者access可以使用
top
oracle可以使用
rownum

---
以上,希望對你有所幫助。

㈨ sql面試題,請大神解答,急!!!

第一題,最高的10-20。
1234select*from(selectcolD,colE,dense_rank()over(orderbycolGdesc)asrkfromtableb)whererkbetween10and20--當然面試的話這里可以註明dense_rank和rank區別等等。

第二題,2樓寫的就可以了

第三題,注意題目是人數之和
12345selectcount(*)ascntfromtableBwherecolAin(=傳入idconnectbypriorcolA=colB)

第四題
--測試數據
withtableAas(select1ascolA,0ascolB,'北京',0ascolB,'上海'fromal),tableBas(select1ascolD,'人員1'ascolE,1ascolA,2000ascolG,0ascolHfromalunionallselect2,'人員2',1,2000,0fromalunionallselect3,'人員3',1,2000,0fromalunionallselect4,'人員4',1,2000,0fromalunionallselect5,'人員5',1,2000,1fromalunionallselect6,'人員6',2,2000,1fromalunionallselect7,'人員7',1,2000,1fromal)--查詢sqlselectdecode(t.colH,0,'女','男')asgender,max(decode(t.colC,'北京',t.cnt,0))as北京,max(decode(t.colC,'上海',t.cnt,0))as上海from(selecta.colC,b.colH,count(*).colA=b.colAgroupbycolC,colH)tgroupbyt.colH
這里可以解釋下本sql的思路:--首先查出每個地區不同性別的人數,在行轉列(由於題目很明顯告訴你固定數據)

㈩ SQL 查詢語句期中考試題2

--1.分別查詢學生表和學生修課表中的全部數據。
SELECT * FROM student--查詢學生表
SELECT * FROM course--查詢課程表

--2.查詢成績在70到80分之間的學生的學號、課程號和成績。
SELECT Sno 學號,Cno 課程號,Grade 成績
FROM SC
WHERE Grade BETWEEN 70 AND 80

--3.查詢C01號課程成績最高的分數
SELECT TOP 1 Grade
FROM SC
WHERE Cno='C01'
ORDER BY Grade DESC--降序DESC,升序ASC

--4.查詢學生都選修了哪些課程,要求列出課程號。
SELECT Cname AS 學生選修的課程,Cno AS 課程號
FROM course
WHERE Cno IN(SELECT DISTINCT Cno FROM SC)--DISTINCT用來去除重復

--5.查詢Northwind資料庫中orders表的OrderID、CustomerID和OrderDate,
--並將最新的定購日期(OrderDate)列在前邊。
USE Northwind
GO
SELECT OrderID,CustomerID,OrderDate
FROM orders
ORDER BY OrderDate DESC--降序DESC,升序ASC

--6.查詢Northwind資料庫中orders表的ShipCountry列以B,C,D,F --//ShipCountry BCDF
--開始且第三個字元為"a"的OrderID、CustomerID和ShipCountry的信息。//OrderID、CustomerID第三個字元為"a"
USE Northwind
GO
SELECT OrderID,CustomerID,ShipCountry FROM orders
WHERE ShipCountry LIKE '[BCDF]_a%'--_下劃線表示任意一個字元,%表示一個或多個字元

--7.查詢Northwind資料庫中orders表的ShipCountry列不以A,B,C,D,E,F開始且最後一個字
--母是"a"的OrderID、CustomerID和ShipCountry的信息。
USE Northwind
GO
SELECT OrderID,CustomerID,ShipCountry
FROM orders
WHERE ShipCountry LIKE '[^ABCDEF]%a'

--8.查詢修了C02號課程的所有學生的平均成績、最高成績和最低成績。
SELECT AVG(Grade) 平均成績,MAX(Grade) 最高成績,MIN(Grade) 最低成績
FROM SC
WHERE Cno='C02'

--9.統計每個系的學生人數。
SELECT Sdept 系別,COUNT(*) 人數
FROM student
WHERE Sdept IN(SELECT DISTINCT Sdept FROM student)
GROUP BY Sdept

--10.統計每門課程的修課人數和考試最高分。
SELECT Cname 課程名,COUNT(*) 修課人數,MAX(Grade) 考試最高分
FROM SC,course
WHERE SC.Cno IN(SELECT DISTINCT Cno FROM SC ) AND course.Cno=SC.Cno
GROUP BY course.Cname

--11.統計每個學生的選課門數,並按選課門數的遞增順序顯示結果。
SELECT student.Sname 學生姓名,student.Sno 學生學號,COUNT(SC.Sno) 選課門數
FROM student
inner join SC ON SC.Sno=student.Sno
GROUP BY student.Sname,student.Sno
ORDER BY COUNT(SC.Sno) ASC

--12.統計選修課的學生總數和考試的平均成績。
SELECT COUNT(DISTINCT(Sno)) AS 學生總數,AVG(Grade) AS 平均成績
FROM SC --//用DISTINCT消除重復的行

--13.查詢選課門數超過2門的學生的平均成績和選課門數。
SELECT Student.Sname,AVG(Sc.Grade) 平均成績,COUNT(SC.Sno) 選課門數
FROM SC
--內聯接join或inner join,內聯系是比較運算符,只返回符合條件的行
JOIN Student ON (SC.Sno = Student.Sno)
JOIN Course ON (SC.Cno = Course.Cno)
GROUP BY Student.Sname
HAVING COUNT(distinct Course.Cno) >2--分組條件

--14.列出總成績超過200分的學生,要求列出學號、總成績。
SELECT Sno 學號,SUM(Grade) 總成績
FROM SC
GROUP BY Sno
HAVING SUM(Grade)>200

--15.查詢pubs資料庫的titles表中每類圖書的平均價格超過12.0元的書的類型(Type)、
--平均價格和最高價格。
USE pubs
GO
SELECT Type AS 書的類型,AVG(price) AS 平均價格,MAX(price) AS 最高價格
FROM titles
GROUP BY Type
HAVING AVG(price)>12.0

--16.查詢pubs資料庫的titles表中每類圖書中圖書的數目超過3本的圖書的總價格。
USE pubs
GO
SELECT 圖書類型=Type,圖書的數目=count(Type),圖書的總價格=SUM(price)
FROM titles
GROUP BY Type
HAVING count(Type)>3

--17.查詢選修了c02號課程的學生的姓名和所在系。
SELECT Sname 學生姓名,Sdept 所在系,SC.Cno AS 選修課程
FROM student
inner join SC ON student.Sno=SC.Sno
WHERE SC.Cno='C02'

--18.查詢成績80分以上的學生的姓名、課程號和成績,並按成績的降序排列結果。
SELECT Sname 學生姓名,SC.Cno 課程號,SC.Grade 成績
FROM student
inner join SC ON student.Sno=SC.Sno--內連接表SC查詢
WHERE SC.Grade>80
ORDER BY SC.Grade DESC

--19.查詢計算機系男生修了"資料庫基礎"的學生的姓名、性別、成績。
SELECT Sname 姓名,Ssex 性別,SC.Grade 成績
FROM student
inner join SC ON Cno IN(SELECT Cno FROM course WHERE Cname='資料庫基礎') --顯示成績的條件
AND student.Sno=SC.Sno --顯示成績的學生的學號
WHERE Sdept='計算機系' AND Ssex='男'

--20.查詢哪些學生的年齡相同,要求列出年齡相同的學生的姓名和年齡。
--這題使用到了表的自連接,所以需要給表取兩個別名,如A和B
SELECT A.Sname 年齡相同的學生的姓名,A.Sage 年齡
FROM student A
inner join student B ON A.Sage IN(SELECT Sage FROM student WHERE A.Sage=B.Sage AND A.Sname!=B.Sname)
GROUP BY A.Sname,A.Sage
ORDER BY A.Sage

--21.查詢哪些課程沒有人選,要求列出課程號和課程名。
SELECT Cno AS 課程號,Cname AS 課程名
FROM course
WHERE Cno NOT IN(SELECT DISTINCT SC.Cno FROM SC)

--22.查詢有考試成績的所有學生的姓名、修課名稱及考試成績
--要求將查詢結果放在一張新的永久表(假設新表名為new-sc)中。
SELECT student.Sname AS 有考試成績的學生的姓名,course.Cname AS 修課名稱,SC.Grade AS 考試成績
INTO [new_sc] --將查詢結果放入新表new_sc中
FROM student,course,SC
WHERE SC.Grade IS NOT NULL AND student.Sno=SC.Sno AND course.Cno=SC.Cno

--23.分別查詢信息系和計算機系的學生的姓名、性別、修課名稱、修課成績,
--並要求將這兩個查詢結果合並成一個結果集,
--並以系名、姓名、性別、修課名稱、修課成績的順序顯示各列。
--//此題用到了並union查詢
SELECT Sdept 系名,Sname 姓名,Ssex 性別,course.Cname 修課名稱,SC.Grade 修課成績
FROM student
inner join SC ON student.Sno=SC.Sno
inner join course ON course.Cno=SC.Cno
WHERE Sdept='信息系'
UNION
SELECT Sdept 系名,Sname 姓名,Ssex 性別,course.Cname 修課名稱,SC.Grade 修課成績
FROM student
inner join SC ON student.Sno=SC.Sno
inner join course ON course.Cno=SC.Cno
WHERE Sdept='計算機系'

select sdept, sname,ssex,cname,grade from student,sc,course
where student.sno=sc.sno and sc.cno=course.cno and (sdept='信息系' or sdept='計算機系')

--24.用子查詢實現如下查詢:
--(1) 查詢選修了C01號課程的學生的姓名和所在系。
SELECT Sname AS 選修了C01號課程的學生的姓名,Sdept AS 所在系
FROM student
WHERE Sno IN(SELECT Sno FROM SC WHERE Cno='C01')

--(2) 查詢數學系成績80分以上的學生的學號、姓名。
SELECT Sno AS 數學系成績80分以上的學生的學號,Sname AS 姓名
FROM student
WHERE Sno IN(SELECT Sno FROM SC WHERE Grade>80)
AND Sno IN(SELECT Sno FROM student WHERE Sdept='數學系')

--(3) 查詢計算機系學生所選的課程名.
SELECT Cname AS 計算機系學生所選的課程名
FROM course
WHERE
course.Cno IN(SELECT DISTINCT Cno FROM SC WHERE SC.Sno IN(SELECT Sno FROM student WHERE Sdept='計算機系'))

--25.將計算機系成績高於80分的學生的修課情況插入到另一張表中,分兩種情況實現://////////////?????/
--(1) 在插入數據過程中建表。
--使用SELECT INTO插入數據的方法,是在插入數據的過程中建立新表
SELECT student.Sname AS 學生名字,course.Cname AS 選修課程,SC.Cno AS 課程編號
INTO [SC_Info1]--將計算機系成績高於80分的學生的修課情況插入到表SC_Info1中
FROM student,course,SC
WHERE student.Sdept='計算機系' AND SC.Grade>80 AND course.Cno=SC.Cno AND student.Sno=SC.Sno

--(2) 先建一個新表,然後再插入數據。
--創建表SC_Info2
CREATE TABLE SC_Info2
(
Sname char(7),
Cname char(20),
Cno char(10)
)

--往表SC_info2插入查詢得到的結果
INSERT SC_Info2
SELECT student.Sname AS 學生名字,course.Cname AS 選修課程,SC.Cno AS 課程編號
FROM student,course,SC
WHERE student.Sdept='計算機系' AND SC.Grade>80 AND course.Cno=SC.Cno AND student.Sno=SC.Sno

--26.刪除修課成績小於50分的學生的修課記錄
DELETE SC WHERE Grade<50 OR Grade IS NULL

--27.將所有選修了"c01"課程的學生的成績加10分。
UPDATE SC
SET Grade=Grade+10
WHERE Cno='C01'

熱點內容
c學生管理系統資料庫 發布:2025-02-13 14:21:41 瀏覽:122
傳奇添加會員腳本 發布:2025-02-13 14:20:50 瀏覽:205
微信開發平台源碼 發布:2025-02-13 14:14:20 瀏覽:613
安卓大屏屏幕休眠是什麼意思 發布:2025-02-13 14:13:28 瀏覽:464
腳本的參數設置 發布:2025-02-13 14:11:57 瀏覽:863
androidtexture 發布:2025-02-13 14:11:57 瀏覽:393
怎麼取消網路密碼怎麼設置 發布:2025-02-13 14:11:54 瀏覽:426
我的世界電腦手機等價科技伺服器 發布:2025-02-13 14:06:06 瀏覽:244
刪除空行linux 發布:2025-02-13 14:04:11 瀏覽:992
安卓加速播放器哪個好 發布:2025-02-13 14:02:09 瀏覽:847