Hướng dẫn mysql database - cơ sở dữ liệu mysql

Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người. Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất. Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.
Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất.
Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.

Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới. Facebook
Facebook

Cú pháp:
Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất.
Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.

MySQL's own syntax:
Facebook

1- Giới thiệu

Tài liệu này hướng dẫn cho những người mới bắt đầu học SQL. Tài liệu hướng dẫn dựa trên: SQL. Tài liệu hướng dẫn dựa trên:

  • MySQL >= 5.6

Nội dung bao gồm:

  • Ngôn ngữ SQLSQL
  • Ngữ pháp SQL [Ngữ pháp cơ bản, tiêu chuẩn cho mọi loại DB]SQL [Ngữ pháp cơ bản, tiêu chuẩn cho mọi loại DB]
  • Ngữ pháp SQL riêng của MySQL.SQL riêng của MySQL.

2- Cơ sở dữ liệu học SQL [LearningSQL]

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 đó để tiện cho việc học [Bạn chỉ mất không quá 5 phút để làm việc này]. LearningSQL [phiên bản MySQL]. Bạn cần tạo cơ sở dữ liệu đó để tiện cho việc học [Bạn chỉ mất không quá 5 phút để làm việc này].

Script 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: 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:

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 ra đã bao gồm cả MySQL Workbench] tại: 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 ra đã bao gồm cả MySQL Workbench] tại:

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

4.1- SQL Select

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

  • PRODUCT_TYPE: Bảng dữ liệu các kiểu sản phẩm [Kiểu dịch vụ của ngân hàng].: Bảng dữ liệu các kiểu sản phẩm [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_TYPEPRODUCT_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: 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:

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


-- 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:

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

Đặt Alias cho cột: Distinct được sử dụng cùng với Select, dùng để select các dữ liệu, bỏ qua các dữ liệu trùng nhau. Cú pháp là:


Select distinct ,   ....

4.2- SQL Distinct


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

Câu lệnh Distinct được sử dụng cùng với Select, dùng để select các dữ liệu, bỏ qua các dữ liệu trùng nhau. Cú pháp là:

Xem ví dụ:

Kết quả chạy các câu lệnh trên: "Cho vay cá nhân và kinh doanh".

  • 4.3- SQL Where

Where là câu lệnh nhằm 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, 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:

Truy vấn dữ liệu trên bảng EMPLOYEE: where và nhiều điều kiện kèm theo.

Đặt Alias cho cột:

4.2- SQL Distinct Or là 2 lệnh điều kiện sử dụng trong where:

Câu lệnh Distinct được sử dụng cùng với Select, dùng để select các dữ liệu, bỏ qua các dữ liệu trùng nhau. Cú pháp là:


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

Xem ví dụ:

Kết quả chạy các câu lệnh trên: 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;

4.3- SQL Where

4.5- SQL IN [Trong phạm vi..]

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


-- Câu lệnh này tìm kiếm các nhân viên có tên
-- hoặc Susan hoặc Paula hoặc Helen.
Select Emp.Emp_Id
     ,Emp.First_Name
     ,Emp.Last_Name
     ,Emp.Dept_Id
From   Employee Emp
Where  Emp.First_Name In ['Susan'
                        ,'Paula'
                        ,'Helen'];

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  09-08-2002  [dd-MM-yyyy]


-- 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.6- SQL Between [Nằm giữa ...]

Kết quả câu lệnh:

  1. Câu lệnh BETWEEN cũng được sử dụng trong việc giới hạn thời gian. Chẳng hạn bạn tìm kiếm các nhân viên bắt đầu làm trong khoảng thời gian:
  2. 03-05-2002 ==> 09-08-2002  [dd-MM-yyyy]

4.7- SQL Wildcard

  • Có 2 ký tự đặc biệt trong SQL:
  • Ký tự %

Ký tự _


-- 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

Ý nghĩa:

% mô tả 0, 1 hoặc nhiều ký tự

_ mô tả chính xác một ký tự.

Hai ký tự này thường được sử dụng trong điều kiện like.

Kết quả chạy ví dụ: 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

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


-- 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

Ý nghĩa:

% mô tả 0, 1 hoặc nhiều ký tự 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

_ mô tả chính xác một ký tự.

Hai ký tự này thường được sử dụng trong điều kiện like. Aggregate Functions] là gì:

  • Kết quả chạy ví dụ: : Hàm tính tổng
  • 4.8- SQL Like [Giống với ...] : Hàm lấy trung bình
  • Câu lệnh này chúng ta đã làm quen trên một số ví dụ ở trên. : Hàm tính số lần
  • 4.9- SQL Order By [Sắp xếp bởi] : Hàm tìm giá trị nhỏ nhất
  • Việc query dữ liệu cho một tập kết quả, mà có thể nó sắp xếp không như ý muốn, sử dụng Order by để sắp xếp kết quả trả về. : Hàm tìm giá trị lớn nhất

Ví dụ: Aggregate] thông dụng. Chúng có thể tham gia vào câu lệnh nhóm [Group by].


-- 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

Order By bao giờ cũng đứng sau where. Product_Cd] khác nhau. Điều đó có nghĩa là bạn cần 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

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ì:

  • Sum: Hàm tính tổng"Tiền gửi tiết kiệm" [SAV] với tổng số tiền là 1855.76 và trung bình mỗi tài khoản có 463.94.
  • Avg: Hàm lấy trung bình

Count: Hàm tính số lần

Min: Hàm tìm giá trị nhỏ nhấtlà một câu lệnh điều kiện của Group by.

