Có mysql

Bài học này sử dụng cơ sở dữ liệu LearningSQL [phiên bản MySQL]. Bạn cần tạo cơ sở dữ liệu đó để thuận tiện cho việc học [Bạn chỉ mất không quá 5 phút để làm việc này]

Kịch bản tạo cơ sở dữ liệu và cấu trúc của cơ sở dữ liệu này bạn có thể xem tại

  • Cơ sở dữ liệu MySQL mẫu để học SQL

3- Công cụ trực quan làm việc với MySQL

Trong hướng dẫn này, tôi sử dụng MySQL Workbench là công cụ trực quan để làm việc. Bạn có thể xem thêm hướng dẫn cài đặt MySQL Comunity [Khi cài đặt đã bao gồm cả MySQL Workbench] tại

  • Cài đặt cơ sở dữ liệu MySQL trên Windows

4- Các câu lệnh truy vấn [Query]

4. 1- Chọn SQL

Câu lệnh Select là câu lệnh cơ bản nhất trong SQL, đích đến là truy vấn dữ liệu trong các bảng [Table]

  • LOẠI SẢN PHẨM. Data table of product type [Kiểu dịch vụ của ngân hàng]

Đây là câu lệnh truy vấn dữ liệu trên bảng PRODUCT_TYPE


-- Truy vấn dữ liệu trên bảng Product_Type
-- Truy vấn toàn bộ các cột.

Select * From Product_Type;

-- Câu lệnh truy vấn trên và câu lệnh dưới đây là tương đương nhau.
-- Pty là alias [tên bí danh đặt cho bảng Product_Type].

Select Pty.* From Product_Type Pty;

-- Truy vấn một vài cột
-- Có thể liệt kê ra.

Select Pty.Product_Type_Cd
     ,Pty.Name
From   Product_Type Pty;

Kết quả truy vấn

Truy vấn dữ liệu trên bảng EMPLOYEE


-- Truy vấn 4 cột trên bảng Employee [Bảng nhân viên].
-- Sử dụng Emp là Alias [Tên bí danh] cho bảng Employee.

Select Emp.Emp_Id
     ,Emp.First_Name
     ,Emp.Last_Name
     ,Emp.Dept_Id
From   Employee Emp;

Kết quả truy vấn

Đặt bí danh cho cột


-- Sử dụng hàm concat[string1, string2] để nối 2 chuỗi với nhau.
-- Chúng ta có một cột mới sử dụng 'as' để định nghĩa tên cột cho cột mới này.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id] As Emp_No2  -- Cột mới
From   Employee Emp;


-- Có thể không cần sử dụng 'as' trong định nghĩa Alias cho cột.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id]  Emp_No2  -- Cột mới
From   Employee Emp;

Kết quả truy vấn

4. 2- SQL riêng biệt

Distinct command is used same as Select, used to select the data,bỏ qua các dữ liệu trùng nhau. Cú pháp là


Select distinct ,   ....

Xem ví dụ


-- Truy vấn sản phẩm [Sản phẩm dịch vụ của Ngân hàng]
-- Cột mã sản phẩm, tên và kiểu sản phẩm.
Select Pro.Product_Cd
     ,Pro.Name
     ,Pro.Product_Type_Cd
From   Product Pro;

-- Truy vấn các kiểu sản phẩm  [Product_Type_Cd] trong bảng Product.
-- Dữ liệu là nhiều, nhưng trùng nhau.
Select Pro.Product_Type_Cd from Product Pro;

-- Cần sử dụng Distinct để loại bỏ việc trùng lặp.
Select Distinct Pro.Product_Type_Cd from Product Pro;

Kết quả chạy các câu lệnh trên

4. 3- SQL ở đâu

Where is the command command giới hạn phạm vi tìm kiếm. Chẳng hạn bạn muốn tìm kiếm những sản phẩm dịch vụ có kiểu "Cho vay cá nhân và kinh doanh"

  • Product_Type_Cd = 'VAY'
Bạn cần truy vấn trong bảng SẢN PHẨM, tại các vị trí có Product_Type_Cd= 'LOAN'


-- Truy vấn bảng Product tìm các sản phẩm dịch vụ có kiểu:
-- "Cho vay cá nhân và kinh doanh".
-- Ứng với cột Product_Type_Cd = 'LOAN'.
Select * From Product Pro Where Pro.Product_Type_Cd = 'LOAN';

Kết quả truy vấn

Một ví dụ khác sử dụng ở đâu và nhiều điều kiện đi kèm theo

