Anda di halaman 1dari 16

DBMS QUERIES CREATE TABLE College (cName varchar(20) primary key, state varchar(20), enrollment integer); INSERT INTO

College VALUES("Stanford","CA","15000"); INSERT INTO College VALUES("Berkeley","CA","36000"); INSERT INTO College VALUES("MIT","MA","10000"); INSERT INTO College VALUES("Cornell","NY","21000"); UPDATE College SET enrollment = 15000 WHERE cName = "Stanford"

CREATE TABLE Student (sID varchar(20) primary key, sName varchar(20),GPA integer, sizeHS integer); INSERT INTO Student VALUES("123","Amy","3.9","1000"); INSERT INTO Student VALUES("234","Bob","3.6","1500"); INSERT INTO Student VALUES("345","Craig","3.5","500"); INSERT INTO Student VALUES("456","Doris","3.9","1000"); INSERT INTO Student VALUES("567","Edward","2.9","2000"); INSERT INTO Student VALUES("678","Fay","3.8","200"); INSERT INTO Student VALUES("789","Gary","3.4","800"); INSERT INTO Student VALUES("987","Helen","3.7","800"); INSERT INTO Student VALUES("876","Irene","3.9","400"); INSERT INTO Student VALUES("765","Jay","2.9","1500"); INSERT INTO Student VALUES("654","Amy","3.9","1000"); INSERT INTO Student VALUES("543","Craig","3.4","2000"); INSERT INTO Student VALUES("732","Kevin",null,"1500"); INSERT INTO Student VALUES("321","Lori",null,"1000"); DELETE FROM Student WHERE sName = "Craig" ALTER TABLE Student MODIFY COLUMN GPA real

CREATE TABLE Apply (sID varchar(20), cName varchar(20), major varchar(20), decision varchar(5), constraint pk primary key (sID, cName, major)); INSERT INTO Apply VALUES ("123","Stanford","CS","Y"); INSERT INTO Apply VALUES ("123","Stanford","EE","N"); INSERT INTO Apply VALUES ("123","Berkeley","CS","Y"); INSERT INTO Apply VALUES ("123","Cornell","EE","Y"); INSERT INTO Apply VALUES ("234","Berkeley","biology","N"); INSERT INTO Apply VALUES ("345","MIT","bioengineering","Y"); INSERT INTO Apply VALUES ("345","Cornell","bioengineering","N"); INSERT INTO Apply VALUES ("345","Cornell","CS","Y"); INSERT INTO Apply VALUES ("345","Cornell","EE","N"); INSERT INTO Apply VALUES ("678","Stanford","history","Y"); INSERT INTO Apply VALUES ("987","Stanford","CS","Y"); INSERT INTO Apply VALUES ("987","Berkeley","CS","Y"); INSERT INTO Apply VALUES ("876","Stanford","CS","N"); INSERT INTO Apply VALUES ("876","MIT","biology","Y"); INSERT INTO Apply VALUES ("876","MIT","marine biology","N"); INSERT INTO Apply VALUES ("765","Stanford","history","Y"); INSERT INTO Apply VALUES ("765","Cornell","history","N"); INSERT INTO Apply VALUES ("765","Cornell","psychology","Y"); INSERT INTO Apply VALUES ("543","MIT","CS","N");

SELECT DISTINCT sName, GPA, decision FROM Student, Apply WHERE Student.sID = Apply.sID AND sizeHS <1000 AND major = 'CS' AND cname = 'Stanford'

SELECT DISTINCT cName FROM College, Apply WHERE Student.sID = Apply.sID AND enrollment > 20000 AND major = 'CS' /*Query Error: ambiguous COLUMN name: cName Unable to execute statement*/ SELECT College.cName FROM College, Apply WHERE College.cName = Apply.cName AND enrollment > 20000 AND major = 'CS'

SELECT Student.sID, sName, GPA, Apply.cName, enrollment FROM Student,College, Apply WHERE College.cName = Apply.cName AND Apply.sID = Student.sID ORDER by GPA , enrollment

SELECT sID, major FROM Apply WHERE major like '%bio%'

SELECT sID, sName, GPA, sizeHS, GPA*(sizeHS/1000.0) as scaledGPA FROM Student

SELECT S.sID, sName, GPA, A.cName, enrollment FROM Student S,College C, Apply A WHERE C.cName = A.cName AND A.sID = S.sID ORDER BY GPA, enrollment

