SQL语句Student

合集下载

数据库常用sql语句有哪些

数据库常用sql语句有哪些

数据库常用sql语句有哪些数据库常用sql语句有哪些结构化查询语言简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

下面是店铺整理的数据库常用sql语句有哪些,欢迎大家分享。

数据库常用sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号;select a.S# from (select s#,score from SC where C#='001') a,(select s#,scorefrom SC where C#='002') bwhere a.score>b.score and a.s#=b.s#;2、查询平均成绩大于60分的同学的学号和平均成绩;select S#,avg(score)from scgroup by S# having avg(score) >60;3、查询所有同学的学号、姓名、选课数、总成绩;select Student.S#,Student.Sname,count(SC.C#),sum(score)from Student left Outer join SC on Student.S#=SC.S#group by Student.S#,Sname4、查询姓“李”的老师的个数;select count(distinct(Tname))from Teacherwhere Tname like '李%';5、查询没学过“叶平”老师课的同学的学号、姓名;select Student.S#,Student.Snamefrom Studentwhere S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;select S#,Snamefrom Studentwhere S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname='叶平'));8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2 from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2<score;9、查询所有课程成绩小于60分的同学的学号、姓名;select S#,Snamefrom Studentwhere S# not in (select Student.S# from Student,SC whereS.S#=SC.S# and score>60);10、查询没有学全所有课的同学的学号、姓名;select Student.S#,Student.Snamefrom Student,SCwhere Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;select distinct SC.S#,Snamefrom Student,SCwhere Student.S#=SC.S# and C# in (select C# from SC where S#='001');13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;SC set score=(select avg(SC_2.score)from SC SC_2where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平');14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;select S# from SC where C# in (select C# from SC where S#='1002')group by S# having count(*)=(select count(*) from SC where S#='1002');15、删除学习“叶平”老师课的SC表记录;Delect SCfrom course ,Teacherwhere Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2、号课的平均成绩;Insert SC select S#,'002',(Select avg(score)from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分SELECT S# as 学生ID,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩FROM SC AS tGROUP BY S#ORDER BY avg(t.score)18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分FROM SC L ,SC AS RWHERE L.C# = R.C# andL.score = (SELECT MAX(IL.score)FROM SC AS IL,Student AS IMWHERE L.C# = IL.C# and IM.S#=IL.S#GROUP BY IL.C#)ANDR.Score = (SELECT MIN(IR.score)FROM SC AS IRWHERE R.C# = IR.C#GROUP BY IR.C#);19、按各科平均成绩从低到高和及格率的百分数从高到低顺序SELECT t.C# AS 课程号,max(ame)AS 课程名,isnull(AVG(score),0) AS 平均成绩,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数FROM SC T,Coursewhere t.C#=course.C#GROUP BY t.C#ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004)SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数,SUM(CASE WHEN C# = '002' THEN score ELSE 0END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数FROM SC21、查询不同老师所教不同课程平均分从高到低显示SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(ame) AS 课程名称,AVG(Score) AS 平均成绩FROM SC AS T,Course AS C ,Teacher AS Zwhere T.C#=C.C# and C.T#=Z.T#GROUP BY C.C#ORDER BY AVG(Score) DESC22、查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩SELECT DISTINCT top 3SC.S# As 学生学号,Student.Sname AS 学生姓名 ,T1.score AS 企业管理,T2.score AS 马克思,T3.score AS UML,T4.score AS 数据库,ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分FROM Student,SC LEFT JOIN SC AS T1ON SC.S# = T1.S# AND T1.C# = '001'LEFT JOIN SC AS T2ON SC.S# = T2.S# AND T2.C# = '002'LEFT JOIN SC AS T3ON SC.S# = T3.S# AND T3.C# = '003'LEFT JOIN SC AS T4ON SC.S# = T4.S# AND T4.C# = '004'WHERE student.S#=SC.S# andISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)NOT IN(SELECTDISTINCTTOP 15 WITH TIESISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)FROM scLEFT JOIN sc AS T1ON sc.S# = T1.S# AND T1.C# = 'k1'LEFT JOIN sc AS T2ON sc.S# = T2.S# AND T2.C# = 'k2'LEFT JOIN sc AS T3ON sc.S# = T3.S# AND T3.C# = 'k3'LEFT JOIN sc AS T4ON sc.S# = T4.S# AND T4.C# = 'k4'ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[<60]SELECT SC.C# as 课程ID, Cname as 课程名称,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85],SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70],SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60],SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -] FROM SC,Coursewhere SC.C#=Course.C#GROUP BY SC.C#,Cname;24、查询学生平均成绩及其名次SELECT 1+(SELECT COUNT( distinct 平均成绩)FROM (SELECT S#,AVG(score) AS 平均成绩FROM SCGROUP BY S#) AS T1WHERE 平均成绩 > T2.平均成绩) as 名次,S# as 学生学号,平均成绩FROM (SELECT S#,AVG(score) 平均成绩FROM SCGROUP BY S#) AS T2ORDER BY 平均成绩 desc;25、查询各科成绩前三名的记录:(不考虑成绩并列情况)SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 3 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;26、查询每门课程被选修的学生数select c#,count(S#) from sc group by C#;27、查询出只选修了一门课程的全部学生的学号和姓名select SC.S#,Student.Sname,count(C#) AS 选课数from SC ,Studentwhere SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1;28、查询男生、女生人数Select count(Ssex) as 男生人数 from Student group by Ssex having Ssex='男';Select count(Ssex) as 女生人数 from Student group by Ssex having Ssex='女';29、查询姓“张”的学生名单SELECT Sname FROM Student WHERE Sname like '张%';30、查询同名同性学生名单,并统计同名人数select Sname,count(*) from Student group by Sname having count(*)>1;;31、1981年出生的学生名单(注:Student表中Sage列的类型是datetime)select Sname, CONVERT(char (11),DATEPART(year,Sage)) asagefrom studentwhere CONVERT(11),DATEPART(year,Sage))='1981';32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩select Sname,SC.S# ,avg(score)from Student,SCwhere Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85;34、查询课程名称为“数据库”,且分数低于60的`学生姓名和分数Select Sname,isnull(score,0)from Student,SC,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# and ame='数据库'and score<60;35、查询所有学生的选课情况;SELECT SC.S#,SC.C#,Sname,CnameFROM SC,Student,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# ;36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;SELECT distinct student.S#,student.Sname,SC.C#,SC.scoreFROM student,ScWHERE SC.score>=70 AND SC.S#=student.S#;37、查询不及格的课程,并按课程号从大到小排列select c# from sc where scor e<60 order by C# ;38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#='003';39、求选了课程的学生人数select count(*) from sc;40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩select Student.Sname,scorefrom Student,SC,Course C,Teacherwhere Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score)from SC where C#=C.C# );41、查询各个课程及相应的选修人数select count(*) from sc group by C#;42、查询不同课程成绩相同的学生的学号、课程号、学生成绩select distinct A.S#,B.score from SC A ,SC B whereA.Score=B.Score and A.C# <>B.C# ;43、查询每门功成绩最好的前两名SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 2 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;44、统计每门课程的学生选修人数(超过10人的课程才统计)。