4. 4- SQL And Or [Và, hoặc]

And and Or is 2 command condition used in where

Không giới hạn bạn muốn tìm danh sách các nhân viên có tên bắt đầu bằng chữ S và thuộc phòng điều hành [Operations]


-- Câu lệnh tìm kiếm các Nhân viên có tên bắt đầu bởi chữ S.
Select Emp.Emp_Id
     ,Emp.First_Name
     ,Emp.Last_Name
     ,Emp.Dept_Id
From   Employee Emp
Where  Emp.First_Name Like 'S%';

-- Câu lệnh tìm kiếm các nhân viên có tên bắt đầu bởi chữ S
-- và thuộc phòng điều hành [Operations]  Dept_Id  = 1.

Select Emp.Emp_Id
     ,Emp.First_Name
     ,Emp.Last_Name
     ,Emp.Dept_Id
From   Employee Emp
Where  Emp.First_Name Like 'S%'
And    Emp.Dept_Id = 1;

Kết quả chạy các câu hỏi

Ví dụ với câu lệnh Or


-- Tìm kiếm các nhân viên có tên bắt đầu bởi chữ S hoặc P.
-- và trong phòng điều hành [Operations]. [Dept_Id = 1]
Select Emp.Emp_Id
     ,Emp.First_Name
     ,Emp.Last_Name
     ,Emp.Dept_Id
From   Employee Emp
Where  [Emp.First_Name Like 'S%' Or Emp.First_Name Like 'P%']
And    Emp.Dept_Id = 1;

Kết quả chạy câu lệnh

4. 5- SQL IN [Trong phạm vi. ]

Câu lệnh trong nơi sử dụng trong tình huống tìm kiếm giá trị thuộc một tập hợp nhất.  

________số 8

Kết quả chạy câu lệnh

4. 6- SQL Between [Nằm giữa. ]


-- Tìm các nhân viên có Emp_Id trong khoảng từ 5 đến 10.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Start_Date
From   Employee Emp
Where  [Emp.Emp_Id Between 5 And 10];

-- Câu lệnh trên tương đương với:
Select Emp.Emp_Id
     ,Emp.First_Name
     ,Emp.Last_Name
     ,Emp.Start_Date
From   Employee Emp
Where  Emp.Emp_Id >= 5
And    Emp.Emp_Id  08-09-2002  [ngày-tháng-năm-năm]


-- Truy vấn 4 cột trên bảng Employee [Bảng nhân viên].
-- Sử dụng Emp là Alias [Tên bí danh] cho bảng Employee.

Select Emp.Emp_Id
     ,Emp.First_Name
     ,Emp.Last_Name
     ,Emp.Dept_Id
From   Employee Emp;
0

Kết quả chạy câu lệnh

4. 7- Ký tự đại diện SQL

Có 2 ký tự đặc biệt trong SQL

  1. Character %
  2. _ character
Ý nghĩa
  • % description 0, 1 or many characters
  • _ direct description a character
Hai ký tự này thường được sử dụng trong điều kiện như


-- Truy vấn 4 cột trên bảng Employee [Bảng nhân viên].
-- Sử dụng Emp là Alias [Tên bí danh] cho bảng Employee.

Select Emp.Emp_Id
     ,Emp.First_Name
     ,Emp.Last_Name
     ,Emp.Dept_Id
From   Employee Emp;
1

Kết quả chạy ví dụ

4. 8- SQL Like [Giống với. ]

Câu lệnh này chúng ta đã làm quen với một số ví dụ ở trên

4. 9- SQL Order By [Sắp xếp theo]

Việc truy vấn dữ liệu cho một kết quả tập tin, mà nó có thể sắp xếp thứ tự không như ý muốn, sử dụng Order by để sắp xếp kết quả trả về


-- Truy vấn 4 cột trên bảng Employee [Bảng nhân viên].
-- Sử dụng Emp là Alias [Tên bí danh] cho bảng Employee.

Select Emp.Emp_Id
     ,Emp.First_Name
     ,Emp.Last_Name
     ,Emp.Dept_Id
From   Employee Emp;
2

Ví dụ


-- Truy vấn 4 cột trên bảng Employee [Bảng nhân viên].
-- Sử dụng Emp là Alias [Tên bí danh] cho bảng Employee.

Select Emp.Emp_Id
     ,Emp.First_Name
     ,Emp.Last_Name
     ,Emp.Dept_Id
From   Employee Emp;
3

