求MYSQL数据库答案

求MYSQL数据库答案,第1张

1、先用NavicatforMySQL创建名字为shopping的数据库,如下图所示:2、创建的shopping数据库上运行已有的.sql文件,要注意上面创建的数据库名字shopping最好和原先.sql文件中的名字一样,也可以不一样,如果不一样的话会自动生成原来.sql文件中SQL语句中所命名的数据库。此时,可以把上面创建的shopping数据库删除了就可以,直接用自动生成的就行。运行.sql步骤如下:右键你刚才创建的shopping数据库——>运行sql文件——>选择.sql文件位置——执行即可。创建好的数据库如下所示:

# 一、使用创建表的语句,创建如下三张表

# 1)学生表(Student)

create table Student (

  stuID   char(6) primary key,

  stuName varchar(50) not null,

  stuSex  char(2),

  spec    varchar(20) not null

)

# 2)课程表(Course)

create table Course (

  couID   int primary key,

  couName varchar(50) not null,

  credit  float       not null

)

# 3)成绩表(Score)

create table Score (

  stuID char(6),

  couID int,

  score int default 0

)

# 二、向三张表中分别插入如下数据

# 1)学生表

insert into student (stuID, stuName, spec) values (10001, "李珍珍", "英语")

insert into student (stuID, stuName, stuSex, spec) values (10002, "蔡准", "男", "计算机")

# 2)课程表

insert into course values (1, "数据库原理与应用", 4.5)

# 3)成绩表

insert into score values (10001, 1, 90)

insert into score values (10002, 1, 0)

# 三、将学号是100001的学生的性别改成“女“

update student

set stuSex = "女"

where stuID = 10001

# 四、删除学生“蔡准“的”数据库原理与应用“的成绩

delete from score

where stuID = (select stuID

               from student

               where stuName = "蔡准") 

      and 

      couID = (select couID

               from course

               where couName = "数据库原理与应用")

               

# 五、删除没有被学生参加过考试的课程

delete from course

where couID not in (select couID

                    from score

                    group by couID)

                    

 # 查询“英语”专业学生的信息,包括学号,姓名,性别,并按照学号升序排列;

 select *

from student

where spec = "英语"

order by stuID asc

 

 # 七、查询所有学生的所有信息:学号、姓名、性别、专业,课程名,成绩

 select

  student.*,

  course.couName,

  score.score

from student

  left join score on student.stuID = score.stuID

  left join course on score.couID = course.couID

                                                  

 # 八、查询数据库原理与应用课,成绩前三名的学生的学号、姓名、分数

 select

  score.stuID,

  student.stuName,

  score.score

from score

  left join student on score.stuID = student.stuID

  left join course on score.couID = course.couID

where course.couName = "数据库原理与应用"

order by score.score desc

limit 3

# 九、查询每个专业学生的数量;

select

  spec,

  count(stuID)

from student

group by spec

# 十、定义“英语”专业学生所学课程的信息视图v_English,包括学号、姓名、课程号和分数。

create view v_English as (

  select

    student.stuID,

    student.stuName,

    score.couID,

    score.score

  from student

    left join score on student.stuID = score.stuID

  where student.spec = "英语"

)

# 十一、创建存储过程,查询成绩在85分以上的学生的总人数 

delimiter $$

create procedure count_score_gt_85()

  begin

    select count(distinct stuID)

    from score

    where score > 85

  end$$

delimiter 

# 十二、创建触发器,当删除一门课程时,把对应的成绩表中的数据也删掉

delimiter $$

create trigger tri_course_deleted

  after delete

  on course

  for each row

  begin

    delete from score

    where couID = old.couID

  end$$

delimiter 


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9995260.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存