代码
использовать мастер
идти
-----------------------------
если существует (выберите * из системных баз данных, где name='stuDB')
удалить базу данных studb
создать базу данных studb
на первичном
(
имя = 'stuDB_data',
имя_файла = 'D:stuDB_data.mdf',
размер = 3 МБ,
максимальный размер = 10 МБ,
рост файла=1 МБ
)
войти в систему
(
имя = 'stuDB_log',
имя_файла = 'D:stuDB_data.ldf',
размер=1 МБ,
рост файла=1 МБ
)
------------------------
использовать студб
идти
если существует (выберите * из sysobjects, где name='stuInfo')
отбросить таблицу stuInfo
создать таблицу stuInfo
(
stuId intident(1,1) первичный ключ не равен нулю,
stuName varchar(20) не равно нулю,
stuNo varchar(20) не ноль,
stuSex char(6) не равен нулю,
stuAge int не ноль,
stuAddress текст null
)
идти
если существует (выберите * из sysobjects, где name='stuMarks')
отбросить таблицу stuMarks
создать таблицу stuMarks
(
markId intident(1,1) первичный ключ не равен нулю,
ExamNo varchar(50) не ноль, --考号
stuNo char(6) не ноль,--学号
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,письменный экзамен,Лабораторный экзамен) ЗНАЧЕНИЯ('E2005070001','s25301',80,58)
INSERT INTO stuMarks(ExamNo,stuNo,writingExam) VALUES('E2005070002','s25302',50)
INSERT INTO stuMarks(ExamNo,stuNo,письменный экзамен,Лабораторный экзамен) ЗНАЧЕНИЯ('E2005070003','s25303',97,82)
---------
выберите * из stuInfo
выберите * из stuMarks
/*======= 查询数据练习=========*/
--1. 查询两表的数据--
выберите * из stuInfo
выберите * из stuMarks
--2.
выберите * из stuInfo, где stuSex='男'
--3. Пропускная способность 75~100 минут)--
выберите * из отметок, где написан экзамен между 75 и 100
--4.
выберите i.stuName,m.writingExam,m.LabExam из stuInfo как внутреннее соединение stuMarks как m на m.stuNo = i.stuNo
--5.
выберите avg(письменный экзамен) как 笔试平均成绩,avg(LabExam) как 机试平均成绩 из stuMarks
выберите avg(письменный экзамен) 笔试平均成绩,avg(LabExam) 机试平均成绩 из stuMarks
--6.
выберите количество (stuno) из стумарков
--7. 查询没有通过考试的人数(笔试或机试小于60分)--
выберите count(stuno) из стумарков, где написаноExam <= 60 или labexam<=60
выберите * из меток, где записанное значение Exam равно нулю или значение labexam равно нулю.
--8.
выберите stuno как 学号,writingExam 笔试,labexam 机试,(письменный экзамен+labexam)/2 平均成绩 из stumarks
--9. 排名次(按平均分从高到低排序), 显示学号、平均分--
выберите stuno как 学号,(writingExam+labexam)/2 平均成绩 из стумарков, упорядочив их по (написанныйExam+labexam)/2 desc
выберите stuno как 学号,(writeExam+labexam)/2 平均成绩 из порядка стумарков по 平均成绩 desc
--10.
выберите i.stuno как 学号,writingExam 笔试,labexam 机试,(writingExam+labexam)/2 平均成绩
from stumarks as m Internal join stuinfo as i on m.stuno = i.stuno order by 平均成绩 desc
--根据以上SQL语句总结:凡是两个表中有同名的列名就需要用别名却分开来,如果没用别名可以直接查询列明
--11.
выберите 2 верхних i.stuno как 学号,writingExam 笔试,labexam 机试,(writingExam+labexam)/2 平均成绩
from stumarks as m Internal join stuinfo as i on m.stuno = i.stuno order by 平均成绩 desc
/*=======修改数据练习=========*/
--都提5 лет--
--100 дней в году (100 дней в году)--
обновить набор меток WriteExam = WriteExam + 5
обновить штампы, установить writeExam = 100, где writeExam>100