Kết quả chạy ví dụ

Order By bao giờ cũng đứng sau where


-- Truy vấn 4 cột trên bảng Employee [Bảng nhân viên].
-- Sử dụng Emp là Alias [Tên bí danh] cho bảng Employee.

Select Emp.Emp_Id
     ,Emp.First_Name
     ,Emp.Last_Name
     ,Emp.Dept_Id
From   Employee Emp;
4

Kết quả chạy câu lệnh


-- Truy vấn 4 cột trên bảng Employee [Bảng nhân viên].
-- Sử dụng Emp là Alias [Tên bí danh] cho bảng Employee.

Select Emp.Emp_Id
     ,Emp.First_Name
     ,Emp.Last_Name
     ,Emp.Dept_Id
From   Employee Emp;
5

4. 10- SQL Group By [Nhóm bởi. ]

Trước hết chúng ta cần hiểu các hàm tổng hợp [Aggregate Functions] là gì

  • Tổng. Hàm tính tổng
  • trung bình. Hàm lấy trung bình
  • Đếm. Hàm đếm số lần
  • tối thiểu. Hàm tìm giá trị nhỏ nhất
  • tối đa. Hàm tìm giá trị lớn nhất
That is a total function [Aggregate] information. Chúng ta có thể tham gia vào câu lệnh nhóm [Nhóm theo]


-- Truy vấn 4 cột trên bảng Employee [Bảng nhân viên].
-- Sử dụng Emp là Alias [Tên bí danh] cho bảng Employee.

Select Emp.Emp_Id
     ,Emp.First_Name
     ,Emp.Last_Name
     ,Emp.Dept_Id
From   Employee Emp;
6

Câu hỏi đặt ra là bạn muốn xem tổng số tiền có trong tài khoản, ứng với mỗi loại dịch vụ [Product_Cd] khác nhau. Điều đó có nghĩa là bạn cần có nhóm trên các Product_Cd


-- Truy vấn 4 cột trên bảng Employee [Bảng nhân viên].
-- Sử dụng Emp là Alias [Tên bí danh] cho bảng Employee.

Select Emp.Emp_Id
     ,Emp.First_Name
     ,Emp.Last_Name
     ,Emp.Dept_Id
From   Employee Emp;
7

Kết quả

Như vậy bạn có một cái nhìn đánh giá

  • Có 4 tài khoản tham gia dịch vụ "Tiền gửi tiết kiệm điện" [SAV] với tổng số tiền là 1855. 76 và trung bình Mỗi tài khoản có 463. 94
  • ...

4. 11- SQL có

Đang có một câu lệnh điều kiện của Nhóm theo

Giả sử bạn muốn nhóm các loại hình dịch vụ [Product_Cd] trên bảng Tài khoản và chỉ hiển thị các loại hình có số lượng người tham gia > 3


-- Truy vấn 4 cột trên bảng Employee [Bảng nhân viên].
-- Sử dụng Emp là Alias [Tên bí danh] cho bảng Employee.

Select Emp.Emp_Id
     ,Emp.First_Name
     ,Emp.Last_Name
     ,Emp.Dept_Id
From   Employee Emp;
8

Kết quả chạy ví dụ

Phân biệt Ở đâu & Có

Bạn cần phân biệt Where và Working trong cùng một câu lệnh

  • Where is câu lệnh lọc dữ liệu trước khi nhóm [Group]
  • Đang có câu lệnh lọc dữ liệu sau khi đã có nhóm [Group]

Trường hợp bạn muốn có các thông tin tổng hợp của một chi nhánh ngân hàng [Bảng BRANCH]. Bạn có thể sử dụng nơi để lọc dữ liệu trước khi nhóm


-- Truy vấn 4 cột trên bảng Employee [Bảng nhân viên].
-- Sử dụng Emp là Alias [Tên bí danh] cho bảng Employee.

Select Emp.Emp_Id
     ,Emp.First_Name
     ,Emp.Last_Name
     ,Emp.Dept_Id
From   Employee Emp;
9

Kết quả chạy ví dụ

5- Các câu lệnh trèn dữ liệu [Insert]

5. 1- Câu lệnh Insert Into

cú pháp


-- Sử dụng hàm concat[string1, string2] để nối 2 chuỗi với nhau.
-- Chúng ta có một cột mới sử dụng 'as' để định nghĩa tên cột cho cột mới này.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id] As Emp_No2  -- Cột mới
From   Employee Emp;


