sqltest1

mysql -u root -p123456;
quit;

create database testfj character set utf8mb4;
use testfj;

create table Student(
    Sno varchar(7) primary key,
    Sname varchar(10) not null,
    Ssex varchar(2) check(Ssex = "男" or Ssex = "女"),
    Sage int check(Sage >= 15 and Sage <= 45),
    Sdept varchar(20) default "计算机系"
);

create table Course(
    Cno varchar(10) primary key,
    Cname varchar(20) not null,
    Ccredit int check(Ccredit > 0),
    Semster int check(Semster > 0) ,
    Period int check(Period > 0) 
);

create table SC(
    Sno varchar(7),
    Cno varchar(10),
    Grade int check (Grade >= 0 and Grade <= 100),
    primary key(Sno,Cno),
    foreign key (Sno) references Student(Sno),
    foreign key (Cno) references Course(Cno)
);

alter table SC 
add XKLB varchar(4);

alter table Course 
drop Period;

insert into Student 
values
('9512101','李勇','男',19,'计算机系'),
('9512102','刘晨','男',20,'计算机系'),
('9512103','王敏','女',20,'计算机系'),
('9521101','张立','男',22,'信息系'),
('9521102','吴宾','女',21,'信息系'),
('9521103','张海','男',20,'信息系'),
('9531101','钱小平','女',18,'数学系'),
('9531102','王大力','男',19,'数学系');

insert into Course 
values
('C01','计算机文化学',3,1),
('C02','VB',2,3),
('C03','计算机网络',4,7),
('C04','数据库基础',6,6),
('C05','高等数学',8,2),
('C06','数据结构',5,4);

insert into SC 
values
('9512101','c01',90,'必修'),
('9512101','c02',86,'选修'),
('9512101','c06',null,'必修'),
('9512102','c02',78,'选修'),
('9512102','c04',66,'必修'),
('9521102','c01',82,'选修'),
('9521102','c02',75,'选修'),
('9521102','c04',92,'必修'),
('9521102','c05',50,'必修'),
('9521103','c02',68,'选修'),
('9521103','c06',null,'必修'),
('9531101','c01',80,'选修'),
('9531101','c05',95,'必修'),
('9531102','c05',85,'必修');


-- //查询既不属于信息系也不属于数学系的学生的姓名和性别
select Sname,Ssex 
from Student 
where Sdept != "信息系" and Sdept != "数学系";
-- where Sdept <> "信息系" and Sdept <> "数学系";
-- where Sdept not in("信息系","数学系");


-- //查询数学系成绩在80分以上的学生的学号,姓名
-- //多表联查,内连接
select t1.Sno,t1.Sname
from Student as t1,SC as t2
where t1.Sno = t2.Sno 
and t1.Sdept <=> "数学系" and t2.Grade > 80;
-- //多表联查,内连接2
select t1.Sno,t1.Sname
from Student as t1
inner join SC as t2
on t1.Sno = t2.Sno 
and t1.Sdept <=> "数学系" and t2.Grade > 80;
-- //子查询
select Sname,Sno 
from Student 
where Sdept <=> "数学系" 
and 
Sno in(
    select Sno from Sc where Grade > 80
);


-- //查询计算机系考试成绩最高的学生的姓名
-- //多表联查
select Sname 
from Student as t1,SC as t2
where t1.Sno = t2.Sno 
and t1.Sdept <=> "计算机系"
order by t2.Grade desc 
limit 1;


-- //删除计算系不及格学生的选课记录
-- 子查询
delete from SC 
where Grade < 60 
and Sno in(
    select Sno from Student where Sdept <=> "计算机系"
);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值