mysql PTA题解删除选修C语言课程的女生成绩记录

  • Post author:
  • Post category:mysql




PTA题解 删除选修C语言课程的女生成绩记录

本题目要求编写DELETE语句,删除选修’C语言’课程的女生的选课记录。



表结构:

请在这里写定义表结构的SQL语句。例如:

CREATE TABLE

stu

(


sno

char(4) NOT NULL,


sname

char(8) NOT NULL,


sex

tinyint(1) DEFAULT NULL, –0为女生,1为男生。


mno

char(2) DEFAULT NULL,


birdate

datetime DEFAULT NULL,


memo

text,

PRIMARY KEY (

sno

)

);

CREATE TABLE

cou

(


cno

char(4) NOT NULL,


cname

varchar(30) NOT NULL,


credit

smallint(6) DEFAULT NULL,


ptime

char(5) DEFAULT NULL,


teacher

char(10) DEFAULT NULL,

PRIMARY KEY (

cno

)

)

CREATE TABLE

sc

(


sno

char(4) NOT NULL,


cno

char(4) NOT NULL,


grade

decimal(6,1) DEFAULT NULL,

PRIMARY KEY (

sno

,

cno

),

CONSTRAINT

fk_sc_cno

FOREIGN KEY (

cno

) REFERENCES

cou

(

cno

),

CONSTRAINT

fk_sc_sno

FOREIGN KEY (

sno

) REFERENCES

stu

(

sno

)

)



表样例

请在这里给出上述表结构对应的表样例。例如

stu表:

在这里插入图片描述

cou表:

在这里插入图片描述

sc表:

在这里插入图片描述



输出样例:

删除记录后,sc表如下:

在这里插入图片描述



题解

首先看题目,所需要的内容是三张表,这边需要采用连接的方式,个人倾向于用左连接。进行表与表之间的左连接的时候是以写在左边的表为主导。因为要三张表的左连接,所以在中间位置的那张表必须有连接另外两张表的相同元素,

如sc表的sno对应stu表的sno,sc表的cno对应cou表的cno。

连接完之后继续看题目,发现这道题是删除,创建表的时候有外键元素,所以得先取消外键。使用的mysql语句是

SET FOREIGN_KEY_CHECKS=0;

然后编写删除语句:

DELETE stu,cou,sc from cou left join sc on cou.cno=sc.cno left join stu on sc.sno=stu.sno where stu.sex=0 and cou.cname=‘C语言’

用这两个语句就可以ac这道pta题目



版权声明:本文为weixin_51229770原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。