-- Có thể không cần sử dụng 'as' trong định nghĩa Alias cho cột.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id]  Emp_No2  -- Cột mới
From   Employee Emp;
0

Ví dụ bạn thêm một giao dịch khách hàng vào bảng ACC_TRANSACTION


-- Sử dụng hàm concat[string1, string2] để nối 2 chuỗi với nhau.
-- Chúng ta có một cột mới sử dụng 'as' để định nghĩa tên cột cho cột mới này.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id] As Emp_No2  -- Cột mới
From   Employee Emp;


-- Có thể không cần sử dụng 'as' trong định nghĩa Alias cho cột.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id]  Emp_No2  -- Cột mới
From   Employee Emp;
1

5. 2- Câu lệnh Insert Into Select

Bạn có thể sử dụng câu Chọn để cung cấp dữ liệu trên bảng. Thông qua câu lệnh Insert Into. Lựa chọn


-- Sử dụng hàm concat[string1, string2] để nối 2 chuỗi với nhau.
-- Chúng ta có một cột mới sử dụng 'as' để định nghĩa tên cột cho cột mới này.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id] As Emp_No2  -- Cột mới
From   Employee Emp;


-- Có thể không cần sử dụng 'as' trong định nghĩa Alias cho cột.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id]  Emp_No2  -- Cột mới
From   Employee Emp;
2

Ví dụ


-- Sử dụng hàm concat[string1, string2] để nối 2 chuỗi với nhau.
-- Chúng ta có một cột mới sử dụng 'as' để định nghĩa tên cột cho cột mới này.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id] As Emp_No2  -- Cột mới
From   Employee Emp;


-- Có thể không cần sử dụng 'as' trong định nghĩa Alias cho cột.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id]  Emp_No2  -- Cột mới
From   Employee Emp;
3

6- Câu lệnh cập nhật [Cập nhật]


-- Sử dụng hàm concat[string1, string2] để nối 2 chuỗi với nhau.
-- Chúng ta có một cột mới sử dụng 'as' để định nghĩa tên cột cho cột mới này.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id] As Emp_No2  -- Cột mới
From   Employee Emp;


-- Có thể không cần sử dụng 'as' trong định nghĩa Alias cho cột.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id]  Emp_No2  -- Cột mới
From   Employee Emp;
4

Ví dụ bạn muốn tăng tiền trong các tài khoản của khách hàng có CUST_ID = 1 lên 2%

Update command


-- Sử dụng hàm concat[string1, string2] để nối 2 chuỗi với nhau.
-- Chúng ta có một cột mới sử dụng 'as' để định nghĩa tên cột cho cột mới này.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id] As Emp_No2  -- Cột mới
From   Employee Emp;


-- Có thể không cần sử dụng 'as' trong định nghĩa Alias cho cột.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id]  Emp_No2  -- Cột mới
From   Employee Emp;
5

Truy vấn lại, sau khi cập nhật

7- Câu lệnh xóa dữ liệu [Delete]

Cú pháp xóa dữ liệu trong bảng


-- Sử dụng hàm concat[string1, string2] để nối 2 chuỗi với nhau.
-- Chúng ta có một cột mới sử dụng 'as' để định nghĩa tên cột cho cột mới này.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id] As Emp_No2  -- Cột mới
From   Employee Emp;


-- Có thể không cần sử dụng 'as' trong định nghĩa Alias cho cột.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id]  Emp_No2  -- Cột mới
From   Employee Emp;
6


-- Sử dụng hàm concat[string1, string2] để nối 2 chuỗi với nhau.
-- Chúng ta có một cột mới sử dụng 'as' để định nghĩa tên cột cho cột mới này.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id] As Emp_No2  -- Cột mới
From   Employee Emp;


-- Có thể không cần sử dụng 'as' trong định nghĩa Alias cho cột.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id]  Emp_No2  -- Cột mới
From   Employee Emp;
7

8- Hàm SQL

8. 1- Đếm SQL

Count là một hàm, dòng đếm số. Thông thường nó thường được sử dụng cùng với Nhóm theo


-- Sử dụng hàm concat[string1, string2] để nối 2 chuỗi với nhau.
-- Chúng ta có một cột mới sử dụng 'as' để định nghĩa tên cột cho cột mới này.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id] As Emp_No2  -- Cột mới
From   Employee Emp;


-- Có thể không cần sử dụng 'as' trong định nghĩa Alias cho cột.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id]  Emp_No2  -- Cột mới
From   Employee Emp;
8

