Bài tập SQL phần 1

Bài 1: Tạo database Test, kiểm tra xem nó có tồn tại hay không, nếu tồn tại thì xóa nó trước khi tạo mới.

USE master
IF EXISTS(select * from sys.databases where name='Test')
DROP DATABASE Test
GO
CREATE DATABASE Test

Bài 2: Sử dụng database Test đã tạo ở trên tạo ra hai bảng, Clubs và Players, thể hiện mối quan hệ sau.

Một câu lạc bộ (Clubs) có nhiều cầu thủ (Players).

Các cột của Clubs

Id: Khóa chính, tự tăng.

Tên CLB: ràng buộc duy nhất, không cho phép NULL.

Năm thành lập: nếu người dùng không nhập vào năm thành lập, mặc định sẽ là ngày 01-01-1980.

Các cột của Players.
Id: khóa chính, tự tăng.
Tên cầu thủ: không cho phép null
Năm sinh: không cho phép null, mặc định là ngày 01-01-1985.
Khóa ngoại đến bảng CLB.

Lưu ý: đây là quan hệ một nhiều, một CLB có nhiều cầu thủ, do vậy bạn phải đặt khóa ngoại ở  bảng Players

Bài 3: Insert data vào bảng CLB 3 CLB có tên là MU, Real Madrid, Barca
Dùng vòng lặp để insert  data vào CLB, sao cho mỗi CLB có trên 20 cầu thủ.

INSERT INTO Clubs (Name) VALUES ('MU')
INSERT INTO Clubs (Name) VALUES ('Barca')
INSERT INTO Clubs (Name) VALUES ('Real Madrid')

DECLARE @i int; 

SET @i = 0; 

WHILE @i < 21 
  BEGIN 
      SET @i = @i + 1; 
	 --Insert Player vào clb MU, lệnh Cast(@i AS VARCHAR(2) dùng để ép kiểu int sang VARCHAR
	 --Sở dĩ phải ép kiểu vì @i đang kiểu int, ta insert nó vào trường có kiểu VARCHAR sẽ không được.
      INSERT INTO Players 
                  (Name, 
                   ClubId) 
      VALUES      ('Player MU ' + Cast(@i AS VARCHAR(2)), 
                   1) 
	 --Insert Player vào CLB Barca
      INSERT INTO Players 
                  (Name, 
                   ClubId) 
      VALUES      (N'Cầu Thủ Barca ' + Cast(@i + 22 AS VARCHAR(2)), 
                   2) 
	 --Insert Player vào CLB Real Madrid
      INSERT INTO Players 
                  (Name, 
                   ClubId) 
      VALUES      (N'Real Madrid Player ' + Cast(@i + 44 AS VARCHAR(2)), 
                   3) 
  END 

Bài 4: Dùng câu lệnh JOIN hai bảng đã tạo ở bài trước, cho biết CLB ứng với từng cầu thủ.

SELECT Players.Name, 
       Clubs.Name 
FROM   Players 	
       JOIN Clubs 
         ON Players.ClubId = Clubs.Id 

Bài 5: Sắp xếp kết quả trả về ở bài trước theo tên CLB.

SELECT Players.Name, 
       Clubs.Name 
FROM   Players 
       JOIN Clubs 
         ON Players.ClubId = Clubs.Id 
ORDER  BY Clubs.Name 

Bài 6: Chỉ ra tất cả các cầu thủ thuộc CLB MU.

SELECT Players.Name, 
       Clubs.Name 
FROM   Players 
       JOIN Clubs 
         ON Players.ClubId = Clubs.Id 
WHERE  Clubs.Name = 'MU' 

Bài 7: Đếm xem ở CLUB Real Madrid có bao nhiêu cầu thủ.

SELECT COUNT (*)
FROM   Players 
       JOIN Clubs 
         ON Players.ClubId = Clubs.Id 
WHERE  Clubs.Name = 'Real Madrid' 

Bài 8: Tìm cầu thủ lớn tuổi nhất đội Barca.
 Gợi ý: SELECT TOP 1 và Order theo tuổi của cầu thủ.

INSERT INTO Players VALUES ('Name Player Test','1980-01-01',2)
SELECT TOP 1 Players.Name, 
             Players.Birthdate, 
             Clubs.Name 
FROM   Players 
       JOIN Clubs 
         ON Players.ClubId = Clubs.Id 
WHERE  Clubs.Name = 'Barca' 
ORDER  BY Players.Birthdate 

Ở bài trên, ta thêm một Players thuộc đội Barca, có  năm sinh là 1980 để đảm bảo đây là cầu thủ lớn tuổi nhất. Vì các cầu thủ trước được tạo ra mặc định là 1985

Bài 9: Tìm tất cả cầu thủ có tên chứa chữ a.

SELECT Players.Name 
FROM   Players 
WHERE  Name LIKE '%a%' 

Bài 10: Tìm tất cả cầu thủ tên bắt đầu bằng chữ P

SELECT Players.Name 
FROM   Players 
WHERE  Name LIKE 'P%' 

Các môn học khác

Khóa học này cung cấp cho ta kiến thức nền tảng về công nghệ Blockchain, Bitcoin. Vì sao nó được gọi là công nghệ của tương lai, vì sao giá Bitcoin lại cao đến vậy. Làm sao để mua Bitcoin, ETH.

Khoa học về dinh dưỡng, giáo trình giảm cân cho mọi người.

C# là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft, là phần khởi đầu cho kế hoạch .NET của họ. C# được miêu tả là ngôn ngữ có được sự cân bằng giữa C++, Visual Basic, Delphi và Java.