Max: Hàm tìm giá trị lớn nhấtProduct_Cd] trên bảng Account, và chỉ hiển thị ra các loại hình nào có số 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

Ý nghĩa:

% mô tả 0, 1 hoặc nhiều ký tự

_ mô tả chính xác một ký tự.Where Having trong cùng một câu lệnh.

  • Hai ký tự này thường được sử dụng trong điều kiện like. là câu lệnh lọc bớt dữ liệu trước khi nhóm [Group]
  • Kết quả chạy ví dụ: là câu lệnh lọc bớt dữ liệu sau khi đã nhóm [Group]

4.8- SQL Like [Giống với ...] BRANCH]. Bạn có thể sử dụng where để lọc bớt dữ liệu trước khi group.


-- 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

Ý nghĩa:

% mô tả 0, 1 hoặc nhiều ký tự

_ mô tả chính xác một ký tự.

Hai ký tự này thường được sử dụng trong điều kiện like.


-- 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

Kết quả chạy ví dụ: 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

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

Câu lệnh này chúng ta đã làm quen trên một số ví dụ ở trên. Select để cung cấp dữ liệu trèn vào bảng. Thông qua câu lệnh Insert Into ... Select.


-- 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

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


-- 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

Câu lệnh này chúng ta đã làm quen trên một số ví dụ ở trê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;
4

4.9- SQL Order By [Sắp xếp bởi] CUST_ID = 1 lên 2%.

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


-- 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

Ví dụ:

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

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


-- 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

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

Sum: Hàm tính tổng

Avg: Hàm lấy trung bình là một hàm, đếm số dòng. Thông thường nó thường được sử dụng cùng với Group by.


-- 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

Count: Hàm tính số lầnAcc_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

Min: Hàm tìm giá trị nhỏ nhất

Max: Hàm tìm giá trị lớn nhất

Đó là một số hàm tổng hợp [Aggregate] thông dụng. Chúng có thể tham gia vào câu lệnh nhóm [Group by]. CUST_ID] và tương ứng là số tài khoản họ đã mở.


Select distinct ,   ....
0

Câu hỏi đặt ra 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 nhóm trên các Product_Cd.

Kết quả: SQL.


Select distinct ,   ....
1

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


Select distinct ,   ....
2

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

4.9- SQL Order By [Sắp xếp bởi] là hàm tính trung bình trên cột.


Select distinct ,   ....
3

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


Select distinct ,   ....
4

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

4.9- SQL Order By [Sắp xếp bởi] là hàm tìm giá trị nhỏ nhất trên cột.


Select distinct ,   ....
5

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


Select distinct ,   ....
6

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

4.9- SQL Order By [Sắp xếp bởi] 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

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

Ví dụ: EMPLOYEE. Bạn có thể thấy nhân viên biết ID phòng ban 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. Việc nối 2 bảng đó với nhau để có một thông tin đầy đủ được gọi là JOIN.

Order By bao giờ cũng đứng sau where. Join 2 bảng:

  • 4.10- SQL Group By [Nhóm bởi ...]   [JOIN]
  • Trước hết chúng ta cần hiểu các hàm tổng hợp [Aggregate Functions] là gì:   [LEFT JOIN]
  • Sum: Hàm tính tổng [RIGHT JOIN]
  • Avg: Hàm lấy trung bình  [OUTER JOIN]
  • Count: Hàm tính số lần

Min: Hàm tìm giá trị nhỏ nhất

Max: Hàm tìm giá trị lớn nhất từ khóa chọn tất cả các dòng từ hai bảng miễn là có sự ăn khớp dữ liệu giữa các cột trong cả hai bảng.

Hai ký tự này thường được sử dụng trong điều kiện like.


Select distinct ,   ....
8

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


Select distinct ,   ....
9

Câu lệnh này chúng ta đã làm quen trên một số ví dụ ở trê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;
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 [rows] từ bảng bên trái [table1], với các hàng tương ứng trong bảng bên phải [table2]. Chấp nhận cả dữ liệu NULL ở bảng 2. là từ khóa trả về tất cả các hàng [rows] từ bảng bên trái [table1], với các hàng tương ứng trong bảng bên phải [table2]. Chấp nhận cả dữ liệu NULL ở bảng 2.

Hãy 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 khá giống với LEFT OUTER JOIN: khá giống với 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 là sự kết hợp của LEFT OUTER JOINRIGHT 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, một subquery là một truy vấn trong một truy vấn. 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 đề FROM, hoặc mệnh đề SELECT. MySQL, một subquery là một truy vấn trong một truy vấn. 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 đề FROM, hoặc mệnh đề SELECT.

10.1- Subquery trong mệnh đề Where

Khá thường xuyên, các subquery 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. 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- Subquery trong mệnh đề From

Một truy vấn phụ cũng có thể được tìm thấy trong mệnh đề FROM. Chúng được gọi là inline views. FROM. Chúng được gọi là 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- Subquery trong mệnh đề Select

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


-- 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 đề select là subquery phải trả lại một giá trị duy nhất. Đây là lý do tại sao một các hàm tổng hợp như hàm SUM, COUNT, MIN, hoặc MAX thường được sử dụng trong subquery. select là subquery phải trả lại một giá trị duy nhất. Đây là lý do tại sao một các hàm tổng hợp như hàm SUM, COUNT, MIN, hoặc MAX thường được sử dụng trong subquery.

11- Lập trình database với MySQL

Tiếp theo bạn có thể xem tiếp tài liệu "Lập trình database với MySQL" tại:"Lập trình database với MySQL" tại:

Bài Viết Liên Quan

Chủ Đề