Đây là loạt bài tập sql từ cơ bản tới nâng cao dành cho các bạn sinh viên đang học môn Cơ sở dữ liệu. Lập trình không khó sẽ cùng các bạn đi qua từng phần kiến thức từ lệnh select cơ bản, select nâng cao, select lồng nhau, join,… và còn nhiều hơn thế. Hãy follow lộ trình này và cùng học các kiến thức về sql thông qua series bài tập sql cơ bản này nhé.
Đề bài tập SQL
Cho bảng “nobel” có các trường và một vài giá trị như bảng dưới đây:
yr | subject | winner | ||
---|---|---|---|---|
1960 | Chemistry | Willard F. Libby | ||
1960 | Literature | Saint-John Perse | ||
1960 | Medicine | Sir Frank Macfarlane Burnet | ||
1960 | Medicine | Peter Madawar | ||
… |
Câu hỏi về SQL cơ bản
1. Hiển thị thông tin(tất cả các trường) của giải Nobel năm 1950
2. Hiển thị tên người nhận giải(winner) Nobel năm 1962 ở lĩnh vực Văn học
3. Hiển thị năm và chủ đề mà nhà bác học Albert Einstein nhận giải Nobel
4. Hiển thị tên người nhận giải Nobel kể từ năm 2000(bao gồm cả năm 2000) thuộc chủ đề Hòa bình(Peace)
5. Hiển thị đầy đủ các thông tin của những người dành giải Nobel trong những năm 80(1980 đến 1989)
6. Hiển thị thông tin nhận giải Nobel của các vị lãnh đạo có tên sau:
- Theodore Roosevelt
- Woodrow Wilson
- Jimmy Carter
- Barack Obama
7. Hiển thị các tên người nhận giải có Firstname là John
8. Hiển thị year, subject, và name của người nhận giải Nobel vật lý năm 1980 và người nhận giải Nobel hóa học năm 1984
9. Hiển thị year, subject, và name của những người nhận giải năm 1980, ngoại trừ chủ đề Hóa học và Dược phẩm(Chemistry and Medicine)
10. Hiển thị year, subject, và name của những người nhận giải Nobel Dược phẩm(Medicine) trước 1910(ko bao gồm 1910) và những người nhận giải Nobel văn học(Literature) sau năm 2004(bao gồm 2004)
Lời giải:
#1 SELECT yr, subject, winner FROM nobel WHERE yr = 1950 #2 SELECT winner FROM nobel WHERE yr = 1962 AND subject = 'Literature' #3 SELECT yr, subject FROM nobel WHERE winner = 'Albert Einstein' #4 SELECT winner FROM nobel WHERE subject = 'Peace' AND yr >= 2000 #5 SELECT yr, subject, winner FROM nobel WHERE subject = 'Literature' AND yr BETWEEN 1980 AND 1989 #6 SELECT * FROM nobel WHERE winner IN ('Theodore Roosevelt', 'Woodrow Wilson', 'Jimmy Carter', 'Barack Obama') #7 SELECT winner FROM nobel WHERE winner LIKE 'JOHN %' #8 SELECT * FROM nobel WHERE yr = 1980 AND subject = 'Physics' OR yr = 1984 AND subject = 'Chemistry' #9 SELECT * FROM nobel WHERE yr = 1980 AND subject NOT IN ('Chemistry','Medicine') #10 SELECT * FROM nobel WHERE yr < 1910 AND subject = 'Medicine' OR yr >= 2004 AND subject = 'Literature'
Câu hỏi SQL nâng cao
11. Tìm thông tin tất cả các giải Nobel của PETER GRÜNBERG
12. Tìm thông tin tất cả các giải Nobel của EUGENE O’NEILL
13. Hiển thị thông tin winners, year và subject của những người có tên bắt đầu bằng Sir. Hiển thị gần đây nhất đầu tiên, sau đó theo thứ tự tên
14. Hiển thị thông tin người giành giải năm 1984 và chủ đề, sắp xếp theo tên chủ đề và sau đó là tên người giành giải, nhưng chủ đề Chemistry và Physics xếp cuối
Lời giải:
#11 SELECT * FROM nobel WHERE winner = 'Peter Grünberg' #12 SELECT * FROM nobel WHERE winner = 'Eugene O''Neill' #13 SELECT winner, yr, subject FROM nobel WHERE winner LIKE 'Sir %' ORDER BY yr DESC, winner #14 SELECT winner, subject FROM nobel WHERE yr=1984 ORDER BY subject in ('Chemistry','Physics'), subject, winner
Bạn có thể làm và giải các bài tập này trực tiếp [eafl id=”3771″ name=”SqlZoo” text=”tại đây”]
Để lại một bình luận