SELECT S1.sID, S1.sName, S1.GPA, S2.sID, S2.sName, S2.GPA FROM Student S1, Student S2 WHERE S1.GPA = S2.GPA AND S1.sID < S2.sID

SELECT cName FROM College UNION SELECT sName FROM Student /*UNION eliminates duplicates*/ SELECT cName FROM College UNION ALL SELECT sName FROM Student /*has duplicates also unsorted*/

SELECT sID FROM Apply WHERE major = 'CS' INTERSECT SELECT sID FROM Apply WHERE major = 'EE' /*some dbms dont support INTERSECT*/ SELECT DISTINCT A1.sID FROM Apply A1, Apply A2 WHERE A1.sID = A2.sID AND A1.major = 'CS' AND A2.major='EE'

SELECT sID, sName FROM Student WHERE sID IN ( SELECT sID FROM Apply WHERE major = 'CS')

/*without using nested query*/

SELECT DISTINCT Student.sID, sName FROM Student, Apply WHERE Student.sID = Apply.sID AND major = 'CS'

SELECT sID, SName FROM Student WHERE sID IN (SELECT sID FROM Apply WHERE major = 'CS') AND sID NOT IN (SELECT sID FROM Apply WHERE major = 'EE') SELECT sID,SName FROM Student WHERE sID IN (SELECT sID FROM Apply WHERE major = 'CS') AND NOT sID IN (SELECT sID FROM Apply WHERE major = 'EE') SELECT sID FROM Apply WHERE major = 'CS' EXCEPT SELECT sID FROM Apply WHERE major = 'EE'

SELECT cName, state FROM College C1 WHERE EXISTS (SELECT * FROM College C2 WHERE C2.state = C1.state AND C1.cName <> C2.cName);

SELECT * FROM College c1 WHERE EXISTS ( SELECT * FROM Apply c2 WHERE c1.cName = c2.cName AND c2.major = 'EE');

SELECT DISTINCT a.cName, state, enrollment FROM Apply a, College c WHERE a.cName = c.cName AND major = 'EE'; SELECT * FROM College c WHERE cName IN ( SELECT cName FROM Apply WHERE major = 'EE');

SELECT cName, state FROM College C1 WHERE NOT EXISTS (SELECT * FROM College C2 WHERE C2.enrollment > C1.enrollment);

SELECT cName, max(enrollment) as hs FROM College;

SELECT sName, GPA FROM Student S1 WHERE NOT EXISTS (SELECT * FROM Student S2 WHERE S2.GPA > S1.GPA)

SELECT sName, GPA FROM Student WHERE GPA >= ALL ( SELECT GPA FROM Student )

SELECT cName FROM College WHERE enrollment > ALL( SELECT enrollment FROM College S2 WHERE S2.cName <> S1.cName)

SELECT cName FROM College WHERE NOT enrollment <= ANY( SELECT enrollment FROM College S2 WHERE S2.cName <> S1.cName)

SELECT sID, sName FROM Student WHERE sID = ANY( SELECT sID FROM Apply wher major = 'CS') AND NOT sID = ANY( SELECT sID FROM Apply WHERE major = 'EE')

SELECT * FROM ( SELECT sID, sName, GPA, sizeHS,GPA*(sizeHS/1000.0) as scaledGPA FROM student) G WHERE abs (G.scaledGPA-GPA)>1.0

SELECT DISTINCT sName,major FROM Student INNER JOIN Apply on Student.sID = Apply.sID

/*INNER join does NOT remove duplicate tuples on its own*/

SELECT DISTINCT sName,major FROM Student JOIN Apply on Student.sID = Apply.sID

SELECT Student.sID, sName, GPA, Apply.cName, enrollment FROM (Student JOIN Apply on Apply.sID = Student.sID) JOIN College on College.cName = Apply.cName ORDER by GPA, enrollment

SELECT * FROM Student NATURAL JOIN Apply SELECT DISTINCT sName, major FROM Student JOIN Apply using(sID)