SQL语句创建学生信息数据库表的示例

SQL语句创建学生信息数据库表的示例

用SQL语句创建如下三个基本表:学生表(Student)、课程表(Course)、学生选课表(SC),结构如下所示Student表结构Create table S tudent(Sno varchar(7) primary key,Sname varchar(10) not null,页脚内容1Ssex char (2) check(Ssex=‘男’or Ssex=’女’),Sage int check(Sage between 15 and 45),Sdept varchar(20) default(‘计算机系’))Course表结构Create table course(页脚内容2Cno varchar(10) primary key,Cname varchar(20) not null,Ccredit int check(Sctedit>0),Semester int check(Semester>0),Period int check(Period>0))SC表结构Create table SC(Sno varchar(7) foreign key references student(Sno),页脚内容3Cno varchar(10) foreign key references course(Cno),Grade int check(Grade between 0 and 100),Primary key (Sno,Cno))1.查询学生选课表中的全部数据。

SELECT *FROM SCgo2.查询计算机系学生的姓名、年龄。

Select Sname,SageFrom StudentWhere Sdept=’计算机系’3.查询成绩在70~80分之间的学生的学号、课程号和成绩。

Select Sno,Cno,GradeFrom Course,ScWhere o=o and sc.Grade between 70 and 80页脚内容44.查询计算机系年龄在18~20之间且性别为“男”的学生的姓名和年龄。

SQL语句大全

SQL语句大全

