代码
usar mestre
ir
-----------创建数据库-----------
se existir (selecione * em sysdatabases onde name='stuDB')
eliminar o banco de dados stuDB
criar banco de dados stuDB
no primário
(
nome='stuDB_data',
nome do arquivo='D:stuDB_data.mdf',
tamanho = 3 MB,
tamanho máximo = 10 MB,
crescimento do arquivo = 1mb
)
faça login
(
nome='stuDB_log',
nome do arquivo='D:stuDB_data.ldf',
tamanho = 1mb,
crescimento do arquivo = 1mb
)
-----------创建数据库表-----------
usar stuDB
ir
se existir (selecione * em sysobjects onde name='stuInfo')
drop table stuInfo
criar tabela stuInfo
(
stuId int identidade(1,1) chave primária não nula,
stuName varchar(20) não nulo,
stuNo varchar(20) não nulo,
stuSex char(6) não nulo,
stuAge int não nulo,
stuAddress texto nulo
)
ir
se existir (selecione * em sysobjects onde name='stuMarks')
drop table stuMarks
criar stuMarks de tabela
(
markId int identidade(1,1) chave primária não nula,
ExameNo varchar(50) não nulo, --考号
stuNo char(6) não nulo,--学号
WritingExam int null,--笔试成绩
LabExam int null--机试成绩
)
ir
--向学员信息表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插入数据--
INSERIR EM stuMarks(ExamNo,stuNo,writingExam,LabExam) VALORES('E2005070001','s25301',80,58)
INSERT INTO stuMarks(ExamNo,stuNo,writingExam) VALUES('E2005070002','s25302',50)
INSERIR EM stuMarks(ExamNo,stuNo,writingExam,LabExam) VALORES('E2005070003','s25303',97,82)
--查看数据--
selecione * em stuInfo
selecione * em stuMarks
/*=======查询数据练习=========*/
--1.查询两表的数据--
selecione * em stuInfo
selecione * em stuMarks
--2.查询男学员名单--
selecione * em stuInfo onde stuSex='男'
--3.查询笔试成绩优秀的学员情况(成绩在75~100之间)--
selecione * nos marcadores onde está escrito o exame entre 75 e 100
--4.查询参加本次考试的学员成绩,包括学员姓名,笔试成绩,机试成绩--
selecione i.stuName,m.writingExam,m.LabExam de stuInfo enquanto eu integro stuMarks como m em m.stuNo = i.stuNo
--5.统计笔试考试平均分和机试考试平均分--
selecione avg(writeExam) como 笔试平均成绩,avg(LabExam) como 机试平均成绩 de stuMarks
selecione avg(writingExam) 笔试平均成绩,avg(LabExam) 机试平均成绩 from stuMarks
--6.统计参加本次考试的学员人数
selecione contagem (stuno) dos stumarks
--7.查询没有通过考试的人数(笔试或机试小于60分)--
selecione contagem (stuno) dos marcadores onde está escritoExam <= 60 ou labexam<=60
selecione * nos stumarks onde WritingExam é nulo ou labexam é nulo
--8.查询学员成绩,显示学号,笔试成绩,机试成绩,平均分--
selecione stuno como 学号,Exame escrito 笔试,labexam 机试,(Exame escrito+labexam)/2 平均成绩 de stumarks
--9.排名次(按平均分从高到低排序),显示学号、平均分--
selecione stuno como 学号,(Exame escrito+labexam)/2 平均成绩 a partir de stumarks ordenados por (Exame escrito+labexam)/2 desc
selecione stuno como 学号,(Exame escrito+labexame)/2 平均成绩 a partir dos stumarks ordenados por 平均成绩 desc
--10.排名次(按平均分从高到低排序),显示姓名,笔试成绩,机试成绩,平均分--
selecione i.stuno como 学号,writingExam 笔试,labexam 机试,(writingExam+labexam)/2 平均成绩
de stumarks como m inner join stuinfo como i em m.stuno = i.stuno ordenar por 平均成绩 desc
--根据以上SQL语句总结:凡是两个表中有同名的列名就需要用别名却分开来,如果没用别名可以直接查询列明
--11.根据平均分,显示前两名信息,包括姓名、笔试成绩、机试成绩、平均分--
selecione os 2 principais i.stuno como 学号,writingExam 笔试,labexam 机试,(writingExam+labexam)/2 平均成绩
de stumarks como m inner join stuinfo como i em m.stuno = i.stuno ordenar por 平均成绩 desc
/*=======修改数据练习=========*/
--都提5分--
--100分封顶(加分后超过100分的,按100分计算)--
atualizar conjunto de marcadores escritosExam = WritingExam + 5
atualizar stumarks definido WritingExam = 100 onde WritingExam> 100