Đếm số tài khoản ngân hàng, có giao dịch với ngân hàng [Bảng Acc_Transaction]


-- Sử dụng hàm concat[string1, string2] để nối 2 chuỗi với nhau.
-- Chúng ta có một cột mới sử dụng 'as' để định nghĩa tên cột cho cột mới này.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id] As Emp_No2  -- Cột mới
From   Employee Emp;


-- Có thể không cần sử dụng 'as' trong định nghĩa Alias cho cột.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Dept_Id
    ,Concat['EMP'
           ,Emp.Emp_Id]  Emp_No2  -- Cột mới
From   Employee Emp;
9

Use with Group by

Một khách hàng có thể mở nhiều tài khoản, mỗi tài khoản ứng với một sản phẩm dịch vụ của ngân hàng

Bạn muốn liệt kê danh sách các khách hàng [CUST_ID] và tương ứng là số tài khoản họ đã mở


Select distinct ,   ....
0

8. 2- Tổng SQL

Hàm sum is used to tính tổng giá trị một cột trong câu SQL


Select distinct ,   ....
1

Ví dụ


Select distinct ,   ....
2

8. 3- SQLAVG

AVG là hàm tính trung bình trên cột


Select distinct ,   ....
3

Ví dụ


Select distinct ,   ....
4

8. 4- SQL TỐI THIỂU

Min is find the value value on the column


Select distinct ,   ....
5

Ví dụ


Select distinct ,   ....
6

8. 5- SQL TỐI ĐA

Max là hàm tìm giá trị lớn nhất trên cột. Cách sử dụng giống MIN, bạn có thể tham khảo các ví dụ tại MIN


Select distinct ,   ....
7

9- Tham gia SQL

Đặt ra một vấn đề bạn xem thông tin một nhân viên trong bảng NHÂN VIÊN. Bạn có thể thấy nhân viên biết ID phòng cấm của nhân viên này. Nhưng đó là một con số vô nghĩa. Muốn biết tên phòng ban, bạn phải tra cứu sang bảng DEPARTMENT. Nối 2 bảng đó với nhau để có đầy đủ thông tin được gọi là THAM GIA

Có 4 hình thức để tham gia 2 bảng

  • INNER THAM GIA   [THAM GIA]
  • THAM GIA BÊN NGOÀI TRÁI [LEFT JOIN]
  • THAM GIA BÊN NGOÀI PHẢI [RIGHT JOIN]
  • THAM GIA BÊN NGOÀI ĐẦY ĐỦ    [OUTER THAM GIA]
  • THAM GIA CHÉO

9. 1- INNER JOIN [Hoặc JOIN]

INNER JOIN từ khóa chọn tất cả các dòng từ hai bảng miễn phí là có sự ăn khớp dữ liệu giữa các cột trong cả hai bảng

cú pháp


Select distinct ,   ....
8

Ví dụ


Select distinct ,   ....
9

Cú pháp riêng của MySQL


-- Truy vấn sản phẩm [Sản phẩm dịch vụ của Ngân hàng]
-- Cột mã sản phẩm, tên và kiểu sản phẩm.
Select Pro.Product_Cd
     ,Pro.Name
     ,Pro.Product_Type_Cd
From   Product Pro;

-- Truy vấn các kiểu sản phẩm  [Product_Type_Cd] trong bảng Product.
-- Dữ liệu là nhiều, nhưng trùng nhau.
Select Pro.Product_Type_Cd from Product Pro;

-- Cần sử dụng Distinct để loại bỏ việc trùng lặp.
Select Distinct Pro.Product_Type_Cd from Product Pro;
0

9. 2- LEFT OUTER JOIN [Hoặc LEFT JOIN]

LEFT OUTER JOIN là từ khóa trả về tất cả các hàng [hàng] từ bảng bên trái [bảng 1], với các hàng tương ứng trong bảng bên phải [bảng 2]. Chấp nhận toàn bộ dữ liệu NULL ở bảng 2

Vui lòng xem hình minh họa dưới đây

Ví dụ


-- Truy vấn sản phẩm [Sản phẩm dịch vụ của Ngân hàng]
-- Cột mã sản phẩm, tên và kiểu sản phẩm.
Select Pro.Product_Cd
     ,Pro.Name
     ,Pro.Product_Type_Cd
From   Product Pro;

-- Truy vấn các kiểu sản phẩm  [Product_Type_Cd] trong bảng Product.
-- Dữ liệu là nhiều, nhưng trùng nhau.
Select Pro.Product_Type_Cd from Product Pro;