8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;
Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2
update SC set score=(select avg(SC_2.score)
from SC SC_2
where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平');
10、查询没有学全所有课的同学的学号、姓名;
select Student.S#,Student.Sname
from Student,SC
where Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);
FROM SC L ,SC AS R
WHERE L.C# = R.C# and
L.score = (SELECT MAX(IL.score)
FROM SC AS IL,Student AS IM
WHERE L.C# = IL.C# and IM.S#=IL.S#
from Student left Outer join SC on Student.S#=SC.S#

SQL查询语句的使用(学生用)

SQL查询语句的使用(学生用)

SQL查询语句的使用一、建立数据库XSGL二、在XSGL数据库中创建如下表:1、student学生信息表2、course课程信息表3、student_course表三、SQL查询(一)select语句的练习1、纵向查询(即筛选记录)(1)显示student表中所有记录。

(2)显示student表中前5条记录。

(3)显示student表中的男同学。

(4)显示student表中班号为“200901”的男同学。

(5)显示student表中姓”李”的同学。

(6)显示student表中姓名以”华”结束的同学。

(7)显示姓名包括“中”的同学(8)显示student表中共有几个班级的学生?(即筛选出不重复的“class_id”)2.横向查询(即筛选字段)(9)显示student表中全部记录的学号和姓名两个字段内容。

(10)显示student表中全部记录的姓名字段内容。

(11)显示student表中全部记录的姓名和出生年月两个字段内容。

3.横纵向混合查询(12)显示student表中前5条记录的学号和姓名两个字段内容。

(13)显示student表中姓名中包含“红”的学号和姓名两个字段的内容。

4.排序(即order by的用法)(14)以出生日期的降序显示student表中全部记录。

(15)以班号的升序显示全部记录,在班号相同的情况下以出生日期的降序显示student表中。

(16)在student表中筛选出男同学,显示时以学号的降序显示。

5.行聚合函数的使用(17)统计男同学的人数(18)统计student_course表的最高分。

(19)统计student_course表的总分。

(20)统计student_course表的平均分(21)汇总student表中不同性别的同学人数。

6.多表查询(22)从student和student_course两个表中显示姓名、课程号、成绩。

(23)从course和student_course两个表中显示课程号,课程名称和课程总学时,学分。

50个常用sql语句实例(学生表_课程表_成绩表_教师表)

50个常用sql语句实例(学生表_课程表_成绩表_教师表)

Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表create table Student(S# varchar(20),Sname varchar(10),Sage int,Ssex varchar(2))前面加一列序号:ifexists(select table_name from information_schema.tableswhere table_name='Temp_Table')drop table Temp_Tablegoselect 排名=identity(int,1,1),* INTO Temp_Table from Studentgoselect * from Temp_Tablegodrop database [ ] --删除空的没有名字的数据库问题:1、查询“”课程比“”课程成绩高的所有学生的学号;select a.S# from (select s#,score from SC where C#='001') a,(select s#,scorefrom SC where C#='002') bwhere a.score>b.score and a.s#=b.s#;2、查询平均成绩大于分的同学的学号和平均成绩;select S#,avg(score)from scgroup by S# having avg(score) >60;3、查询所有同学的学号、姓名、选课数、总成绩;select Student.S#,Student.Sname,count(SC.C#),sum(score)from Student left Outer join SC on Student.S#=SC.S#group by Student.S#,Sname4、查询姓“李”的老师的个数;select count(distinct(Tname))from Teacherwhere Tname like '李%';5、查询没学过“叶平”老师课的同学的学号、姓名;select Student.S#,Student.Snamefrom Studentwhere S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');6、查询学过“”并且也学过编号“”课程的同学的学号、姓名;select Student.S#,Student.Sname from Student,SC whereStudent.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;select S#,Snamefrom Studentwhere S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher whereTeacher.T#=Course.T# and Tname='叶平'));8、查询课程编号“”的成绩比课程编号“”课程低的所有同学的学号、姓名;Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2 from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 <score;9、查询所有课程成绩小于分的同学的学号、姓名;select S#,Snamefrom Studentwhere S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);10、查询没有学全所有课的同学的学号、姓名;select Student.S#,Student.Snamefrom Student,SCwhere Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);11、查询至少有一门课与学号为“”的同学所学相同的同学的学号和姓名;select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';12、查询至少学过学号为“”同学所有一门课的其他同学学号和姓名;select distinct SC.S#,Snamefrom Student,SCwhere Student.S#=SC.S# and C# in (select C# from SC where S#='001');13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;update SC set score=(select avg(SC_2.score)from SC SC_2where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平');14、查询和“”号的同学学习的课程完全相同的其他同学学号和姓名;select S# from SC where C# in (select C# from SC where S#='1002') group by S# having count(*)=(select count(*) from SC whereS#='1002');15、删除学习“叶平”老师课的SC表记录;Delect SCfrom course ,Teacherwhere Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“”课程的同学学号、、号课的平均成绩;Insert SC select S#,'002',(Select avg(score)from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分SELECT S# as 学生ID,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩FROM SC AS tGROUP BY S#ORDER BY avg(t.score)18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分FROM SC L ,SC AS RWHERE L.C# = R.C# andL.score = (SELECT MAX(IL.score)FROM SC AS IL,Student AS IMWHERE L.C# = IL.C# and IM.S#=IL.S#GROUP BY IL.C#)ANDR.Score = (SELECT MIN(IR.score)FROM SC AS IRWHERE R.C# = IR.C#GROUP BY IR.C#);19、按各科平均成绩从低到高和及格率的百分数从高到低顺序SELECT t.C# AS 课程号,max(ame)AS 课程名,isnull(AVG(score),0) AS 平均成绩,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数FROM SC T,Coursewhere t.C#=course.C#GROUP BY t.C#ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(),马克思(),OO&UML (),数据库()SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数FROM SC21、查询不同老师所教不同课程平均分从高到低显示SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(ame) AS 课程名称,AVG(Score) AS 平均成绩FROM SC AS T,Course AS C ,Teacher AS Zwhere T.C#=C.C# and C.T#=Z.T#GROUP BY C.C#ORDER BY AVG(Score) DESC22、查询如下课程成绩第名到第名的学生成绩单:企业管理(),马克思(),UML (),数据库()[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩SELECT DISTINCT top 3SC.S# As 学生学号,Student.Sname AS 学生姓名,T1.score AS 企业管理,T2.score AS 马克思,T3.score AS UML,T4.score AS 数据库,ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分FROM Student,SC LEFT JOIN SC AS T1ON SC.S# = T1.S# AND T1.C# = '001'LEFT JOIN SC AS T2ON SC.S# = T2.S# AND T2.C# = '002'LEFT JOIN SC AS T3ON SC.S# = T3.S# AND T3.C# = '003'LEFT JOIN SC AS T4ON SC.S# = T4.S# AND T4.C# = '004'WHERE student.S#=SC.S# andISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)NOT IN(SELECTDISTINCTTOP 15 WITH TIESISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)FROM scLEFT JOIN sc AS T1ON sc.S# = T1.S# AND T1.C# = 'k1'LEFT JOIN sc AS T2ON sc.S# = T2.S# AND T2.C# = 'k2'LEFT JOIN sc AS T3ON sc.S# = T3.S# AND T3.C# = 'k3'LEFT JOIN sc AS T4ON sc.S# = T4.S# AND T4.C# = 'k4'ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) +ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]SELECT SC.C# as 课程ID, Cname as 课程名称,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85],SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70],SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60],SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -] FROM SC,Coursewhere SC.C#=Course.C#GROUP BY SC.C#,Cname;24、查询学生平均成绩及其名次SELECT 1+(SELECT COUNT( distinct 平均成绩)FROM (SELECT S#,AVG(score) AS 平均成绩FROM SCGROUP BY S#) AS T1WHERE 平均成绩> T2.平均成绩) as 名次,S# as 学生学号,平均成绩FROM (SELECT S#,AVG(score) 平均成绩FROM SCGROUP BY S#) AS T2ORDER BY 平均成绩desc;25、查询各科成绩前三名的记录:(不考虑成绩并列情况)SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 3 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;26、查询每门课程被选修的学生数select c#,count(S#) from sc group by C#;27、查询出只选修了一门课程的全部学生的学号和姓名select SC.S#,Student.Sname,count(C#) AS 选课数from SC ,Studentwhere SC.S#=Student.S# group by SC.S# ,Student.Sname havingcount(C#)=1;28、查询男生、女生人数Select count(Ssex) as 男生人数from Student group by Ssex having Ssex='男';Select count(Ssex) as 女生人数from Student group by Ssex having Ssex='女';29、查询姓“张”的学生名单SELECT Sname FROM Student WHERE Sname like '张%';30、查询同名同性学生名单,并统计同名人数select Sname,count(*) from Student group by Sname having count(*)>1;;31、年出生的学生名单(注:Student表中Sage列的类型是datetime)select Sname, CONVERT(char (11),DATEPART(year,Sage)) as agefrom studentwhere CONVERT(char(11),DATEPART(year,Sage))='1981';32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;33、查询平均成绩大于的所有学生的学号、姓名和平均成绩select Sname,SC.S# ,avg(score)from Student,SCwhere Student.S#=SC.S# group by SC.S#,Sname havingavg(score)>85;34、查询课程名称为“数据库”,且分数低于的学生姓名和分数Select Sname,isnull(score,0)from Student,SC,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# and ame='数据库'and score <60;35、查询所有学生的选课情况;SELECT SC.S#,SC.C#,Sname,CnameFROM SC,Student,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# ;36、查询任何一门课程成绩在分以上的姓名、课程名称和分数;SELECT distinct student.S#,student.Sname,SC.C#,SC.scoreFROM student,ScWHERE SC.score>=70 AND SC.S#=student.S#;37、查询不及格的课程,并按课程号从大到小排列select c# from sc where scor e <60 order by C# ;38、查询课程编号为且课程成绩在分以上的学生的学号和姓名;select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#='003';39、求选了课程的学生人数select count(*) from sc;40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩select Student.Sname,scorefrom Student,SC,Course C,Teacherwhere Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score)from SC whereC#=C.C# );41、查询各个课程及相应的选修人数select count(*) from sc group by C#;42、查询不同课程成绩相同的学生的学号、课程号、学生成绩select distinct A.S#,B.score from SC A ,SC B where A.Score=B.Score and A.C# <>B.C# ;43、查询每门功成绩最好的前两名SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 2 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;44、统计每门课程的学生选修人数(超过人的课程才统计)。

SQL语句创建学生信息数据库表的示例-学生信息数据库表

SQL语句创建学生信息数据库表的示例-学生信息数据库表

用SQL语句创建如下三个基本表:学生表(Student)、课程表(Course)、学生选课表(SC),结构如下所示Student表结构Create table Student(Sno varchar(7) primary key,Sname varchar(10) not null,Ssex char (2) check(Ssex=‘男’or Ssex=’女’),Sage int check(Sage between 15 and 45),Sdept varchar(20) default(‘计算机系’))Course表结构Create table course(Cno varchar(10) primary key,Cname varchar(20) not null,Ccredit int check(Sctedit>0),Semester int check(Semester>0),Period int check(Period>0))SC表结构Create table SC(Sno varchar(7) foreign key references student(Sno),Cno varchar(10) foreign key references course(Cno),Grade int check(Grade between 0 and 100),Primary key (Sno,Cno))1.查询学生选课表中的全部数据。

SELECT *FROM SCgo2.查询计算机系学生的姓名、年龄。

Select Sname,SageFrom StudentWhere Sdept=’计算机系’3.查询成绩在70~80分之间的学生的学号、课程号和成绩。

Select Sno,Cno,GradeFrom Course,ScWhere o=o and sc.Grade between 70 and 804.查询计算机系年龄在18~20之间且性别为“男”的学生的姓名和年龄。

常用的SQL查询语句

常用的SQL查询语句

常用的SQL查询语句学生表Student学号Sno 姓名Sname 性别Ssex 年龄Sage 所在系Sdept 201215121 李勇男20 CS 201215122 刘晨女19 CS 201215123 王敏女18 MA 201215125 张立男19 IS课程表Course课程号Cno 课程名Cname 先行课Cpno 学分Ccredit1 数据库 5 42 数学 23 信息系统 1 44 操作系统 6 35 数据结构7 46 数据处理 27 PASCAL语言 6 4学生选课表SC学号Sno 课程号Cno 成绩Grade201215121 1 92201215121 2 85201215121 3 88201215122 2 90201215122 3 801.建立一个“学生”表Student。

CREATE TABLE Student( Sno CHAR(9) PRIMARY KEY, /*Sno是主码*/Sname CHAR(20) UNIQUE, /*Sname取值唯一*/ Ssex CHAR(2), Sdept CHAR(20));2.建立一个“课程”表Course。

CREATE TABLE Course( Cno CHAR(4) PRIMARY KEY,Cname CHAR(40),Cpno CHAR(4),Ccredit SMALLINT,FOREIGN KEY Cpno REFERENCES Course(Cno));3.建立学生选课表SC。

CREATE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY (Sno,Cno),FOREIGN KEY Sno REFERENCES Student(Sno),FOREIGN KEY Cno REFERENCES Course(Cno));4.向表中增加“入学时间”列S_entrance,其数据类型为日期型。

本题目要求编写sql语句, 检索出stu表中所有姓‘李’的学生记录。

本题目要求编写sql语句, 检索出stu表中所有姓‘李’的学生记录。

本题目要求编写sql语句, 检索出stu表中所有姓‘李’的学生记录。

(原创实用版)
目录
1.SQL 简介
2.题目要求
3.SQL 查询语句
4.查询结果
正文
1.SQL 简介
SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的编程语言。

它可以用于查询、插入、更新和删除数据库中的数据,还可以用于创建和管理数据库表、视图等。

SQL 具有简洁明了的语法结构,易于学习和使用。

2.题目要求
本题目要求编写 SQL 语句,检索出 stu 表中所有姓‘李’的学生记录。

3.SQL 查询语句
要实现这个功能,我们可以使用 SQL 的 SELECT 语句。

以下是具体的查询语句:
```sql
SELECT * FROM stu WHERE sname = "李";
```
这条语句的意思是:从 stu 表中选择所有满足条件的记录,条件是学生的姓氏为“李”。

4.查询结果
执行这条 SQL 语句后,我们会得到一个结果集,其中包含所有姓‘李’的学生记录。

这些记录以行的形式展示,每行表示一个学生,包括学生的学号、姓名、年龄等所有信息。

SQL语句练习——创建学生信息数据库

SQL语句练习——创建学生信息数据库

SQL语句练习——创建学生信息数据库--创建数据库stuDBif exists(select * from sysdatabases where name='stuDB') drop database stuDBcreate database stuDBon(name='stuDB_data',filename='D:\stuDB_data.mdf',filegrowth=15%)go--创建表stuInfo_1use stuDBif exists(select * from sysobjects where name='stuInfo_1') drop table stuInfo_1create table stuInfo_1(stuName varchar(10) not null,--学生姓名stuNo varchar(20) not null,--学号stuSex varchar(4) not null,--性别stuAge int not null,--年龄stuSeat int identity(1,1) not null,--座位号stuAddress text --地址)go--添加约束alter table stuInfo_1 add constraint UQ_stuNo unique(stuNo)alter table stuInfo_1 add constraint CK_stuNo check(stuNo like 's253%')alter table stuInfo_1 add constraint CK_stuSex check(stuSex='男' or stuSex='女')alter table stuInfo_1 add constraint CK_stuAge check(stuAge between 15 and 40)alter table stuInfo_1 add constraint CK_stuSeat check(stuSeat between 1 and 30)alter table stuInfo_1 add constraint DF_stuAddress default('地址不详') for stuAddress--插入测试数据insert into stuInfo_1 values('张秋力','s25301','男','18','北京海淀')insert into stuInfo_1 values('李斯文','s25303','女','22','河南洛阳')insert into stuInfo_1 values('张思德','s25305','男','22','湖北武汉')insert into stuInfo_1 values('梅超风','s25306','女','25','河北邯郸')insert into stuInfo_1 values('李恩达','s25307','男','27','湖南湘潭')insert into stuInfo_1 values('赵鹏飞','s25308','男','23','新疆伊利')--添加SQL帐户use stuDBgo--建立登录名exec sp_addlogin 'banzhuren','111111'exec sp_addlogin 'jiaoyuan','123456'go--允许访问数据库exec sp_grantdbaccess 'banzhuren','bzrDBUser'exec sp_grantdbaccess 'jiaoyuan','jyDBUser'go--赋予用户操作数据表的权利grant select,insert,update on stuInfo_1 to bzrDBUser grant select on stuInfo_1 to jyDBUsergo。

sqlite sql建表语句

sqlite sql建表语句

sqlite sql建表语句1. 创建学生表:CREATE TABLE student (id INT PRIMARY KEY,name VARCHAR(50),age INT,gender VARCHAR(10),major VARCHAR(50));2. 创建课程表:CREATE TABLE course (id INT PRIMARY KEY,name VARCHAR(50),teacher VARCHAR(50),credit FLOAT);3. 创建成绩表:CREATE TABLE score (id INT PRIMARY KEY,student_id INT,course_id INT,score FLOAT,FOREIGN KEY(student_id) REFERENCES student(id), FOREIGN KEY(course_id) REFERENCES course(id));4. 创建部门表:CREATE TABLE department (id INT PRIMARY KEY,name VARCHAR(50),location VARCHAR(50));5. 创建员工表:CREATE TABLE employee (id INT PRIMARY KEY,name VARCHAR(50),age INT,gender VARCHAR(10),department_id INT,FOREIGN KEY(department_id) REFERENCES department(id) );6. 创建订单表:CREATE TABLE orders (id INT PRIMARY KEY,customer_id INT,order_date DATE,total_amount FLOAT,FOREIGN KEY(customer_id) REFERENCES customer(id) );7. 创建产品表:CREATE TABLE product (id INT PRIMARY KEY,name VARCHAR(50),price FLOAT);8. 创建供应商表:CREATE TABLE supplier (id INT PRIMARY KEY,name VARCHAR(50),contact VARCHAR(50),address VARCHAR(100));9. 创建销售表:CREATE TABLE sales (id INT PRIMARY KEY,product_id INT,quantity INT,order_id INT,FOREIGN KEY(product_id) REFERENCES product(id), FOREIGN KEY(order_id) REFERENCES orders(id) );10. 创建文章表:CREATE TABLE article (id INT PRIMARY KEY,title VARCHAR(100),author VARCHAR(50),content TEXT,create_date DATE。

sql左连接查询语句

sql左连接查询语句

sql左连接查询语句在数据库中,我们经常需要使用连接查询来获取多个表中的数据。

连接查询是通过将两个或多个表中的数据进行关联,从而得到我们需要的结果。

其中,左连接查询是一种常用的连接查询方式。

左连接查询是指以左边的表为基准,将左边表中的所有数据都显示出来,并根据连接条件将右边表中的匹配数据显示出来。

如果右边表中没有匹配的数据,则显示为NULL。

下面我们通过一个例子来说明如何使用SQL左连接查询语句。

假设我们有两个表,一个是学生表(students),包含学生的学号(student_id)、姓名(name)和班级(class_id);另一个是班级表(classes),包含班级的班级号(class_id)和班级名称(class_name)。

我们想要查询出所有学生的学号、姓名和所在班级的班级名称。

如果有学生没有所在班级,则班级名称显示为NULL。

首先,我们需要使用SELECT语句来指定要查询的字段,然后使用FROM语句来指定要查询的表。

在这个例子中,我们需要查询学生的学号、姓名和班级名称,所以我们可以写成:SELECT students.student_id, , classes.class_name接下来,我们需要使用LEFT JOIN语句来进行左连接查询。

LEFT JOIN语句用于将左边表(students)和右边表(classes)进行连接。

连接条件是左边表的班级号(students.class_id)等于右边表的班级号(classes.class_id)。

我们可以写成:FROM studentsLEFT JOIN classes ON students.class_id = classes.class_id最后,我们可以使用WHERE语句来添加筛选条件。

在这个例子中,我们不需要添加筛选条件,所以可以省略WHERE语句。

综合起来,完整的SQL左连接查询语句如下:SELECT students.student_id, , classes.class_nameFROM studentsLEFT JOIN classes ON students.class_id = classes.class_id执行以上查询语句后,我们将会得到一个结果集,其中包含了所有学生的学号、姓名和所在班级的班级名称。

SQL基本查询语句翻译

SQL基本查询语句翻译

select sno,sname from student从学生资料表中查询全体学生的学号、姓名select sname,sno,sdept from student从学生资料表中查询全体学生的姓名、学号和系别select * from student从学生资料表中查询全体学生的详细信息select sname,2006-sage from student从学生资料表中查询全体学生的姓名及其出生年月select sname,2006-sage as '出生年月' from student从学生资料表中查询全体学生的姓名及其出生年月select sname as'姓名',2006-sage as '出生年月' from student从学生资料表中查询全体学生的姓名及其出生年月select sname 姓名,2006-sage 出生年月 from student从学生资料表中查询全体学生的姓名及其出生年月select distinct sno from student从学生资料表中查询所有不同的学号select sname from student where sdept='计算机系'从学生资料表中查询所在系为计算机系的学生姓名select sname,sage from student where sage<20从学生资料表中查询年龄在20岁以下的学生姓名及其年龄select sname,sdept,sage from student where sage between 20 and 23从学生资料表中查询年龄在20至23岁(包括20岁和23岁)之间的学生姓名、系别和年龄select sname,sdept,sage from studen t where sage>=20 and sage<=23从学生资料表中查询年龄在20至23岁(包括20岁和23岁)之间的学生姓名、系别和年龄select sname,sdept,sage from student where sage not between 20 and 23从学生资料表中查询年龄不在20至23岁之间的学生姓名、系别和年龄select sname,sdept,sage from student where sage<20 or sage>23从学生资料表中查询年龄年龄小于20岁或者大于23岁的学生姓名、系别和年龄select sname,ssex from student where sdept in ('信息系','数学系','计算机系')从学生资料表中查询信息系、数学系和计算机系学生的姓名和性别select sname,ssex from studen t where sdept='信息系' or sdept='数学系' or sdept='计算机系'从学生资料表中查询信息系或者数学系或者计算机系学生的姓名和性别select sname,ssex from student where sdept not in ('信息系','数学系','计算机系')从学生资料表中查询既不是信息系、数学系又不是计算机系的学生的姓名和性别select sname,ssex from student where sdept!='信息系' or sdept!='数学系' or sdept!='计算机系'从学生资料表中查询不是信息系或者不是数学系或者不是计算机系的学生的姓名和性别select sname,ssex from student where sdept!='信息系' and sdept!='数学系' and sdept!='计算机系'从学生资料表中查询既不是信息系、数学系又不是计算机系的学生的姓名和性别select * from student where sname like'张%'从学生资料表中查询所有姓张学生的详细信息select * from student where sname like'[张李刘]%'从学生资料表中查询所有姓张、李、刘的学生的详细信息select * from student where sname like'_[小大]%'从学生资料表中查询名字中第2个字为小或者大字的学生的详细信息select * from student where sname not like'刘%'从学生资料表中查询不姓刘的学生的详细信息select * from student where sno like'%[^2-6]'从学生资料表中查询学号不以2-6任意一个字符结尾的学生的详细信息select * from sc where grade is null从学生成绩表中查询无成绩的学生的详细信息select * from sc where grade is not null从学生成绩表中查询有成绩的学生的详细信息select * from student where sdept='计算机系' and sage<20从学生资料表中查询计算机系且年龄小于20岁的学生的详细信息select * from studen t order by sage从学生资料表中查询所有学生的详细信息,查询结果按年龄升序排列select * from studen t order by sage desc从学生资料表中查询所有学生的详细信息,查询结果按年龄降序排列select sno,grade from sc where cno='c02' order by grade desc从学生成绩表中查询课程号为c02的所有学生的学号和成绩,查询结果按成绩降序排列select * from student order by sdept,sage desc从学生资料表中查询所有学生的详细信息,查询结果按系别升序排列,同一系中的学生按年龄降序排列select count(*) from student从学生资料表中查询学生的总人数select count(distinct sno) from sc从学生成绩表中查询选修了课程的学生人数select sum(grade) from sc where sno='9512101'从学生成绩表中查询并计算学号为9512101的学生的总成绩select avg(grade) from sc where cno='c01'从学生成绩表中查询并计算课程号为c01的学生的平均成绩select max(grade),min(grade) from sc where cno='c01'从学生成绩表中查询课程号为c01的学生最高分数和最低分数select cno as 课程号,count(sno) as 选课人数 from sc group by cno从学生成绩表中查询并计算各个课程号及相应的选课人数select sno 学号,count(*) 选课门数,avg(grade) 平均成绩 from sc group by sno从学生成绩表中查询并计算各个学号及对应的选课门数并求平均成绩select sno from sc group by sno having count(*)>3从学生成绩表中查询选修了3门及以上课程的学生学号select sno,avg(grade),count(*) from sc group by sno having count(*)>=4从学生成绩表中查询选修了4门及以上的学生学号、平均成绩及课程数select * from studen t inner join sc on =从学生资料表和成绩表中查询每个学生及其选修课程的情况select ,sname,ssex,sage,sdept,cno,grade,xklb from student join sc on =从学生资料表和成绩表中查询每个学生及其选修课程情况的学生学号、姓名、姓名、年龄、课程号、成绩和相关类别select sname,cno,grade from student join sc on = where sdept='计算机系'从学生资料表和成绩表中查询计算机系的每个学生及相应选修课程的学生姓名、课程号和成绩。

SQL语句创建学生信息数据库表的示例

SQL语句创建学生信息数据库表的示例

用SQL语句创建如下三个基本表:学生表(Student)、课程表(Course)、学生选课表(SC),结构如下所示Student表结构Create table Student(Sno varchar(7) primary key,Sname varchar(10) not null,Ssex char (2) check(Ssex=‘男’or Ssex=’女’),Sage int check(Sage between 15 and 45),Sdept varchar(20) default(‘计算机系’))Course表结构Create table course(Cno varchar(10) primary key,Cname varchar(20) not null,Ccredit int check(Sctedit>0),Semester int check(Semester>0),Period int check(Period>0))SC表结构Create table SC(Sno varchar(7) foreign key references student(Sno),Cno varchar(10) foreign key references course(Cno),Grade int check(Grade between 0 and 100),Primary key (Sno,Cno))1.查询学生选课表中的全部数据。

SELECT *FROM SCgo2.查询计算机系学生的姓名、年龄。

Select Sname,SageFrom StudentWhere Sdept=’计算机系’3.查询成绩在70~80分之间的学生的学号、课程号和成绩。

Select Sno,Cno,GradeFrom Course,ScWhere o=o and sc.Grade between 70 and 804.查询计算机系年龄在18~20之间且性别为“男”的学生的姓名和年龄。

sql实践题目

sql实践题目

sql实践题目在这个SQL实践题目中,我们将讨论如何根据一个特定的数据库表格进行数据查询和操作。

这个题目将涉及到基本的SQL语句和操作,帮助您加深对SQL语言的理解和应用能力。

首先,我们有一个名为"students"的数据库表格,包含以下字段:学生ID (student_id)、学生姓名(student_name)、学生年龄(student_age)、学生性别(student_gender)、所在班级(class_id)。

任务一:查询所有学生的信息要完成这个任务,您需要使用SELECT语句从"students"表格中选择所有学生的信息。

SQL语句如下:SELECT * FROM students;这条语句将返回所有学生的信息,包括学生ID、学生姓名、学生年龄、学生性别和所在班级。

任务二:查询年龄大于18岁的学生信息要完成这个任务,您需要使用SELECT语句从"students"表格中选择年龄大于18岁的学生信息。

SQL语句如下:SELECT * FROM students WHERE student_age > 18;这条语句将返回所有年龄大于18岁的学生信息。

任务三:查询女生的信息要完成这个任务,您需要使用SELECT语句从"students"表格中选择女生的信息。

SQL语句如下:SELECT * FROM students WHERE student_gender = '女';这条语句将返回所有女生的信息。

任务四:查询学生的姓名和所在班级要完成这个任务,您需要使用SELECT语句从"students"表格中选择学生的姓名和所在班级。

SQL语句如下:SELECT student_name, class_id FROM students;这条语句将返回学生的姓名和所在班级信息。

SQL查询语句练习(50题)

SQL查询语句练习(50题)

SQL查询语句练习(50题)Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号;2、查询平均成绩大于60分的同学的学号和平均成绩;3、查询所有同学的学号、姓名、选课数、总成绩;4、查询姓“李”的老师的个数;5、查询没学过“叶平”老师课的同学的学号、姓名;6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;9、查询所有课程成绩小于60分的同学的学号、姓名;10、查询没有学全所有课的同学的学号、姓名;11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;15、删除学习“叶平”老师课的SC表记录;16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、002号课的平均成绩;17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分19、按各科平均成绩从低到高和及格率的百分数从高到低顺序20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004)21、查询不同老师所教不同课程平均分从高到低显示22、查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]24、查询学生平均成绩及其名次25、查询各科成绩前三名的记录:(不考虑成绩并列情况)26、查询每门课程被选修的学生数27、查询出只选修了一门课程的全部学生的学号和姓名28、查询男生、女生人数29、查询姓“张”的学生名单30、查询同名同性学生名单,并统计同名人数31、1981年出生的学生名单(注:Student表中Sage列的类型是datetime)32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩34、查询课程名称为“数据库”,且分数低于60的学生姓名和分数35、查询所有学生的选课情况;36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;37、查询不及格的课程,并按课程号从大到小排列38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;39、求选了课程的学生人数40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩41、查询各个课程及相应的选修人数42、查询不同课程成绩相同的学生的学号、课程号、学生成绩43、查询每门功成绩最好的前两名44、统计每门课程的学生选修人数(超过10人的课程才统计)。

