首页 > 技术文章 > MySQL练习

shyzzx 2021-06-06 20:43 原文

create database zuoye; -- 创建数据库
use zuoye; -- 使⽤数据库
 
#创建⼏个库表
create table Student -- 学⽣表
(
Sno char(3) NOT NULL Primary key ,            -- 学号 ,设为主键,不允许空值
Sname char(8) NOT NULL,         -- 学⽣姓名
Ssex char(2)NOT NULL,           -- 学⽣性别
Sbirthday datetime,         --    学⽣出⽣年⽉
Class char(5)            -- 学⽣所在班级
);
 
 
create table Teacher        -- 教师表
(
Tno char(3)NOT NULL primary key,         -- 教⼯编号设为主键
Tname char(4)NOT NULL,        -- 教⼯姓名
Tsex char(2)NOT NULL,          -- 教⼯性别
Tbirthday datetime,        -- 教⼯出⽣年⽉
Prof char(6),          -- 职称
Depart varchar(10)NOT NULL         -- 教⼯所在部⻔
)
 
create table Course       -- 课程表
(
Cno char(5) NOT NULL Primary key ,          -- 课程号设为主键
Cname varchar(10) NOT NULL,         -- 课程名称
Tno char(3) NOT NULL references Teacher(Tno)         -- 教⼯编号设为外键
)
 
create table Score -- 成绩表
(
Sno char(3) NOT NULL references Student(Sno),           -- 学号设为外码
Cno char(5) NOT NULL references Course(Cno),       -- 课程号设为外码
Degree Decimal(4,1),            -- 成绩
primary key(Sno,Cno)           -- 学号和课程号设为联合主键
)
 
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 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','助教','电⼦⼯程系');
 
 
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);
 
 

基础题:

-- 1 查询Student表中的所有记录的Sname、Ssex和Class列。

select sname,ssex,class from student;

 

 

 

 

-- 2 查询教师所有的单位即不重复的Depart列。

select depart,group_concat(tname) from teacher group by depart;

 

 

-- 3 查询Student表的所有记录。

Select*fromstudent;

 

 

 

-- 4 查询Score表中成绩在60到80之间的所有记录。

Select * from score where degree between 60 an 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 class desc;

 

 

 

 

-- 8 Cno升序、Degree降序查询Score表的所有记录。

Select * from score order by cno asc,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);

 

 

-- 10.1 查询Score表中除了每⻔课程最⾼分的学⽣学号和课程号。(⼦查询或者排序)

Select sno,cno from score where degree not in (select Max(degree) from score group by cno);

 

 

 

拔⾼题:

-- 11、查询每⻔课的平均成绩。

Select avg(degree) from score group by cno;

 

 

 

-- 12、查询Score表中⾄少有5名学⽣选修的并以3开头的课程的平均分数。

Select avg(degree) from score group by having count(*)>5 and cno like ‘3%’;

 

-- 13、查询分数⼤于70,⼩于90的Sno列。

Select degree,cno from score where degree between 70 and 90;

 

 

-- 14、查询所有学⽣的Sname、Cno和Degree列。

 Select sname,cname,degree from score s inner join student on s.sno=student.sno;

 

 

-- 15、查询所有学⽣的Sno、Cname和Degree列。

Select sno,cname,degree from score s inner join course on s.cno=s.cno;

 

 

-- 16、查询所有学⽣的Sname、Cname和Degree列。

Selsect sname,cname,degree from score s inner join student on s.sno=student.sno inner join course on s.cno=course.cno;

 

 

 

 

 

推荐阅读