程式碼
使用大師
去
------------建立資料庫------------
如果存在(從 sysdatabases 中選擇 *,其中 name='stuDB')
刪除資料庫 StuDB
建立資料庫 StuDB
在小學
(
name='stuDB_data',
檔案名稱='D:stuDB_data.mdf',
大小=3mb,
最大大小=10mb,
文件成長=1mb
)
登入
(
name='stuDB_log',
檔案名稱='D:stuDB_data.ldf',
大小=1mb,
文件成長=1mb
)
------------建立資料庫表------------
使用 StuDB
去
如果存在(從 sysobjects 中選擇 *,其中 name='stuInfo')
刪除表stuInfo
建立表格stuInfo
(
StuId int Identity(1,1) 主鍵不為空,
StuName varchar(20) 不為空,
StuNo varchar(20) 不為空,
StuSex char(6) 不為空,
StuAge int 不為空,
Stu地址文字 null
)
去
如果存在(從 sysobjects 中選擇 *,其中 name='stuMarks')
刪除表 StuMarks
建立表 StuMarks
(
marksId int Identity(1,1) 主鍵不為空,
ExamNo varchar(50) not null, --考號
StuNo char(6) not null,--學號
writeExam int null,--筆試成績
LabExam int null--機試成績
)
去
--插入資料表stuInfo資料--
INSERT INTO StuInfo(stuName,stuNo,stuSex,stuAge,stuAddress)VALUES('張秋麗','s25301','男',18,'北京海淀')
INSERT INTO StuInfo(stuName,stuNo,stuSex,stuAge,stuAddress) VALUES('李斯文','s25303','女',22,'河南洛陽')
INSERT INTO StuInfo(stuName,stuNo,stuSex,stuAge) VALUES('李文才','s25302','男',31)
INSERT INTO StuInfo(stuName,stuNo,stuSex,stuAge,stuAddress) VALUES('歐陽俊雄','s25304','男',28,'威武哈')
--插入資料表stuMarks--
INSERT INTO StuMarks(ExamNo,stuNo,writingExam,LabExam) VALUES('E2005070001','s25301',80,58)
INSERT INTO StuMarks(ExamNo,stuNo,writingExam) VALUES('E2005070002','s25302',50)
INSERT INTO StuMarks(ExamNo,stuNo,writingExam,LabExam) VALUES('E2005070003','s25303',97,82)
--查看數據--
從stuInfo中選擇*
從 StuMarks 中選擇 *
/*======查詢資料練習=========*/
--1.查詢兩表的資料--
從stuInfo中選擇*
從 StuMarks 中選擇 *
--2.查詢男學員名單--
從stuInfo中選擇*,其中stuSex='男'
--3.查詢筆試成績優秀的學員狀況(成績在75~100之間)--
從 Stumarks 中選擇*,其中書面考試在 75 到 100 之間
--4.查詢參加本次考試的學員成績,包括學員,筆試成績,機試成績--
從stuInfo中選擇i.stuName,m.writingExam,m.LabExam作為i內連接stuMarks作為m on m.stuNo = i.stuNo
--5.統計筆試考試平均分數和機試考試平均分數--
從 StuMarks 中選擇 avg(writingExam) 作為筆試平均成績,avg(LabExam) 作為機會平均成績
從 StuMarks 中選擇 avg(writingExam) 筆試平均成績,avg(LabExam) 機試平均成績
--6.統計參加本次考試的學員人數
從 Stumarks 中選擇 count(stuno)
--7.查詢沒有通過考試的人數(筆試或機試小於60分)--
從 Stumarks 中選擇 count(stuno),其中 writeExam <= 60 或 labexam <= 60
select * from Stumarks where writeExam is null or labexam is null --查詢所有參加考試的信息
--8.查詢成績,顯示學號,筆試成績,機試成績,平均分數--
select Stuno 作為學號,writingExam 筆試,labexam 機試,(writingExam+labexam)/2 平均成績 from Stumarks
--9.排名次(依平均分數由高到低排序),顯示學號、平均分數--
select Stuno 作為學號,(writingExam+labexam)/2 平均成績 from Stumarks order by (writingExam+labexam)/2 desc
選擇 Stuno 作為學號,(writingExam+labexam)/2 平均成績 from Stumarks order by 平均成績 desc
--10.排名次(依平均分數由高至低排序),顯示姓名,筆試成績,機試成績,平均分數--
select i.stuno as 學號,writingExam 筆試,labexam 機試,(writingExam+labexam)/2 平均成績
從 Stumarks as m 內部加入 Stuinfo as i on m.stuno = i.stuno order by 平均成績 desc
--根據上述SQL語句總結:凡是兩個表有同名的列名就需要用別名卻分開來,如果沒用別名可以直接查詢列明
--11.依平均分數,顯示前兩項訊息,包括姓名、筆試成績、機會考試成績、平均分數--
選出前 2 名 i.stuno 為學號,writingExam 筆試,labexam 機試,(writingExam+labexam)/2 平均成績
從 Stumarks as m 內部加入 Stuinfo as i on m.stuno = i.stuno order by 平均成績 desc
/*========資料練習======修改==*/
--都提5分--
--100分封頂(加分後超過100分的,以100分計算)--
更新 Stumarks 設定 writeExam = WriteExam + 5
更新 Stumarks 設定 writeExam = 100 其中 writeExam>100