SQLの追加、削除、変更、およびクエリ(たとえば、学生、コース、コース選択テーブル)

初期テーブルの構造と内容

Student、Course、SCの3つのテーブルが含まれています(それぞれ、Student Information Table、Course Information Table、Course Selection Result Table)

1.1学生テーブルの構造

ここに画像の説明を挿入

1.2コーステーブルの構造

ここに画像の説明を挿入

1.3SCテーブル構造

ここに画像の説明を挿入

2.1学生のコンテンツ

ここに画像の説明を挿入

2.2コースの内容

ここに画像の説明を挿入

SELECT * FROM Course ORDER BY cast(Cno as int);

2.3SCコンテンツ

ここに画像の説明を挿入

データを挿入

INSERT INTO Student VALUES('201212126','WANGHUA','MALE',18,'CS');

データを削除する

DELETE FROM Course WHERE Cno = '11';

データの更新

UPDATE Course SET Cno = '8' WHERE Cno = '11';

データを探す

1.単一テーブルクエリ

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;

Sname、Sdept、Sage FROM Student WHERE Sage(NOT)BETWEEN 19 AND 20;

SELECT Sname, Sdept, Sage FROM Student WHERE Sage BETWEEN 19 AND 20;

(NOT)

SELECT Sname, Ssex FROM Student WHERE Sdept IN('CS','IS');

ファジークエリ
ワイルドカード:_%

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'\';

集計関数

学生の総数

SELECT COUNT(*) FROM Student;

選択科目1の平均成績

SELECT AVG(Grade) FROM SC WHERE Cno = '1';

201212121選択科目の学生の合計単位

SELECT SUM(Ccredit) FROM SC,Course 
WHERE Sno = '201212121' AND SC.Cno = Course.Cno;

GROUP BY

各コース番号と対応するコース数

SELECT Cno, COUNT(Sno) FROM SC GROUP BY Cno;

リンククエリ

各学生の状況とその選択科目

SELECT Student.*, SC.* FROM Student,SC WHERE  Student.Sno = SC.Sno;

自然なつながり

SELECT Student.Sno, Sname, Ssex, Sage, Sdept, Cno, Grade
FROM Student, SC WHERE Student.Sno = SC.Sno;

第2コースを受講し、スコアが90ポイント未満の学生IDと学生の名前

SELECT Student.Sno, Sname FROM Student, SC 
WHERE Student.Sno = SC.Sno AND SC.Cno = '2' AND SC.Grade<=90;

自己接続

各コースの前提条件を照会する(比較)

 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;

外部結合

SELECT Student.Sno, Sname, Sname, Ssex, Sage, Sdept,Cno,Grade 
FROM Student LEFT OUTER JOIN SC ON (Student.Sno = SC.Sno); 

マルチテーブル結合

各学生の学生ID、名前、選択科目、成績を照会します

SELECT Student.Sno, Sname, Cname, Grade FROM Student,SC,Course
 WHERE Student.Sno = SC.Sno AND SC.Cno = Course.Cno;

ネストされたクエリ

コース2を選択した学生の名前

SELECT Sname FROM Student WHERE Sno IN 
(SELECT Sno FROM SC WHERE Cno = '2');

自分の選択科目の平均成績を超える各学生のコース数

SELECT Sno, Cno FROM SC x 
WHERE Grade >=(SELECT AVG(Grade) FROM SC y WHERE y.Sno = x.Sno);

コレクションクエリ

コンピュータサイエンスの学生と19歳未満の学生

SELECT * FROM Student WHERE Sdept = 'CS' 
UNION SELECT * FROM Student WHERE Sage<=19;

コンピュータサイエンスの学生と19歳以下の交差点

SELECT * FROM Student WHERE Sdept = 'CS' 
INTERSECT SELECT * FROM Student WHERE Sage<=19;

コンピュータサイエンス技術科の学生と19歳未満の学生の違い

SELECT * FROM Student WHERE Sdept = 'CS' 
EXCEPT SELECT * FROM Student WHERE Sage<=19;

派生テーブルに基づくクエリ

自分の選択科目の平均を超える各学生の科目数を調べます

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;

おすすめ

転載: blog.csdn.net/qq_42348424/article/details/115295385