sqlif语句学生

sqlif语句学生

sqlif语句学生SQL的IF语句在查询中用于根据条件来选择不同的结果进行返回。

它的基本语法如下:```IF(condition, value_if_true, value_if_false)```其中,condition是一个逻辑表达式,当它的值为真时,返回value_if_true;否则,返回value_if_false。

例如,我们有一个名为`students`的表,其中包含学生的姓名(`name`)和成绩(`score`)两列。

现在要根据学生的成绩判断他们的等级,如果成绩大于等于90分,则等级为A;如果成绩大于等于80分,则等级为B;否则,等级为C。

我们可以在查询结果中添加一个计算字段来实现:```sqlSELECT name, score,IF(score >= 90, 'A', IF(score >= 80, 'B', 'C')) AS gradeFROM students;```上述查询中的IF语句会根据学生的成绩来选择不同的等级进行返回。

如果学生的成绩大于等于90分,则返回'A';否则,会执行嵌套的IF语句,如果成绩大于等于80分,则返回'B',否则返回'C'。

需要注意的是,IF语句在不同的数据库管理系统中可能有所不同的语法和函数名称。

例如,在Oracle数据库中,可以使用CASE语句来实现类似的功能。

除了基本语法外,我们还可以使用IF语句的其他形式。

例如,我们可以在UPDATE语句中使用IF来根据条件更新不同的列值,或者在WHERE子句中使用IF来过滤数据等。

