代
マスターを使用する
行く
-----------创建データベース库-----------
存在する場合 (name='stuDB' の sysdatabases から * を選択)
データベース stuDB を削除する
データベース stuDB を作成する
プライマリ上で
(
名前='stuDB_data',
ファイル名='D:stuDB_data.mdf',
サイズ=3mb、
最大サイズ=10MB、
ファイルの増加=1mb
)
ログオン
(
名前='stuDB_log',
ファイル名='D:stuDB_data.ldf',
サイズ=1MB、
ファイルの増加=1mb
)
-----------创建データベース库表-----------
stuDBを使用する
行く
存在する場合 (name='stuInfo' の sysobjects から * を選択)
ドロップテーブル stuInfo
テーブル stuInfo を作成する
(
stuId intidentity(1,1) 主キーが null ではありません。
stuName varchar(20) が null ではありません。
stuNo varchar(20) が null ではありません。
stuSex char(6) が null ではありません。
stuAge int が null ではない、
stuAddress テキスト null
)
行く
存在する場合 (name='stuMarks' の sysobjects から * を選択)
ドロップテーブル stuMarks
テーブル stuMarks を作成する
(
marksId intidentity(1,1) 主キーが null ではない、
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,WrittenExam,LabExam) VALUES('E2005070001','s25301',80,58)
INSERT INTO stuMarks(ExamNo,stuNo,WrittenExam) VALUES('E2005070002','s25302',50)
INSERT INTO stuMarks(ExamNo,stuNo,WrittenExam,LabExam) VALUES('E2005070003','s25303',97,82)
--データを見る--
stuInfo から * を選択
stuMarks から * を選択
/*=======查询データ架练习=========*/
--1. 2 つの表のデータ --
stuInfo から * を選択
stuMarks から * を選択
--2.查询男学员名单--
select * from stuInfo where stuSex='男'
--3.查询笔试成绩优秀的学员情况(成绩在75~100間)--
筆記試験が 75 から 100 の間のストゥマークから * を選択してください
--4.次回の検討に参加する学構成、学名姓、笔试成绩、机试成绩を含む--
select i.stuName,m.writingExam,m.LabExam from stuInfo as i inner join stuMarks as m on m.stuNo = i.stuNo
--5. 機械学習の平均分数と機械学習の平均分数 --
stuMarks から avg(WrittenExam) を笔试平均成绩として選択し、avg(LabExam) を机试平均成绩として選択します
select avg(WrittenExam) 笔试平均成绩,avg(LabExam) 机试平均成绩 from stuMarks
--6.统计参加今回次回検討の学员人数
ストゥマークからカウント(stuno)を選択
--7. 熟考を経た人数は含まれません(電子または机上60分未満)--
selectedExam <= 60 または labexam<=60 の stumarks から count(stuno) を選択します
select * from stumarks where writingExam is null or labexam is null --查询はすべて参加検討の情報
--8.查询学员成绩、表示学号、笔试成绩、机试成绩、平均分--
select stuno as 学号,WrittenExam 笔试,labexam 机试,(WrittenExam+labexam)/2 平均成绩 from stumarks
--9.排名次(按平均分上位から下位順)、表示学号、平均分--
select stuno as 学号,(WrittenExam+labexam)/2 stumarks の平均成绩 order by (WrittenExam+labexam)/2 desc
select stuno as 学号,(WrittenExam+labexam)/2 平均成绩 from stumarks order by 平均成绩 desc
--10.排名次(上位から下位までの平均分数)、表示姓名、電子音声成り、機械音声成り、平均分数--
select i.stuno as 学号,WrittenExam 笔试,labexam 机试,(WrittenExam+labexam)/2 平均成绩
from stumarks as m inner join stuinfo as i on m.stuno = i.stuno order by 平均绩 desc
-- 上記の SQL 句の結果によると、凡例は 2 つの表に同じ名前の列名があるため、名前を削除する必要があります。名前が使用されていない場合は、列名を直接確認できます。
--11. 平均分に基づいて、姓、電子構成、機械構成、平均分を含む前の 2 つの名前情報を表示します--
上位 2 つを選択 i.stuno as 学号,WrittenExam 笔试,labexam 机试,(WrittenExam+labexam)/2 平均成绩
from stumarks as m inner join stuinfo as i on m.stuno = i.stuno order by 平均绩 desc
/*=======修改データ据练习=========*/
--都提5分--
--100分封顶(追加後100分を超過、按100分計算)--
ストゥマークを更新します。 writeExam = writeExam + 5 を設定します。
ストゥマークを更新して、writeExam = 100 に設定します。ここで、writeExam>100