精华内容
下载资源
问答
  • 2.在学生选课数据库中创建数据 (1)创建学生 CREATE TABLE studentlnfo -> ( sno CHAR(8) PRIMARY KEY NOT NULL, -> sname varchar(10) NOT NULL, -> sgender CHAR(2), -> sbirth DATE, ->...

    1.创建学生选课数据库

    CREATE DATABASE students;
    

    在这里插入图片描述
    2.在学生选课数据库中创建数据表

    (1)创建学生表

    CREATE TABLE studentlnfo
        -> ( sno CHAR(8) PRIMARY KEY NOT NULL,
        -> sname varchar(10) NOT NULL,
        -> sgender CHAR(2),
        -> sbirth DATE,
        ->  sclass varchar(20)
        ->  );
    

    在这里插入图片描述
    (2)创建教师表

    CREATE TABLE tescher
        -> (
        -> ton char(4) PRIMARY KEY NOT NULL,
        -> tgender CHAR(2),
        -> tedu varchar(10),
        -> tpro varchar(8) DEFAULT 'jiangshi'
        -> );
    

    在这里插入图片描述
    在这里插入图片描述
    补充:
    在这里插入图片描述
    (3)创建课程表

    CREATE TABLE courses
        -> ( cno char(4) PRIMARY KEY NOT NULL,
        -> cname varchar(40) UNIQUE,
        ->  cperiod INT,
        ->  credit DECIMAL(3,1),
        -> ctno  char(4),
        -> CONSTRAINT fk_tescher_courses FOREIGN KEY (ctno) REFERENCES tescher(ton)
        -> );
    

    在这里插入图片描述
    (4)创建选课表

    CREATE TABLE elective
        -> (
        -> sno char(8),
        -> cno char(4),
        ->  score INT,
        -> PRIMARY KEY(sno,cno),
        -> CONSTRAINT fk_courses_elective FOREIGN KEY (cno) REFERENCES courses(cno),
        ->  CONSTRAINT fk_stu_elective  FOREIGN KEY (sno) REFERENCES studentlnfo (sno)
        -> );
    

    在这里插入图片描述

    展开全文
  • 学校学生选课系统数据库

    热门讨论 2009-12-29 14:58:53
    学校学生选课系统数据库,利用SQL SERVER MANAGEMENT STUDIO 创建数据库,名称为学生选课. 的定义如下所示 学生(学号,姓名,性别,出生日期,院系名称,备注); 课程(课程号,课程名,先行课,学分); 选修...
  • 该文档写出了学生选课系统的数据库需要用到的 根据该文档可以直接建起数据库
  • 学生选课系统数据库SQL语句练习题

    千次阅读 多人点赞 2018-05-24 15:35:59
    学生选课系统数据库SQL语句练习题 设有一数据库,包括四个:学生(Student)、课程(Course)、成绩(Score)以及教师信息(Teacher)。四个的结构分别如1-1的(一)~(四)所示,数据如1-2的...

           设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。用SQL语句创建四个表并完成相关题目。

     表1-1数据库的表结构 

    表(一)Student (学生表)                         

    属性名

    数据类型

    可否为空

    含 义

    Sno

    Char(3)

    学号(主码)

    Sname

    Char(8)

    学生姓名

    Ssex

    Char(2)

    学生性别

    Sbirthday

    datetime

    学生出生年月

    Class

    Char(5)

    学生所在班级

    表(二)Course(课程表)

    属性名

    数据类型

    可否为空

    含 义

    Cno

    Char(5)

    课程号(主码)

    Cname

    Varchar(10)

    课程名称

    Tno

    Char(3)

    教工编号(外码)

    表(三)Score(成绩表)

    属性名

    数据类型

    可否为空

    含 义

    Sno

    Char(3)

    学号(外码)

    Cno

    Char(5)

    课程号(外码)

    Degree

    Decimal(4,1)

    成绩

    主码:Sno+ Cno

    表(四)Teacher(教师表)

    属性名

    数据类型

    可否为空

    含 义

    Tno

    Char(3)

    教工编号(主码)

    Tname

    Char(4)

    教工姓名

    Tsex

    Char(2)

    教工性别

    Tbirthday

    datetime

    教工出生年月

    Prof

    Char(6)

    职称

    Depart

    Varchar(10)

    教工所在部门

    表1-2数据库中的数据

    表(一)Student

    Sno

    Sname

    Ssex

    Sbirthday

    class

    108

    曾华

    1977-09-01

    95033

    105

    匡明

    1975-10-02

    95031

    107

    王丽

    1976-01-23

    95033

    101

    李军

    1976-02-20

    95033

    109

    王芳

    1975-02-10

    95031

    103

    陆君

    1974-06-03

    95031

     

    表(二)Course

    Cno

    Cname

    Tno

    3-105

    计算机导论

    825

    3-245

    操作系统

    804

    6-166

    数字电路

    856

    9-888

    高等数学

    831

    表(三)Score

    Sno

    Cno

    Degree

    103

    3-245

    86

    105

    3-245

    75

    109

    3-245

    68

    103

    3-105

    92

    105

    3-105

    88

    109

    3-105

    76

    101

    3-105

    64

    107

    3-105

    91

    108

    3-105

    78

    101

    6-166

    85

    107

    6-166

    79

    108

    6-166

    81

    表(四)Teacher

    Tno

    Tname

    Tsex

    Tbirthday

    Prof

    Depart

    804

    李诚

    1958-12-02

    副教授

    计算机系

    856

    张旭

    1969-03-12

    讲师

    电子工程系

    825

    王萍

    1972-05-05

    助教

    计算机系

    831

    刘冰

    1977-08-14

    助教

    电子工程系

    --表(一)Student (学生表)
    CREATE table Student
    ( sno char(3) primary key,
    sname char(8),
    Ssex char(2),
    sbirthday datetime,
    class char(5)
    )
    --表(二)Course(课程表)
    CREATE table course
    ( cno char(5) primary key,
    cname varchar(10),
    tno char(3)
    )
    --表(三)Score(成绩表)
    CREATE table score
    ( sno char(3),
    cno char(5),
    degree decimal(4,1)
    )
    --表(四)Teacher(教师表)
    CREATE table teacher
    ( tno char(3) primary key,
    tname char(4),
    tsex char(2),
    tbirthday datetime,
    prof char(6),
    depary varchar(10)
    )
    SELECT *FROM course
    SELECT *FROM Student
    SELECT *FROM score
    SELECT *FROM teacher

    INSERT INTO Student VALUES
    (108,'曾华','男','1977-09-01',95033)
    INSERT INTO Student VALUES
    (105,'匡明','男','1975-10-02',95031)
    INSERT INTO Student VALUES
    (107,'王丽','女','1976-01-23',95033)
    INSERT INTO Student VALUES
    (101,'李军','男','1976-02-20',95033)
    INSERT INTO Student VALUES
    (109,'王芳','女','1975-02-10',95031)
    INSERT INTO Student VALUES
    (103,'陆君','男','1974-06-03',95031)

    INSERT INTO Course VALUES
    ('3-105','计算机导论',825)
    INSERT INTO Course VALUES
    ('3-245','操作系统',804)
    INSERT INTO Course VALUES
    ('6-166','数字电路',856)
    INSERT INTO Course VALUES
    ('9-888','高等数学',831)

    INSERT INTO Score VALUES
    (103,'3-245',86)
    INSERT INTO Score VALUES
    (105,'3-245',75)
    INSERT INTO Score VALUES
    (109,'3-245',68)
    INSERT INTO Score VALUES
    (103,'3-105',92)
    INSERT INTO Score VALUES
    (105,'3-105',88)
    INSERT INTO Score VALUES
    (109,'3-105',76)
    INSERT INTO Score VALUES
    (101,'3-105',64)
    INSERT INTO Score VALUES
    (107,'3-105',91)
    INSERT INTO Score VALUES
    (108,'3-105',78)
    INSERT INTO Score VALUES
    (101,'6-166',85)
    INSERT INTO Score VALUES
    (107,'6-166',79)
    INSERT INTO Score VALUES
    (108,'6-166',81)

    INSERT INTO Teacher VALUES
    (804,'李诚','男','1958-12-02','副教授','计算机系')
    INSERT INTO Teacher VALUES
    (856,'张旭','男','1969-03-12','讲师','电子工程系')
    INSERT INTO Teacher VALUES
    (825,'王萍','女','1972-05-05','助教','计算机系')
    INSERT INTO Teacher VALUES
    (831,'刘冰','女','1977-08-14','助教','电子工程系')

    --1、 查询Student表中的所有记录的Sname、Ssex和Class列。
    SELECT sname,Ssex,class from Student
    --2、 查询教师所有的单位即不重复的Depart列。
    SELECT DISTINCT depary FROM teacher
    --3、 查询Student表的所有记录。
    SELECT *FROM Student
    --4、 查询Score表中成绩在60到80之间的所有记录。
    SELECT *FROM score WHERE degree BETWEEN 60 AND 80
    --5、 查询Score表中成绩为85,86或88的记录。
    SELECT *FROM score WHERE degree IN (85,86,88)
    --6、 查询Student表中“95031”班或性别为“女”的同学记录。
    SELECT *FROM Student WHERE class="95031" OR Ssex='女'
    --7、 以Class降序查询Student表的所有记录。
    SELECT *FROM Student ORDER BY sno DESC
    --8、 以Cno升序、Degree降序查询Score表的所有记录。
    SELECT *FROM score ORDER BY cno
    SELECT *FROM score ORDER BY degree DESC
    --9、 查询“95031”班的学生人数。
    SELECT COUNT(*) from Student WHERE class="95031"
    --10、 查询Score表中的最高分的学生学号和课程号。(子查询或者排序)
    SELECT sno,cno from score WHERE degree=(SELECT MAX(degree) FROM score)
    --11、 查询每门课的平均成绩。 
    select avg(t.degree) from SCORE t group by t.cno
    --12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
    select avg(degree) as avgdegree from score group by cno having cno='3-105';
    --13、查询分数大于70,小于90的Sno列。
    SELECT sno FROM score WHERE degree BETWEEN 70 AND 90
    --14、查询所有学生的Sname、Cno和Degree列。
    SELECT Student.sname,score.cno,degree FROM Student,score WHERE Student.sno=score.sno
    --15、查询所有学生的Sno、Cname和Degree列。
    SELECT Student.sno,sname,score.degree FROM Student,score WHERE Student.sno=score.sno
    --16、查询所有学生的Sname、Cname和Degree列。
    select sname,cname,degree from student
    join score on student.sno=score.sno
    join course on Score.cno=course.cno
    --17、 查询“95033”班学生的平均分。
    select avg(degree) as avgdegree from score
    where sno in(select sno from student where class='95033')
    --18、 假设使用如下命令建立了一个grade表:
    create table grade
    ( low int,
    upp int,
    rank char(1)
    )
    insert into grade values(90,100,'A')
    insert into grade values(80,89,'b')
    insert into grade values(70,79,'C')
    insert into grade values(60,69,'D')
    insert into grade values(0,59,'E')
    select sno,cno, (case
    when degree between 90 and 100 then 'A'
    when degree between 80 and 89 then 'B'
    when degree between 70 and 79 then 'C'
    when degree between 60 and 69 then 'D'
    when degree between 0 and 59 then 'E' END)
    as rank from score
    --现查询所有同学的Sno、Cno和rank列。
    SELECT *FROM grade
    --19、  查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
    select * from score where cno='3-105'and degree>
    (select degree from score where sno='109' and cno='3-105')
    --20、查询score中选学多门课程的同学中分数为非最高分成绩的记录。
    select t.sno from SCORE t where t.degree<
    (select max(t.degree) from SCORE t) group by sno having count(cno)>1
    --21、 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
    SELECT *FROM score WHERE degree>(SELECT degree FROM score WHERE sno=109 AND cno='3-105')
    --22、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
    select sno,sname,sbirthday from student
    where datepart(year,sbirthday)=
    (select datepart(year,sbirthday) from student where sno='108')
    --23、查询“张旭“教师任课的学生成绩。
    select degree from score where cno=
    (select cno from course
    join teacher on teacher.tno=course.tno where tname='张旭')
    --24、查询选修某课程的同学人数多于5人的教师姓名。
    select tname from teacher join course on teacher.tno=course.tno
    where cno in (select cno from score group by cno having count(*)>5)
    --25、查询95033班和95031班全体学生的记录。
    select * from student where class in('95033','95031');
    --26、  查询存在有85分以上成绩的课程Cno.
    select distinct cno from score where degree>85;
    --27、查询出“计算机系“教师所教课程的成绩表。
    select cno,sno,degree from score where cno in
    (select cno from course ,teacher where
    course.tno=teacher.tno and teacher.depary='计算机系')
    --28、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。
    select tname,prof from teacher a where prof not in (select prof from teacher b where b.depary != a.depary)
    --29、查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。
    select * from score where cno='3-105' and degree
    >any (select degree from score where cno='3-245')
    order by degree desc
    --30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.
    select cno,sno,degree from score where cno='3-105' and degree>all
    (select degree from score where cno='3-245') order by degree desc
    --31、 查询所有教师和同学的name、sex和birthday.
    select tname,tsex,tbirthday from teacher union select sname,ssex,sbirthday from student
    --32、查询所有“女”教师和“女”同学的name、sex和birthday.
    select tname,tsex,tbirthday from teacher where tsex='女'
    union select sname,ssex,sbirthday from student where ssex='女'
    --33、 查询成绩比该课程平均成绩低的同学的成绩表。
    select * from score as s1 where
    degree< (select avg(degree) from
    score as s2 group by cno having s1.cno=s2.cno)
    --34、 查询所有任课教师的Tname和Depart.
    select tname,a.depary from teacher a where exists(select * from course b where a.tno=b.tno)
    --35 、 查询所有未讲课的教师的Tname和Depart.
    select tname,a.depary from teacher a where not exists(select * from course b where a.tno=b.tno)
    select tname,depary from teacher where tno not in
    ( select tno from course where cno in( select distinct cno from score))
    --36、查询至少有2名男生的班号。
    select class from student group by class,ssex having ssex='男' and count(ssex)>1
    --37、查询Student表中不姓“王”的同学记录。
    SELECT * FROM Student WHERE sno NOT IN (select sno from student WHERE sname LIKE '王%')
    --38、查询Student表中每个学生的姓名和年龄。
    select sname,datediff(year,Sbirthday,current_timestamp) from student
    --39、查询Student表中最大和最小的Sbirthday日期值。
    SELECT top 1 sbirthday FROM Student ORDER BY sbirthday
    SELECT TOP 1 sbirthday FROM Student ORDER BY sbirthday desc
    --40、以班号和年龄从大到小的顺序查询Student表中的全部记录。
    select * from student order by class desc,Sbirthday
    --41、查询“男”教师及其所上的课程。
    select tname,tsex,cname from teacher left join course on course.tno=teacher.tno where tsex='男'
    --42、查询最高分同学的Sno、Cno和Degree列。
    SELECT TOP 1 *FROM score ORDER BY degree DESC
    --43、查询和“李军”同性别的所有同学的Sname.
    SELECT sname FROM Student WHERE Ssex=
    (SELECT Ssex from Student WHERE sname='李军')
    --44、查询和“李军”同性别并同班的同学Sname.
    select sname from student where ssex=(select ssex from student where sname='李军')
    and class=(select class from student where sname='李军')
    and sname not in ('李军')
    --45、查询所有选修“计算机导论”课程的“男”同学的成绩表
    SELECT *FROM score WHERE sno IN (SELECT sno FROM Student WHERE Ssex='男'
    ) AND cno =(SELECT cno FROM course WHERE cname='计算机导论')


    本文出自 https://www.cnblogs.com/1030351096zzz/p/6095057.html

    展开全文
  • 当时带项老师直接给出了数据库,没有好好的分析数据库的合理性,现在回过头来详细分析,总结一下数据库的设计。 系统需求分析 学生可以选课。很明确。 教师可以查看自己任教的课程。 管理员可以管理课程,老师,学生...

    sc属于以前做过的一个项目。当时带项老师直接给出了数据库,没有好好的分析数据库的合理性,现在回过头来详细分析,总结一下数据库的设计。

    系统需求分析

    学生可以选课。很明确。
    教师可以查看自己任教的课程。
    管理员可以管理课程,老师,学生。相当于linux中的root用户。

    关系

    首先,我们需要1个切入点。选课选课,肯定是课程为重。
    这个库中除了中间表,共有5个主体:

    T_Student 学生
    T_Teacher 老师
    T_Clazz 教室/班级
    T_Course 课程
    T_Admin 管理员
    

    其中,我们主要分析关系为学生课程教师这三个实体。
    分析可知,这三个实体都是多对多。

    为什么?
    学生和课程:毫无疑问。
    学生和老师:毫无疑问。
    老师和课程:
    我最开始以为老师:课程=n:1.也就是1个老师只能教一个课。
    比如,历史系的老师总不可能教数学课吧?
    但是请这样想,有时候同一个专业的学生选择同一个老师的课程,他们却不在一起上课。
    这说明什么?这说明这个老师在教着两门课。虽然可能都是历史课,但却是两个班分开上的。(因为我每当过老师,所有不知道这里面的关系,不过可以猜出来)。
    实际上,不要把老师想象的过于神秘,老师就是个打工的,打工人而已。不同的是公司编成了学校。
    学校要让老师发挥最大效益,比如当初老师来求职,宣称自己可以教数据库,操作系统,计算机组成原理,高等数学。
    那就让这个老师给研究生讲操作系统和数据库,给本科生将计算机组成原理,高等数学。
    虽然能把这个老师给类似,但是学校给学生更多的产品(课程)。
    好吧,老师--打工人。学生--金主。学校--公司。
    

    那么,老师-课程,学生-课程,都建立一张表(m:n)的表。
    然后老师和学生之间不用建表了,可以通过一圈给连通(省空间麻)。
    然后还要建立一张学生,老师,课程的中间表。
    那为什么当初不直接建三表的中间表,而还要建三个表两两的中间表,还少了一张表呢?
    可能是系统查询的方便?或者是这是某个典型的业务系统,然后根据经验,需要这样建。
    不过少建的那张表的原因大概率是因为这是个关注课程和其他二者关系的系统。
    或许将来我会明白这么多冗余的中间表的意义吧。
    在这里插入图片描述

    create database sc;
    use sc;
    
    /*==============================================================*/
    /* Table: T_ADMIN                                               */
    /*==============================================================*/
    CREATE TABLE T_ADMIN 
    (
       ANO                  INT(11)           NOT NULL,
       NAME                 VARCHAR(20),
       PWD                  VARCHAR(32),
       PHONE                VARCHAR(20),
       EMAIL                VARCHAR(20),
       GENDER               CHAR(1),
       REMARK               VARCHAR(255),
       CONSTRAINT PK_T_ADMIN PRIMARY KEY (ANO)
    );
    
    /*==============================================================*/
    /* Table: T_CLAZZ                                               */
    /*==============================================================*/
    CREATE TABLE T_CLAZZ 
    (
       CLAZZNO              INT(11)           NOT NULL,
       CNAME                VARCHAR(20),
       CHTEACHER            VARCHAR(20),
       CLAZZROOM            INT(11),
       CONSTRAINT PK_T_CLAZZ PRIMARY KEY (CLAZZNO)
    );
    
    /*==============================================================*/
    /* Table: T_COURSE                                              */
    /*==============================================================*/
    CREATE TABLE T_COURSE 
    (
       CNO                  INT(11)           NOT NULL,
       NAME                 VARCHAR(20),
       CREDIT               INT(1),
       PREIODSTART          DATE,
       PREIODEND            DATE,
       CONSTRAINT PK_T_COURSE PRIMARY KEY (CNO)
    );
    
    /*==============================================================*/
    /* Table: T_SC                                                  */
    /*==============================================================*/
    CREATE TABLE T_SC 
    (
       SNO                  INT(11)           NOT NULL,
       TNO                  INT(11)           NOT NULL,
       CNO                  INT(11)           NOT NULL,
       SCORE                DOUBLE(5,2),
       CONSTRAINT PK_T_SC PRIMARY KEY (SNO, TNO, CNO)
    );
    
    /*==============================================================*/
    /* Table: T_STUDENT                                             */
    /*==============================================================*/
    CREATE TABLE T_STUDENT 
    (
       SNO                  INT(11)           NOT NULL,
       CLAZZNO              INT(11),
       PWD                  VARCHAR(32),
       SNAME                VARCHAR(20),
       PHONE                VARCHAR(20),
       GENDER               CHAR(1),
       BIRTH                DATE,
       REMARK               VARCHAR(255),
       CONSTRAINT PK_T_STUDENT PRIMARY KEY (SNO)
    );
    
    /*==============================================================*/
    /* Table: T_TC                                                  */
    /*==============================================================*/
    CREATE TABLE T_TC 
    (
       TNO                  INT(11)           NOT NULL,
       CNO                  INT(11)           NOT NULL,
       CONSTRAINT PK_T_TC PRIMARY KEY (TNO, CNO)
    );
    
    /*==============================================================*/
    /* Table: T_TEACHER                                             */
    /*==============================================================*/
    CREATE TABLE T_TEACHER 
    (
       TNO                  INT(11)           NOT NULL,
       TNAME                VARCHAR(20),
       PWD                  VARCHAR(32),
       PHONE                VARCHAR(20),
       HIREDATE             DATE,
       REMARK               VARCHAR(500),
       CONSTRAINT PK_T_TEACHER PRIMARY KEY (TNO)
    );
    
    ALTER TABLE T_SC
       ADD CONSTRAINT FK_T_SC_REFERENCE_T_STUDEN FOREIGN KEY (SNO)
          REFERENCES T_STUDENT (SNO);
    
    ALTER TABLE T_SC
       ADD CONSTRAINT FK_T_SC_REFERENCE_T_TEACHE FOREIGN KEY (TNO)
          REFERENCES T_TEACHER (TNO);
    
    ALTER TABLE T_SC
       ADD CONSTRAINT FK_T_SC_REFERENCE_T_COURSE FOREIGN KEY (CNO)
          REFERENCES T_COURSE (CNO);
          
          
    
    ALTER TABLE T_STUDENT
       ADD CONSTRAINT FK_T_STUDEN_REFERENCE_T_CLAZZ FOREIGN KEY (CLAZZNO)
          REFERENCES T_CLAZZ (CLAZZNO);
    
    ALTER TABLE T_TC
       ADD CONSTRAINT FK_T_TC_REFERENCE_T_TEACHE FOREIGN KEY (TNO)
          REFERENCES T_TEACHER (TNO);
    
    ALTER TABLE T_TC
       ADD CONSTRAINT FK_T_TC_REFERENCE_T_COURSE FOREIGN KEY (CNO)
          REFERENCES T_COURSE (CNO);
    
    展开全文
  • 3.5 学生选课系统 7 3.6 MS SQL Server 简介 7 4系统分析 9 4.1 系统简要分析 9 4.2 应用需求分析 9 4.3 业务流分析 10 4.4 数据流分析 10 4.5 系统数据模型设计 10 4.5.1 E-R图 10 4.5.2 数据 12 5 操作...
  • 学生选课系统数据库SQL语句考试题

    千次阅读 2016-11-23 19:53:00
    一、 设有一数据库,包括四个学生表(Student)、课程(Course)、成绩(Score)以及教师信息(Teacher)。四个的结构分别如1-1的(一)~(四)所示,数据如1-2的(一)~(四)所示。用SQL...

    一、            设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。用SQL语句创建四个表并完成相关题目。

                     1-1数据库的表结构 

    表(一)Student (学生表)                         

    属性名

    数据类型

    可否为空

    含 义

    Sno

    Char(3)

    学号(主码)

    Sname

    Char(8)

    学生姓名

    Ssex

    Char(2)

    学生性别

    Sbirthday

    datetime

    学生出生年月

    Class

    Char(5)

    学生所在班级

    表(二)Course(课程表)

    属性名

    数据类型

    可否为空

    含 义

    Cno

    Char(5)

    课程号(主码)

    Cname

    Varchar(10)

    课程名称

    Tno

    Char(3)

    教工编号(外码)

    表(三)Score(成绩表)

    属性名

    数据类型

    可否为空

    含 义

    Sno

    Char(3)

    学号(外码)

    Cno

    Char(5)

    课程号(外码)

    Degree

    Decimal(4,1)

    成绩

    主码:Sno+ Cno

    表(四)Teacher(教师表)

    属性名

    数据类型

    可否为空

    含 义

    Tno

    Char(3)

    教工编号(主码)

    Tname

    Char(4)

    教工姓名

    Tsex

    Char(2)

    教工性别

    Tbirthday

    datetime

    教工出生年月

    Prof

    Char(6)

    职称

    Depart

    Varchar(10)

    教工所在部门

    1-2数据库中的数据

    表(一)Student

    Sno

    Sname

    Ssex

    Sbirthday

    class

    108

    曾华

    1977-09-01

    95033

    105

    匡明

    1975-10-02

    95031

    107

    王丽

    1976-01-23

    95033

    101

    李军

    1976-02-20

    95033

    109

    王芳

    1975-02-10

    95031

    103

    陆君

    1974-06-03

    95031

     

    表(二)Course

    Cno

    Cname

    Tno

    3-105

    计算机导论

    825

    3-245

    操作系统

    804

    6-166

    数字电路

    856

    9-888

    高等数学

    831

    表(三)Score

    Sno

    Cno

    Degree

    103

    3-245

    86

    105

    3-245

    75

    109

    3-245

    68

    103

    3-105

    92

    105

    3-105

    88

    109

    3-105

    76

    101

    3-105

    64

    107

    3-105

    91

    108

    3-105

    78

    101

    6-166

    85

    107

    6-166

    79

    108

    6-166

    81

    表(四)Teacher

    Tno

    Tname

    Tsex

    Tbirthday

    Prof

    Depart

    804

    李诚

    1958-12-02

    副教授

    计算机系

    856

    张旭

    1969-03-12

    讲师

    电子工程系

    825

    王萍

    1972-05-05

    助教

    计算机系

    831

    刘冰

    1977-08-14

    助教

    电子工程系

    --表(一)Student (学生表)
    CREATE table Student
    ( sno char(3) primary key,
    sname char(8),
    Ssex char(2),
    sbirthday datetime,
    class char(5)
    )
    --表(二)Course(课程表)
    CREATE table course
    ( cno char(5) primary key,
    cname varchar(10),
    tno char(3)
    )
    --表(三)Score(成绩表)
    CREATE table score
    ( sno char(3),
    cno char(5),
    degree decimal(4,1)
    )
    --表(四)Teacher(教师表)
    CREATE table teacher
    ( tno char(3) primary key,
    tname char(4),
    tsex char(2),
    tbirthday datetime,
    prof char(6),
    depary varchar(10)
    )
    SELECT *FROM course
    SELECT *FROM Student
    SELECT *FROM score
    SELECT *FROM teacher

    INSERT INTO Student VALUES
    (108,'曾华','男','1977-09-01',95033)
    INSERT INTO Student VALUES
    (105,'匡明','男','1975-10-02',95031)
    INSERT INTO Student VALUES
    (107,'王丽','女','1976-01-23',95033)
    INSERT INTO Student VALUES
    (101,'李军','男','1976-02-20',95033)
    INSERT INTO Student VALUES
    (109,'王芳','女','1975-02-10',95031)
    INSERT INTO Student VALUES
    (103,'陆君','男','1974-06-03',95031)

    INSERT INTO Course VALUES
    ('3-105','计算机导论',825)
    INSERT INTO Course VALUES
    ('3-245','操作系统',804)
    INSERT INTO Course VALUES
    ('6-166','数字电路',856)
    INSERT INTO Course VALUES
    ('9-888','高等数学',831)

    INSERT INTO Score VALUES
    (103,'3-245',86)
    INSERT INTO Score VALUES
    (105,'3-245',75)
    INSERT INTO Score VALUES
    (109,'3-245',68)
    INSERT INTO Score VALUES
    (103,'3-105',92)
    INSERT INTO Score VALUES
    (105,'3-105',88)
    INSERT INTO Score VALUES
    (109,'3-105',76)
    INSERT INTO Score VALUES
    (101,'3-105',64)
    INSERT INTO Score VALUES
    (107,'3-105',91)
    INSERT INTO Score VALUES
    (108,'3-105',78)
    INSERT INTO Score VALUES
    (101,'6-166',85)
    INSERT INTO Score VALUES
    (107,'6-166',79)
    INSERT INTO Score VALUES
    (108,'6-166',81)

    INSERT INTO Teacher VALUES
    (804,'李诚','男','1958-12-02','副教授','计算机系')
    INSERT INTO Teacher VALUES
    (856,'张旭','男','1969-03-12','讲师','电子工程系')
    INSERT INTO Teacher VALUES
    (825,'王萍','女','1972-05-05','助教','计算机系')
    INSERT INTO Teacher VALUES
    (831,'刘冰','女','1977-08-14','助教','电子工程系')

    --1、 查询Student表中的所有记录的Sname、Ssex和Class列。
    SELECT sname,Ssex,class from Student
    --2、 查询教师所有的单位即不重复的Depart列。
    SELECT DISTINCT depary FROM teacher
    --3、 查询Student表的所有记录。
    SELECT *FROM Student
    --4、 查询Score表中成绩在60到80之间的所有记录。
    SELECT *FROM score WHERE degree BETWEEN 60 AND 80
    --5、 查询Score表中成绩为85,86或88的记录。
    SELECT *FROM score WHERE degree IN (85,86,88)
    --6、 查询Student表中“95031”班或性别为“女”的同学记录。
    SELECT *FROM Student WHERE class="95031" OR Ssex='女'
    --7、 以Class降序查询Student表的所有记录。
    SELECT *FROM Student ORDER BY sno DESC
    --8、 以Cno升序、Degree降序查询Score表的所有记录。
    SELECT *FROM score ORDER BY cno
    SELECT *FROM score ORDER BY degree DESC
    --9、 查询“95031”班的学生人数。
    SELECT COUNT(*) from Student WHERE class="95031"
    --10、 查询Score表中的最高分的学生学号和课程号。(子查询或者排序)
    SELECT sno,cno from score WHERE degree=(SELECT MAX(degree) FROM score)
    --11、 查询每门课的平均成绩。 
    select avg(t.degree) from SCORE t group by t.cno
    --12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
    select avg(degree) as avgdegree from score group by cno having cno='3-105';
    --13、查询分数大于70,小于90的Sno列。
    SELECT sno FROM score WHERE degree BETWEEN 70 AND 90
    --14、查询所有学生的Sname、Cno和Degree列。
    SELECT Student.sname,score.cno,degree FROM Student,score WHERE Student.sno=score.sno
    --15、查询所有学生的Sno、Cname和Degree列。
    SELECT Student.sno,sname,score.degree FROM Student,score WHERE Student.sno=score.sno
    --16、查询所有学生的Sname、Cname和Degree列。
    select sname,cname,degree from student
    join score on student.sno=score.sno
    join course on Score.cno=course.cno
    --17、 查询“95033”班学生的平均分。
    select avg(degree) as avgdegree from score
    where sno in(select sno from student where class='95033')
    --18、 假设使用如下命令建立了一个grade表:
    create table grade
    ( low int,
    upp int,
    rank char(1)
    )
    insert into grade values(90,100,'A')
    insert into grade values(80,89,'b')
    insert into grade values(70,79,'C')
    insert into grade values(60,69,'D')
    insert into grade values(0,59,'E')
    select sno,cno, (case
    when degree between 90 and 100 then 'A'
    when degree between 80 and 89 then 'B'
    when degree between 70 and 79 then 'C'
    when degree between 60 and 69 then 'D'
    when degree between 0 and 59 then 'E' END)
    as rank from score
    --现查询所有同学的Sno、Cno和rank列。
    SELECT *FROM grade
    --19、  查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
    select * from score where cno='3-105'and degree>
    (select degree from score where sno='109' and cno='3-105')
    --20、查询score中选学多门课程的同学中分数为非最高分成绩的记录。
    select t.sno from SCORE t where t.degree<
    (select max(t.degree) from SCORE t) group by sno having count(cno)>1
    --21、 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
    SELECT *FROM score WHERE degree>(SELECT degree FROM score WHERE sno=109 AND cno='3-105')
    --22、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
    select sno,sname,sbirthday from student
    where datepart(year,sbirthday)=
    (select datepart(year,sbirthday) from student where sno='108')
    --23、查询“张旭“教师任课的学生成绩。
    select degree from score where cno=
    (select cno from course
    join teacher on teacher.tno=course.tno where tname='张旭')
    --24、查询选修某课程的同学人数多于5人的教师姓名。
    select tname from teacher join course on teacher.tno=course.tno
    where cno in (select cno from score group by cno having count(*)>5)
    --25、查询95033班和95031班全体学生的记录。
    select * from student where class in('95033','95031');
    --26、  查询存在有85分以上成绩的课程Cno.
    select distinct cno from score where degree>85;
    --27、查询出“计算机系“教师所教课程的成绩表。
    select cno,sno,degree from score where cno in
    (select cno from course ,teacher where
    course.tno=teacher.tno and teacher.depary='计算机系')
    --28、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。
    select tname,prof from teacher a where prof not in (select prof from teacher b where b.depary != a.depary)
    --29、查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。
    select * from score where cno='3-105' and degree
    >any (select degree from score where cno='3-245')
    order by degree desc
    --30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.
    select cno,sno,degree from score where cno='3-105' and degree>all
    (select degree from score where cno='3-245') order by degree desc
    --31、 查询所有教师和同学的name、sex和birthday.
    select tname,tsex,tbirthday from teacher union select sname,ssex,sbirthday from student
    --32、查询所有“女”教师和“女”同学的name、sex和birthday.
    select tname,tsex,tbirthday from teacher where tsex='女'
    union select sname,ssex,sbirthday from student where ssex='女'
    --33、 查询成绩比该课程平均成绩低的同学的成绩表。
    select * from score as s1 where
    degree< (select avg(degree) from
    score as s2 group by cno having s1.cno=s2.cno)
    --34、 查询所有任课教师的Tname和Depart.
    select tname,a.depary from teacher a where exists(select * from course b where a.tno=b.tno)
    --35 、 查询所有未讲课的教师的Tname和Depart.
    select tname,a.depary from teacher a where not exists(select * from course b where a.tno=b.tno)
    select tname,depary from teacher where tno not in
    ( select tno from course where cno in( select distinct cno from score))
    --36、查询至少有2名男生的班号。
    select class from student group by class,ssex having ssex='男' and count(ssex)>1
    --37、查询Student表中不姓“王”的同学记录。
    SELECT * FROM Student WHERE sno NOT IN (select sno from student WHERE sname LIKE '王%')
    --38、查询Student表中每个学生的姓名和年龄。
    select sname,datediff(year,Sbirthday,current_timestamp) from student
    --39、查询Student表中最大和最小的Sbirthday日期值。
    SELECT top 1 sbirthday FROM Student ORDER BY sbirthday
    SELECT TOP 1 sbirthday FROM Student ORDER BY sbirthday desc
    --40、以班号和年龄从大到小的顺序查询Student表中的全部记录。
    select * from student order by class desc,Sbirthday
    --41、查询“男”教师及其所上的课程。
    select tname,tsex,cname from teacher left join course on course.tno=teacher.tno where tsex='男'
    --42、查询最高分同学的Sno、Cno和Degree列。
    SELECT TOP 1 *FROM score ORDER BY degree DESC
    --43、查询和“李军”同性别的所有同学的Sname.
    SELECT sname FROM Student WHERE Ssex=
    (SELECT Ssex from Student WHERE sname='李军')
    --44、查询和“李军”同性别并同班的同学Sname.
    select sname from student where ssex=(select ssex from student where sname='李军')
    and class=(select class from student where sname='李军')
    and sname not in ('李军')
    --45、查询所有选修“计算机导论”课程的“男”同学的成绩表
    SELECT *FROM score WHERE sno IN (SELECT sno FROM Student WHERE Ssex='男'
    ) AND cno =(SELECT cno FROM course WHERE cname='计算机导论')

     

    转载于:https://www.cnblogs.com/1030351096zzz/p/6095057.html

    展开全文
  • 学生选课系统数据库的设计与实现

    千次阅读 多人点赞 2016-06-23 10:38:30
    实现功能: 对于学生而言可以实现选课功能,日常学习中,我们选课的时候,需要登陆自己的学号,密码,... 学生的信息应该有 ... 教师的信息应该有 ... 课程 (课程号,课程名,先修课号,学分) ...学生选课 (学号,课程号,
  • –1. 创建一个名字为"Studentxuanke数据库"的数据库 CREATE DATABASE xuanke ON PRIMARY ( NAME = 'xuanke_data', FILENAME = 'E:\Professional flie\SQL file\database\xuanke\xuanke_data.mdf' , SIZE = 5120...
  • 学生选课管理系统,是相关数据的建立及详细描述
  • (一)Student (学生表) 属性名 数据类型 可否为空 含 义 Sno Varchar2(3) 否 学号(主键) Sname Varchar2(8) 否 学生姓名 ...
  • 学生选课数据库设计

    千次阅读 2015-09-28 20:51:33
    数据库:selectivedb 一、数据汇总 表名 说明 t_department 系别 t_class 班级 t_teacher ...教师 ...课程 ...学生表 t_sele
  • 学生选课数据库分析(Hadoop实验)

    千次阅读 多人点赞 2020-12-18 22:58:57
    本次实验我们假设了一个实际场景:假设现在有一个省份的学生选课数据需要你去分析,那么在数据集复杂和庞大的面前,我们的Hadoop是否还实用,这里所说的数据集复杂是因为有多个数据需要你去采集,分析也需要进行多...
  • SQL之学生选课数据库

    千次阅读 2013-04-07 08:07:32
    1、E-R图   2、关系模式 Student(Sno, Sname, Sage, Ssex, Sdept) Course(Cno, Cname, Cpno, Ccredit) SC(Sno, Cno,Grade) .../*建立学生表*/ create table Student( Sno varchar2(9) primary key, Sname var
  • (二)Course(课程) 属性名 数据类型 可否为空 含 义 Cno Varchar2(5) 否 课程号(主键) Cname Varchar(10) 否 课程名称 ...
  • (三)Score(成绩) 属性名 数据类型 可否为空 含 义 Sno Varchar2(3) 否 学号(外键) Cno Varchar2(5) 否 课程号(外键) ...
  • (四)Teacher(教师) 属性名 数据类型 可否为空 含 义 Tno Varchar2(3) 否 教工编号(主键) Tname Varchar2(4) 否 教工姓名 ...
  • 数据库数据增删改查练习题(1)——学生选课数据库 基本数据 S(SNO,SNAME,AGE,SEX)学生 C(CNO,CNAME,TEACHER)课程 SC(SNO,CNO,GRADE)选课 练习题 试用SQL表达式实现下列查询: 1)查询“程军”老师所...
  • 之前说的的书店管理系统实在太多东西了,而我暑假计划学习的东西比较多,所以用一个上午的时间做了使用java对数据库中的进行增删改查,可以减少跟我一样的学生设计时少走点弯路;之前答应的书店管理系统,只有这个...
  • 学生选课管理系统 数据库课程设计

    千次阅读 热门讨论 2019-08-05 19:12:22
    ***主要能实现以下几个功能,不同的用户需要不同的登陆端来实现不同的功能,学生端要实现选课,退课,能看自己的课程,能看自己的成绩等功能,教师端要实现对自己学生的基本信息的增加,修改,删除,查询等功能...
  • 一、 设有一数据库,包括四个学生表(Student)、课程(Course)、成绩(Score)以及教师信息(Teacher)。四个的结构分别如1-1的(一)~(四)所示,数据如1-2的(一)~(四)所示。用SQL...
  • 联合查询之学生选课查询 问题及描述: 学生和成绩 学生是主,成绩是子 课程和成绩 课程是主,成绩是子 老师和课程 老师是主,课程是子 1.学生 Student(S#,Sname,Sage,Ssex) –S# ...
  • 大学生选课系统的数据库,包括日志文件跟mdf文件,包括学生表跟系院,还有管理员等

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 632
精华内容 252
关键字:

学生选课表数据库