SELECT avg(GPA) FROM Student SELECT min(GPA) FROM Student SELECT min(GPA) FROM Student NATURAL JOIN Apply WHERE major = 'CS' SELECT min(GPA) FROM Student JOIN Apply using(sID) WHERE major = 'CS' SELECT avg(GPA) FROM Student WHERE sID IN (SELECT sID FROM Apply WHERE major = 'CS') SELECT count(*) FROM College WHERE enrollment > 15000 SELECT count(DISTINCT sID) FROM College NATURAL JOIN Student WHERE enrollment > 15000 SELECT CS.avgGPA - NonCS.avgGPA FROM (SELECT avg(GPA) as avgGPA FROM Student WHERE sID IN ( SELECT sID FROM Apply WHERE major = 'CS')) as CS, (SELECT avg(GPA) as avgGPA FROM Student WHERE sID NOT IN ( SELECT sID FROM Apply WHERE major = 'CS')) as nonCS

SELECT DISTINCT (SELECT avg(GPA) as avgGPA FROM Student WHERE sID IN ( SELECT sID FROM Apply WHERE major = 'CS')) (SELECT avg(GPA) as avgGPA FROM Student WHERE sID NOT IN ( SELECT sID FROM Apply WHERE major = 'CS')) as diff FROM Student

SELECT cName, count(*) FROM Apply GROUP BY cName

SELECT cName, major, min(GPA), max(GPA) FROM Student, Apply WHERE Student.sID = Apply.sID GROUP BY cName, major

SELECT max(mx-mn) FROM ( SELECT cName, major, min(GPA) as mn, max(GPA) as mx FROM Student, Apply WHERE Student.sID = Apply.sID GROUP BY cName, major) M

SELECT Student.sID, count(DISTINCT cName) FROM Student, Apply WHERE Student.sID = Apply.sID GROUP BY Student.sID

SELECT Student.sID, count(DISTINCT cName) FROM Student, Apply WHERE Student.sID = Apply.sID GROUP BY Student.sID UNION SELECT sID, 0 FROM Student WHERE sID NOT IN (SELECT sID FROM Apply)

SELECT cName FROM Apply GROUP BY cName HAVING count(*)<5 SELECT cName FROM Apply GROUP BY cName HAVING count(DISTINCT sID)<5

SELECT major FROM Student, Apply WHERE Student.sID = Apply.sID GROUP BY major HAVING max(GPA) < (SELECT avg(GPA) FROM Student)

SELECT sID, count(DISTINCT major) FROM Apply GROUP BY sID HAVING count(DISTINCT major) > 2

INSERT INTO Student VALUES("732","Kevin","","1500"); INSERT INTO Student VALUES("321","Lori","","1000");

SELECT sID, sName, GPA FROM Student WHERE GPA > 3.5 or GPA <= 3.5

SELECT sID, sName, GPA FROM Student WHERE GPA > 3.5 or GPA <= 3.5 or GPA is null

/* null values are included in select statements like SELECT DISTINCT GPA FROM Student and not included in aggregation like SELECT count(DISTINCT GPA) FROM Student */

UPDATE Student SET sizeHS = "1500" WHERE sName = "Kevin"

INSERT INTO Apply SELECT sID, 'Carnegie Melon', 'CS' ,null FROM Student WHERE sID NOT IN (SELECT sID FROM Apply)

INSERT INTO Apply SELECT sID, 'Carnegie Melon', 'EE', 'Y' FROM Student WHERE sID IN ( SELECT sID FROM Apply WHERE major = 'EE' AND decision = 'N') /* Error Code: 1062. Duplicate entry '123-Carnegie Melon-EE' for key 'PRIMARY' */

DELETE FROM Student WHERE sID IN ( SELECT sID FROM Apply GROUP BY sID HAVING count(DISTINCT major) > 2)

DELETE FROM Apply WHERE sID IN ( SELECT sID FROM Apply GROUP BY sID HAVING count(DISTINCT major) > 2) /* Error Code: 1093. You can't specify target table 'Apply' for update in FROM clause (MySQL) but PostGRE allows this query */

UPDATE Apply SET decision = 'Y', major = 'economics' WHERE cName = 'Carnegie Melon' AND sID IN ( SELECT sID FROM Student WHERE GPA < 3.6)

UPDATE Apply SET major = 'CS' WHERE major = 'EE' AND sID IN ( SELECT sID FROM Student WHERE GPA >= ALL ( SELECT GPA FROM Student WHERE sID IN ( SELECT sID FROM Apply WHERE major = 'EE')))

SELECT max(GPA) FROM Student UPDATE Apply SET decision = 'Y'

Anda mungkin juga menyukai