-- Cần sử dụng Distinct để loại bỏ việc trùng lặp.
Select Distinct Pro.Product_Type_Cd from Product Pro;
1

Kết quả

9. 3- RIGHT OUTER JOIN [Hoặc RIGHT JOIN]

RIGHT OUTER JOIN tương tự như LEFT OUTER JOIN

9. 4- FULL OUTER JOIN [Hoặc OUTER JOIN]

FULL OUTER JOIN là sự kết hợp của LEFT OUTER JOIN và RIGHT OUTER JOIN


-- Truy vấn sản phẩm [Sản phẩm dịch vụ của Ngân hàng]
-- Cột mã sản phẩm, tên và kiểu sản phẩm.
Select Pro.Product_Cd
     ,Pro.Name
     ,Pro.Product_Type_Cd
From   Product Pro;

-- Truy vấn các kiểu sản phẩm  [Product_Type_Cd] trong bảng Product.
-- Dữ liệu là nhiều, nhưng trùng nhau.
Select Pro.Product_Type_Cd from Product Pro;

-- Cần sử dụng Distinct để loại bỏ việc trùng lặp.
Select Distinct Pro.Product_Type_Cd from Product Pro;
2

10- Câu truy vấn con [Subquery]

Trong MySQL, subquery is a query in a query. Bạn có thể tạo các truy vấn con trong câu lệnh SQL của bạn. Những truy vấn con có thể nằm trong mệnh đề WHERE, mệnh đề TỪ, hoặc mệnh đề CHỌN

10. 1- Truy vấn phụ trong mệnh đề Where

Khá thường xuyên, các truy vấn phụ sẽ được tìm thấy trong mệnh đề WHERE. Những truy vấn con còn được gọi là truy vấn con lồng nhau


-- Truy vấn sản phẩm [Sản phẩm dịch vụ của Ngân hàng]
-- Cột mã sản phẩm, tên và kiểu sản phẩm.
Select Pro.Product_Cd
     ,Pro.Name
     ,Pro.Product_Type_Cd
From   Product Pro;

-- Truy vấn các kiểu sản phẩm  [Product_Type_Cd] trong bảng Product.
-- Dữ liệu là nhiều, nhưng trùng nhau.
Select Pro.Product_Type_Cd from Product Pro;

-- Cần sử dụng Distinct để loại bỏ việc trùng lặp.
Select Distinct Pro.Product_Type_Cd from Product Pro;
3

10. 2- Truy vấn phụ trong mệnh đề Từ

Một truy vấn phụ cũng có thể được tìm thấy trong mệnh đề TỪ. We are call as inline views


-- Truy vấn sản phẩm [Sản phẩm dịch vụ của Ngân hàng]
-- Cột mã sản phẩm, tên và kiểu sản phẩm.
Select Pro.Product_Cd
     ,Pro.Name
     ,Pro.Product_Type_Cd
From   Product Pro;

-- Truy vấn các kiểu sản phẩm  [Product_Type_Cd] trong bảng Product.
-- Dữ liệu là nhiều, nhưng trùng nhau.
Select Pro.Product_Type_Cd from Product Pro;

-- Cần sử dụng Distinct để loại bỏ việc trùng lặp.
Select Distinct Pro.Product_Type_Cd from Product Pro;
4

10. 3- Truy vấn phụ trong mệnh đề Select

Một truy vấn phụ cũng có thể được tìm thấy trong mệnh đề CHỌN


-- Truy vấn sản phẩm [Sản phẩm dịch vụ của Ngân hàng]
-- Cột mã sản phẩm, tên và kiểu sản phẩm.
Select Pro.Product_Cd
     ,Pro.Name
     ,Pro.Product_Type_Cd
From   Product Pro;

-- Truy vấn các kiểu sản phẩm  [Product_Type_Cd] trong bảng Product.
-- Dữ liệu là nhiều, nhưng trùng nhau.
Select Pro.Product_Type_Cd from Product Pro;

-- Cần sử dụng Distinct để loại bỏ việc trùng lặp.
Select Distinct Pro.Product_Type_Cd from Product Pro;
5

Bí quyết đặt một truy vấn phụ trong mệnh đề được chọn là truy vấn phụ phải trả lại một giá trị duy nhất. Đây là lý do tại sao một hàm tổng hợp như hàm SUM, COUNT, MIN, hoặc MAX thường được sử dụng trong truy vấn con

Chủ Đề