sql多表查询--学生课程表查询

创建表

学生表:(序号,姓名,年龄,专业)

create table s(
sno INT(11) auto_increment,
sname varchar(125),
sage INT(11),
sdept varchar(125),
primary key(sno)
);

 课程表:(序号,课程名)

create table c(
cno INT(11) auto_increment,
cname varchar(255),
primary key(cno)
);

 学生课程关系表:(序号,学生序号,课程序号,分数)

create table sc(
scno INT(11) auto_increment,
sno INT(11),
cno INT(11),
grade INT(255),
primary key(scno)
);

 

常用单表查询

limit

一个参数是查询条数

select sno,sname from s limit 2

 

两个参数n,m是(1.从第n+1行开始2.查询m条数)

select sno,sname from s limit 0,2

 

between

select  sno,sname,sage from s where sage between 18 and 20

 

 distinct

 不重复查询

select distinct sdept from s 

 

like

通配符查询

select  sname from s where sname like "小%"

 

 

 

多表查询

in

 1.查询修读“软件工程”的学生姓名(使用in嵌套子查询)

select sname from s where sno in
(select sno from sc where cno in (
	select cno from c where cname="软件工程"
))

 2.查询至少修读“软件工程”与“c语言”的学生姓名(在1中使用or)

select sname from s where sno in 
(select sno from sc where cno in 
(select cno from c where cname="软件工程" or cname="c语言")) 

 3.查询不修“软件工程”的学生姓名(在2中使用not)

select sname from s where sno in 
(select sno from sc where cno not in 
(select cno from c where cname="软件工程" )) 

 exits

转载于:https://www.cnblogs.com/ming-szu/p/8966930.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值