Structure et contenu de la table initiale
Contient trois tableaux d'étudiant, de cours et de SC (tableau d'informations sur l'étudiant, tableau d'informations sur le cours et tableau de résultats de sélection de cours respectivement)
1.1 Structure de la table des élèves
1.2 Structure de la table des cours
1.3 Structure de la table SC
2.1 Contenu étudiant
2.2 Contenu du cours
SELECT * FROM Course ORDER BY cast(Cno as int);
2.3 Contenu SC
Insérer des données
INSERT INTO Student VALUES('201212126','WANGHUA','MALE',18,'CS');
Suprimmer les données
DELETE FROM Course WHERE Cno = '11';
mettre à jour les données
UPDATE Course SET Cno = '8' WHERE Cno = '11';
Trouver des données
1. Requête de table unique
SELECT Sno, Sname FROM Student;
SELECT Sname, 2021-Sage FROM Student;
SELECT Sname NAME,
'Year of Birth:' BIRTH,
2021-Sage BIRTHDAY,
LOWER(Sdept) DEPARTMENT
FROM Student;
SELECT Sno FROM SC;
SELECT DISTINCT Sno FROM SC;
SELECT Sname FROM Student WHERE Sdept = 'CS';
SELECT Sname, Sage FROM Student WHERE Sage<20;
CHOISISSEZ Sname, Sdept, Sage FROM Student WHERE Sage (NOT) ENTRE 19 ET 20;
SELECT Sname, Sdept, Sage FROM Student WHERE Sage BETWEEN 19 AND 20;
(NE PAS)
SELECT Sname, Ssex FROM Student WHERE Sdept IN('CS','IS');
Caractère
générique de requête floue : _%
SELECT * FROM Student WHERE Sno LIKE '201212121';
SELECT * FROM Course WHERE Cno = '2';
SELECT * FROM Course WHERE Cno LIKE '2';
SELECT * FROM Course WHERE Cno LIKE '2%';
SELECT Sname FROM Student WHERE Sname LIKE 'LIU%';
SELECT Sname FROM Student WHERE Sname LIKE '___CHEN%';
INSERT INTO Course VALUES('9','DBADESIGN','',4);
SELECT * FROM Course WHERE Cname LIKE 'DB_DESIGN%';
SELECT * FROM Course WHERE Cname LIKE 'DB\_DESIGN%' ESCAPE'\';
Fonction d'agrégation
Nombre total d'étudiants
SELECT COUNT(*) FROM Student;
Note moyenne pour le choix 1
SELECT AVG(Grade) FROM SC WHERE Cno = '1';
Crédits totaux de l'étudiant pour 201212121 cours au choix
SELECT SUM(Ccredit) FROM SC,Course
WHERE Sno = '201212121' AND SC.Cno = Course.Cno;
PAR GROUPE
Chaque numéro de cours et le nombre de cours correspondant
SELECT Cno, COUNT(Sno) FROM SC GROUP BY Cno;
Requête de lien
La situation de chaque étudiant et ses cours au choix
SELECT Student.*, SC.* FROM Student,SC WHERE Student.Sno = SC.Sno;
Connexion naturelle
SELECT Student.Sno, Sname, Ssex, Sage, Sdept, Cno, Grade
FROM Student, SC WHERE Student.Sno = SC.Sno;
Carte d'étudiant et nom des étudiants qui suivent le cours n ° 2 et qui ont des scores inférieurs à 90 points
SELECT Student.Sno, Sname FROM Student, SC
WHERE Student.Sno = SC.Sno AND SC.Cno = '2' AND SC.Grade<=90;
Auto-connexion
Interroger les prérequis de chaque cours (comparaison)
SELECT FIRST.Cno,SECOND.Cpno FROM Course FIRST, Course SECOND
WHERE FIRST.Cpno = SECOND.Cno;
SELECT Cno,Cpno FROM Course WHERE Cpno = Cno;
SELECT FIRST.Cno,FIRST.Cpno FROM Course FIRST,Course
WHERE FIRST.Cpno = FIRST.Cno;
Jointure externe
SELECT Student.Sno, Sname, Sname, Ssex, Sage, Sdept,Cno,Grade
FROM Student LEFT OUTER JOIN SC ON (Student.Sno = SC.Sno);
Jointure multi-table
Interrogez la carte d'étudiant, le nom, les cours optionnels et les notes de chaque élève
SELECT Student.Sno, Sname, Cname, Grade FROM Student,SC,Course
WHERE Student.Sno = SC.Sno AND SC.Cno = Course.Cno;
Requête imbriquée
Le nom de l'étudiant qui a sélectionné le cours 2
SELECT Sname FROM Student WHERE Sno IN
(SELECT Sno FROM SC WHERE Cno = '2');
Le numéro du cours pour chaque étudiant qui dépasse la note moyenne de son propre cours au choix
SELECT Sno, Cno FROM SC x
WHERE Grade >=(SELECT AVG(Grade) FROM SC y WHERE y.Sno = x.Sno);
Requête de collection
Étudiants en informatique et étudiants de moins de 19 ans
SELECT * FROM Student WHERE Sdept = 'CS'
UNION SELECT * FROM Student WHERE Sage<=19;
L'intersection des étudiants en informatique et de 19 ans ou moins
SELECT * FROM Student WHERE Sdept = 'CS'
INTERSECT SELECT * FROM Student WHERE Sage<=19;
La différence entre un étudiant du département d'informatique et de technologie et un étudiant de moins de 19 ans
SELECT * FROM Student WHERE Sdept = 'CS'
EXCEPT SELECT * FROM Student WHERE Sage<=19;
Requête basée sur une table dérivée
Découvrez le numéro de cours de chaque étudiant qui dépasse sa propre moyenne de cours au choix
SELECT Sno, Cno
FROM SC, (SELECT Sno, Avg(Grade) FROM SC GROUP BY Sno)
AS Avg_sc(avg_sno,avg_grade)
WHERE SC.Sno = Avg_sc.avg_sno AND SC.Grade >= Avg_sc.avg_grade;