SQL语言汇总

本文深入探讨了SQL语言在实际应用中的多种高级技巧,包括如何使用主键与外键关联不同表格,删除冗余数据,查询特定条件的学生信息,以及进行复杂的多表联合查询。通过具体案例,如成绩对比、平均成绩计算、特定条件筛选等,读者可以学习到如何高效地管理和分析数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、主键和外键:

 如果一个表的某一列是另一个表的主键,则该列被称为外键。

外键是连接两个表的纽带,通过外键与主键的等值连接,可以将表中的不同信息相关联起来。

create table student(
 sno varchar(20) primary key,//学号是主键
 sname varchar(30),
 sage int,
 sdept varchar(255), //系号
foreign key(sdept) references(course(cno)) 
);

create table course(
cno varchar(20) primary key,//系号是主键
cname varchar(20),
credit int//学分
);

2、删除一张表中所有冗余的数据

delete from student
where sno not in(
 select sno from(
   select min(sno) as sno
   from student
   group by sname,sage,sdept)a
 )
);

3、查询001课程比002课程成绩高的所有学生的学号

Student(Sid,Sname,Sage,Ssex)学生表
Sid:学号
Sname:学生姓名
Sage:学生年龄
Ssex:学生性别
Course(Cid,Cname,T#)课程表
Cid:课程编号
Cname:课程名称
SC(Sid,Cid,score)成绩表
Sid:学号
Cid:课程编号
score:成绩
select a.id from
(select sid,score from sc where cid='001')as a,
(select sid,score from sc where cid='002')as b,
where a.sid=b.sid and a.score>b.score;

4、查询平均成绩大于60分的同学的学号和平均成绩

select sid,avg(score)
from sc
group by sid
having avg(score)>60;

5、查询所有姓“李”的同学的个数:

select count(sname)
from student
where sname like '李%';

5、修改王明同学的名字为张三

update student
set sname='张三'
where sname='王明';

6、用一条sql语句查询出每门课程都大于80分的学生姓名

select sname
from sc
group by sname
having min(score)>80;

7、查询每门课程的最高分的学生的姓名

select b.* 
from (select subject,max(score) m from grade GROUP BY subject) t,grade b 
where t.subject=b.subject and t.m=b.score

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值