总结起来,SQL的IF语句是根据条件选择不同结果的一种表达式,它可以在查询、更新和过滤数据等场景中使用,具有很强的灵活性和可扩展性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Student(SId,Sname,Sage,Ssex) 学生表
SId:学号;Sname:学生姓名;Sage:学生年龄;Ssex:学生性别 Course(CId,Cname,TId) 课程表 CId,课程编号;Cname:课程名字;TId:教师编号
SC(SId,CId,score) 成绩表 SId:学号;CId,课程编号;score:成绩Teacher(TId,Tname) 教师表 TId:教师编号; Tname:教师名字问题:
1、查询“001”课程比“002”课程成绩高的所有学生的学生信息和成绩;
2、查询平均成绩大于60分的同学的学号和平均成绩;
3、查询所有同学的学号、姓名、选课数、总成绩;
4、查询姓“李”的老师的个数;
5、查询没学过“叶平”老师课的同学的学号、姓名;
6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;
7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;
8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;
9、查询所有课程成绩小于60分的同学的学号、姓名;
10、查询没有学全所有课的同学的学号、姓名;
11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;
12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;
13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;
14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;
15、删除学习“叶平”老师课的SC表记录;
17、按平均成绩从高到低显示所有学生的“java”、“C#”、“Html”三门的课程成绩,按如下形式显示:学生ID,,java,C#,HTML,有效课程数,有效平均分
18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分
19、按各科平均成绩从低到高和及格率的百分数从高到低顺序
21、查询不同老师所教不同课程平均分从高到低显示
24、查询学生平均成绩及其名次
25、查询各科成绩前三名的记录:(不考虑成绩并列情况) 26、查询每门课程被选修的学生数
27、查询出只选修了一门课程的全部学生的学号和姓名
28、查询男生、女生人数
29、查询姓“张”的学生名单
30、查询同名同性学生名单,并统计同名人数
31、1981年出生的学生名单(注:Student表中Sage列的类型是datetime)
32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列
33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩
34、查询课程名称为“数据库”,且分数低于60的学生姓名和分数
35、查询所有学生的选课情况;
1学生表student
S#学号,sname姓名,difdate日期,班级grade
2课程表 course
c#课程号,名字cname
3成绩单score
s#学号 c#课程号成绩score
--1统计每个班级有多少人
select grade,count(sname) from ze_student group by grade;
--2、2007级的各学生的平均成绩没有成绩的为0;
select a.sname,(select avg(nvl(b.score,0)) from ze_score b where b.s#=a.s#) from ze_student a where grade=2007;
--3 每科平均成绩和最高成绩最低成绩 2007级保留2位小数点四舍五入
select b.c#,avg(b.score),max(b.score),min(nvl(b.score,0)) from ze_student a,ze_score b where b.s# = a.s# and a.grade =2007 group by b.c#;
--4 给2007级数学加5分
update ze_score
set score=nvl(score,0)+5
where s# in (select s# from ze_student where grade=2007) and c# =(select c# from ze_course where cname='数学');
--5 90分以上的为优秀 90到85为良好,60分不及格各人平均成绩
select s#, c,
case
when c>=90 then '优秀'
when c<90 and c>=60 then '及格'
else '不及格' end as jige
from (select s#,avg(nvl(score,0)) as c from ze_score group by s# ) order by jige desc;
--6 求同月出生的人数
select to_char(difdate,'mm') as 月份,count(s#) as 出生人数 from ze_student group by to_char(difdate,'mm');
--7 各科的及格率和平均成绩截取保留2位
--及格率
select c#,avg(nvl(score,0))as 平均成绩,sum(nvl(score,0))as 总成绩, count(s#) as 各科人数,
trunc(sum(
case when nvl(score,0)>60 then '1'
else '0' end)/count(s#),2) as 及格率
from ze_score group by c#;
--每人的及格率
select s#, avg(nvl(score,0))as 平均成绩,sum(nvl(score,0))as 总成绩, count(c#) as 总科目,
sum(
case when nvl(score,0)>60 then 1
else 0 end
)/count(c#) as 及格率
from ze_score group by s#;
--8删除姓名是张三的大学语文成绩
select * from ze_score where s# in (select s# from ze_student where sname in '张三') and c#=(select c# from ze_course where cname ='大学语文');
--9 将数学替换成高等数学
update ze_course set cname='高等数学'where cname like '%数学%';
--10 格式化,显示将学号修改成S开头不足12位补0;
--查询
select concat('S',lpad(s#,11,0)) as s# from ze_score ;
select concat('S',lpad(s#,11,0)) as s# from ze_student ;
--格式化
update ze_score set s#= concat('S',lpad(s#,9,0));
update ze_student set s#= concat('S',lpad(s#,9,0));
四个足球队
select , from qiu a,qiu b where <;
commit
rollback
36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;
37、查询不及格的课程,并按课程号从大到小排列
38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;
39、求选了课程的学生人数
40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩
41、查询各个课程及相应的选修人数
42、查询不同课程成绩相同的学生的学号、课程号、学生成绩
43、查询每门功成绩最好的前两名
44、统计每门课程的学生选修人数(超过10人的课程才统计)。

要求输出课程号和选修人数,查询结果按人数降序排列,查询结果按人数降序排列,若人数相同,按课程号升序排列
45、检索至少选修两门课程的学生学号
46、查询全部学生都选修的课程的课程号和课程名
47、查询没学过“叶平”老师讲授的任一门课程的学生姓名
48、查询两门以上不及格课程的同学的学号及其平均成绩
49、检索“004”课程分数小于60,按分数降序排列的同学学号
50、删除“002”同学的“001”课程的成绩。

相关文档
最新文档