暇で無事家でSQLを書きます
2425 ワード
--
SELECT sname FROM s
WHERE sex = ' ' AND (1 <= (
SELECT COUNT(*) FROM sc, c
WHERE s.sn = sc.sn AND sc.cn = c.cn AND c.teacher = ' '));
--
SELECT DISTINCT cn, cname
FROM c
WHERE c.cn NOT IN (
SELECT DISTINCT sc.cn
FROM s, sc
WHERE s.sname = ' ' AND s.sn = sc.sn);
--
SELECT sn, sname
FROM s
WHERE NOT EXISTS (
SELECT *
FROM c
WHERE NOT EXISTS (SELECT *
FROM sc
WHERE sc.sn = s.sn AND sc.cn = c.cn));
--
--
SELECT cn, cname
FROM c
WHERE NOT EXISTS (
SELECT *
FROM s
WHERE NOT EXISTS(
SELECT *
FROM sc
WHERE s.sn = sc.sn AND sc.cn = c.cn
)
);
--
SELECT sn, sname
FROM s
WHERE EXISTS (
SELECT * FROM sc WHERE s.sn = sc.sn AND EXISTS (
SELECT * FROM c WHERE sc.cn = c.cn AND c.teacher = ' '
)
);
-- 5
UPDATE sc
SET grade = grade + 5
WHERE sc.grade < (
SELECT AVG(grade)
FROM sc
WHERE EXISTS (
SELECT *
FROM s
WHERE sc.sn = s.sn AND s.sex = ' '
));
--
SELECT *
FROM c
WHERE EXISTS (
SELECT *
FROM s
WHERE c.cn IN (
SELECT sc.cn
FROM sc
WHERE s.sn = sc.sn)
);
CREATE TABLE c
(
cn integer NOT NULL,
cname character varying,
teacher character varying,
CONSTRAINT pk_cn PRIMARY KEY (cn)
)
CREATE TABLE s
(
sn integer NOT NULL,
sname character varying,
age integer,
sex character varying,
CONSTRAINT pk_sn PRIMARY KEY (sn)
)
CREATE TABLE sc
(
sn integer NOT NULL,
cn integer NOT NULL,
grade integer,
CONSTRAINT pk_sn_cn PRIMARY KEY (sn, cn),
CONSTRAINT fk_cn FOREIGN KEY (cn)
REFERENCES c (cn) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_sn FOREIGN KEY (sn)
REFERENCES s (sn) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)