Category: Học SQL

  • Full Outer Join trong SQL

    Câu lệnh Full Outer Join trong SQL lấy tất cả dữ liệu của cả hai bảng. Nối với nhau và dòng nào không có giá trị thì hiện là null.

    Hiểu về Full Outer Join trong SQL
    Hiểu về Full Outer Join trong SQL – Hình: Võ Trung Hòa

    Cú pháp:

    Lệnh Full Outer Join trong SQL
    Lệnh Full Outer Join trong SQL

    Trong đó:

    – column_name là tên cột.

    – table1 và table2 là 2 bảng mà bạn muốn nối với nhau.

    – on là 2 cột ở 2 bảng mà bạn muốn nối.

    Lưu ý: Full Outer Join và Full Join là một, giống hệt nhau.


    Cơ sở dữ liệu demo

    Ví dụ chúng ta có 2 bảng như bên dưới: KhachHang và DonHang.

    Bảng KhachHang:

    MaKH TenKH DiaChi Quan ThanhPho
    1 Lê Thị Ngọc Phúc 4 Phạm Ngọc Thạch Quan1 TPHCM
    2 Trần Thanh Hương 11 Mậu Thân NinhKieu Cần Thơ
    3 Đinh Thị Bích Liên 32 Mạc Đĩnh Chi Quan1 TPHCM
    4 Nguyễn Phương Uyên 137D Nguyễn Đình Chiểu Quan3 TPHCM

    Bảng DonHang:

    SoDonHang MaKH MaNV NgayDatHang MaCuaHang
    1000 1 77 2021-08-12 SG01
    1001 2 78 2021-08-14 CT02
    1002 3 79 2021-08-15 SG04
    1003 57 77 2021-08-15 SG1

    Ví dụ về Full Outer Join

    Bây giờ chúng ta sẽ nối 2 bảng này lại, và lấy cột MaKH làm gốc. Nó sẽ lấy toàn bộ 2 bảng này lại, dòng nào không có giá trị thì nó hiện null.

    Ví dụ lệnh Full Outer Join trong SQL
    Ví dụ lệnh Full Outer Join trong SQL

    Trong đó:

    – Dấu * nghĩa là lấy tất cả thông tin trong bảng.

    – KhachHang và DonHang và là 2 bảng nối với nhau.

    – MaKH là cột làm gốc để đối chiếu 2 bảng.

    Kết quả là:

    MaKH TenKH DiaChi Quan ThanhPho SoDonHang MaKH MaNV NgayDatHang MaCuaHang
    1 Lê Thị Ngọc Phúc 4 Phạm Ngọc Thạch Quan1 TPHCM 1001 1 77 2021-08-12 SG01
    2 Trần Thanh Hương 11 Mậu Thân NinhKieu Cần Thơ 1001 2 78 2021-08-14 CT02
    3 Đinh Thị Bích Liên 32 Mạc Đĩnh Chi Quan1 TPHCM 1003 3 79 2021-08-15 SG04
    4 Nguyễn Phương Uyên 137D Nguyễn Đình Chiểu Quan3 TPHCM NULL NULL NULL NULL NULL
    NULL NULL NULL NULL NULL 1003 57 77 2021-08-15 SG1

    Có khách không mua gì cả (không có đơn hàng), nên các thông tin đơn hàng của khách này đều hiện null.

    Có khách mua hàng nhưng không cho biết thông tin (không có thông tin khách hàng), nên các thông tin khách hàng của đơn hàng này đều hiện null.

  • Right Join trong SQL

    Câu lệnh Right Join trong SQL lấy tất cả dữ liệu bảng bên phải, sau đó đối chiếu và lấy dữ liệu tương ứng ở bảng bên trái. Nếu không có thì kết quả là null.

     

    Hiểu về Right Join trong SQL
    Hiểu về Right Join trong SQL – Hình: Võ Trung Hòa

    Cú pháp:

    Lệnh Right Join trong SQL
    Lệnh Right Join trong SQL

    Trong đó:

    – column_name là tên cột.

    – table1 và table2 là 2 bảng mà bạn muốn nối với nhau.

    – on là 2 cột ở 2 bảng mà bạn muốn nối.

    Lưu ý: Trong một số Database, Right Join được gọi là Right Outer Join.


    Cơ sở dữ liệu demo

    Ví dụ chúng ta 2 bảng như bên dưới: DonHang và KhachHang.

    Bảng DonHang:

    SoDonHang MaKH MaNV NgayDatHang MaCuaHang
    1000 1 77 2021-08-12 SG01
    1001 2 78 2021-08-14 CT02
    1002 3 79 2021-08-15 SG04

    Bảng NhanVien:

    MaNV HoNV TenNV NgaySinhNV HinhNV
    77 Huỳnh Ngọc Trâm 1998-06-20 nv77.jpg
    78 Nguyễn Huỳnh Như 1995-08-15 nv78.jpg
    79 Bảo Vy 2000-11-13 nv79.jpg

    Ví dụ về Right Join

    Bây giờ chúng ta sẽ nối 2 bảng này lại, và lấy cột MaNV ở bảng NhanVien làm gốc. Nó sẽ lấy toàn bộ bảng NhanVien nối với các giá trị tương ứng (dò theo cột MaNV) ở bảng DonHang.

    Kết quả trả về là tất cả nhân viên và các đơn hàng mà họ đã xử lý.

    Ví dụ lệnh Right Join trong SQL
    Ví dụ lệnh Right Join trong SQL

    Trong đó:

    – Dấu * nghĩa là lấy tất cả thông tin trong bảng.

    – DonHang và NhanVien là 2 bảng nối với nhau.

    – MaNV là cột làm gốc để đối chiếu 2 bảng.

    Kết quả là:

    SoDonHang MaKH NgayDatHang MaCuaHang MaNV HoNV TenNV NgaySinhNV HinhNV
    1000 1 2021-08-12 SG01 77 Huỳnh Ngọc Trâm 1998-06-20 nv77.jpg
    1001 2 2021-08-14 CT02 78 Nguyễn Huỳnh Như 1995-08-15 nv78.jpg
    1002 3 2021-08-15 SG04 79 Bảo Vy 2000-11-13 nv79.jpg

    Cả hai bảng này đều có đủ giá trị nên nó không hiện null. Chứ nếu bảng DonHang mà có giá trị nào trống thì nó sẽ hiện null.

  • Left Join trong SQL

    Câu lệnh Left Join trong SQL lấy tất cả dữ liệu bảng bên trái, sau đó đối chiếu và lấy dữ liệu tương ứng ở bảng bên phải. Nếu không có thì kết quả là null.

    Hiểu về Left Join trong SQL
    Hiểu về Left Join trong SQL – Hình: Võ Trung Hòa

    Cú pháp:

    Lệnh Left Join trong SQL
    Lệnh Left Join trong SQL

    Trong đó:

    – column_name là tên cột.

    – table1 và table2 là 2 bảng mà bạn muốn nối với nhau.

    – on là 2 cột ở 2 bảng mà bạn muốn nối.

    Lưu ý: Trong một số Database, Left Join được gọi là Left Outer Join.


    Cơ sở dữ liệu demo

    Ví dụ chúng ta 2 bảng như bên dưới: KhachHang và DonHang.

    Bảng KhachHang:

    MaKH TenKH DiaChi Quan ThanhPho
    1 Lê Thị Ngọc Phúc 4 Phạm Ngọc Thạch Quan1 TPHCM
    2 Trần Thanh Hương 11 Mậu Thân NinhKieu Cần Thơ
    3 Đinh Thị Bích Liên 32 Mạc Đĩnh Chi Quan1 TPHCM

    Bảng DonHang:

    SoDonHang MaKH NgayDatHang MaCuaHang
    1000 1 2021-08-12 SG01
    1001 2 2021-08-14 CT02
    1002 3 2021-08-15 SG04

    Ví dụ về Left Join

    Bây giờ chúng ta sẽ nối 2 bảng này lại, và lấy cột MaKhachHang ở bảng KhachHang làm gốc. Nó sẽ lấy toàn bộ bảng KhachHang nối với các giá trị tương ứng (dò theo cột MaKhachHang) ở bảng DonHang.

    Ví dụ lệnh Left Join trong SQL
    Ví dụ lệnh Left Join trong SQL

    Trong đó:

    – Dấu * nghĩa là lấy tất cả thông tin trong bảng.

    – KhachHang và DonHang và là 2 bảng nối với nhau.

    – MaKH là cột làm gốc để đối chiếu 2 bảng.

    Kết quả là:

    MaKH TenKH DiaChi Quan ThanhPho SoDonHang NgayDatHang MaCuaHang
    1 Lê Thị Ngọc Phúc 4 Phạm Ngọc Thạch Quan1 TPHCM 1000 2021-08-12 SG01
    2 Trần Thanh Hương 11 Mậu Thân NinhKieu Cần Thơ 1001 2021-08-14 CT02
    3 Đinh Thị Bích Liên 32 Mạc Đĩnh Chi Quan1 Cần Thơ 1002 2021-08-15 SG04

    Cả hai bảng này đều có đủ giá trị nên nó không hiện null. Chứ nếu bảng DonHang mà có giá trị nào trống thì nó sẽ hiện null.

  • Inner Join trong SQL

    Bài này hướng dẫn cách xài câu lệnh Inner Join trong SQL, cách nối 2 bảng và 3 bảng. Inner có nghĩa là bên trong, là phần nối, phần trùng của các bảng.

    Hiểu về Inner Join trong SQL
    Hiểu về Inner Join trong SQL – Hình: Võ Trung Hòa

    Cú pháp:

    Lệnh Inner Join trong SQL
    Lệnh Inner Join trong SQL

    Trong đó:

    – column_name là tên cột.

    – table1 và table2 là 2 bảng mà bạn muốn nối với nhau.

    – on là 2 cột ở 2 bảng mà bạn muốn nối.


    Cơ sở dữ liệu demo

    Ví dụ chúng ta 2 bảng như bên dưới: DonHang và KhachHang.

    Bảng DonHang:

    SoDonHang MaKH NgayDatHang MaCuaHang
    1000 1 2021-08-12 SG01
    1001 2 2021-08-14 CT02
    1002 3 2021-08-15 SG04

    Bảng KhachHang:

    MaKH TenKH DiaChi Quan ThanhPho
    1 Lê Thị Ngọc Phúc 4 Phạm Ngọc Thạch Quan1 TPHCM
    2 Trần Thanh Hương 11 Mậu Thân NinhKieu Cần Thơ
    3 Đinh Thị Bích Liên 32 Mạc Đĩnh Chi Quan1 TPHCM

    Ví dụ về Inner Join

    Bây giờ chúng ta sẽ nối 2 bảng này lại bằng câu lệnh sau:

    Ví dụ lệnh Inner Join trong SQL
    Ví dụ lệnh Inner Join trong SQL

    Trong đó:

    – Dấu * nghĩa là lấy tất cả thông tin trong bảng.

    – DonHang và KhachHang là 2 bảng nối với nhau.

    – MaKH là cột sẽ nối.

     

    Kết quả là:

    SoDonHang MaKH NgayDatHang MaCuaHang TenKH DiaChi Quan ThanhPho
    1000 1 2021-08-12 SG01 Lê Thị Ngọc Phúc 4 Phạm Ngọc Thạch Quan1 TPHCM
    1001 2 2021-08-14 CT02 Trần Thanh Hương 11 Mậu Thân NinhKieu Cần Thơ
    1002 3 2021-08-15 SG04 Đinh Thị Bích Liên 32 Mạc Đĩnh Chi Quan1 Cần Thơ

    Inner Join 3 bảng

    Join 3 bảng cũng tương tự, bạn chỉ cần mở đóng ngoặc rồi Inner Join tiếp thôi.

    Như ví dụ bên dưới mình Inner Join thêm bảng CuaHang nữa:

    Ví dụ Inner Join 3 bảng trong SQL
    Ví dụ Inner Join 3 bảng trong SQL
  • Cách tạo và xóa bảng trong SQL

    Dưới đây là hướng dẫn cách tạo và xóa bảng trong SQL bằng lệnh. Ngoài ra bạn cũng có thể làm bằng tay cũng được, nhưng nên tập gõ lệnh cho nó tiện.

    Cách tạo bảng

    – Cú pháp: CREATE TABLE “Tên bảng”

    Ví dụ bên dưới mình muốn tạo bảng ThongTinKhachHang thì mình gõ lệnh “CREATE TABLE ThongTinKhachHang”.

    Trong lúc tạo bảng bạn cũng có thể tạo luôn các cột và quy định kiểu dữ liệu cho nó, để khỏi mất công sau này.

    Bạn chỉ cần ghi tên các cột và kiểu dữ liệu trong ngoặc ( ) là được.

    Ví dụ bên dưới mình có các cột NgayMuaHang kiểu dữ liệu date, cột MaKhachHang kiểu dữ liệu varchar độ dài 255, v.v…

    Cách tạo bảng trong SQL bằng lệnh Create Table
    Cách tạo bảng trong SQL bằng lệnh Create Table

     

    Cách xóa bảng

    – Cú pháp: DROP TABLE “Tên bảng”

    Ví dụ bên dưới mình muốn xóa bảng ThongTinKhachHang thì mình chỉ cần gõ lệnh “DROP TABLE ThongTinKhachHang”.

    Cách xóa bảng trong SQL bằng lệnh Drop Table
    Cách xóa bảng trong SQL bằng lệnh Drop Table
  • Kiểu dữ liệu trong SQL

    Dưới đây là các kiểu dự liệu trong SQL gồm kiễu chuỗi, số, thời gian và hình ảnh. Tùy theo mục đích nhập liệu cũng như tính toán sau này mà bạn có thể quy định kiểu dữ liệu cho nó.

    Kiểu dữ liệu là gì?

    Kiểu dữ liệu (data type) là bản chất của dữ liệu. Quy định kiểu dữ liệu sẽ giúp bạn dễ thao tác với dữ liệu, như tính toán, bóc tách, v.v… Kiểu dữ liệu trong SQL dựa theo tiêu chuẩn của ANSI/ISO. Có 16/143 kiểu dữ liệu được xài phổ biến trong các hệ quản trị cơ sở dữ liệu thương mại ngày nay.

    Khi quy định kiểu dữ liệu bạn có thể:

    – Quy định kiểu dữ liệu mà mỗi column (trường thuộc tính) có thể lưu trữ và hiển thị.

    – Quy định kích thước của dữ liệu đó trong vùng nhớ.

     

    Tại sao cần xài các kiểu dữ liệu khác nhau?

    Không thể xài chung một kiểu dữ liệu cho tất cả các column (trường thuộc tính) hoặc database (cơ sở dữ liệu) được. Ví nếu tất cả dữ liệu có cùng dữ liệu thì bạn không thể phân biệt đâu là ngày tháng, chuỗi, số nguyên hay số thực. Dẫn tới không thể áp dụng các phép tính, việc tìm kiếm và khai thác thông tin cũng sẽ rất khó khăn.

    Quy định rõ ràng kiểu cho các dữ liệu còn giúp tối ưu bộ nhớ và tiết kiệm dung lượng đáng kể. Việc này càng quan trọng hơn đối với dữ liệu trên thiết bị di động.

     

    Kiểu dữ liệu chuỗi

    Chuỗi (hay xâu chuỗi) đơn giản là mấy kiểu chữ viết này nọ đó mà.

    Cú pháp Kích thước tối đa Giải thích
    char (kich_thuoc) 8000 kí tự – kich_thuoc là số kí tự lưu trữ.

    – Độ dài cố định.

    – Nếu thiếu kí tự thì thêm dấu cách bên phải cho đủ.

    – Không chứa kí tự Unicode.

    nchar (kich_thuoc) 4000 kí tự – Độ dài cố định.

    – Kí tự Unicode.

    varchar (kich_thuoc) 8000 kí tự – kich_thuoc là số kí tự lưu trữ.

    – Độ dài tùy biến.

    – Tối đa tương đương 2GB.

    – Không chứa kí tự Unicode.

    nvarchar (kich_thuoc) 4000 kí tự – kich_thuoc là số kí tự lưu trữ.

    – Độ dài tùy biến.

    – Tối đa tương đương 2GB.

    – Kí tự Unicode.

    text 2GB – Độ dài tùy biến.

    – Không chứa kí tự Unicode.

    ntext 1.073.741.823 byte – Độ dài tùy biến.

    – Kí tự Unicode.

    binary (kich_thuoc) 8000 kí tự – kich_thuoc là số kí tự lưu trữ.

    – Độ dài cố định.

    – Nếu thiếu kí tự thì thêm dấu cách cho đủ.

    – Dự liệu nhị phân.

    varbinary (kich_thuoc) 8000 kí tự – kich_thuoc là số kí tự lưu trữ.

    – Độ dài tùy biến.

    – Tối đa tương đương 2GB.

    – Dự liệu nhị phân.

    image 2GB – Độ dài tùy biến.

    – Dự liệu nhị phân.

     

    Kiểu dữ liệu số

    Là kiểu số nguyên, số thực, tiền, v.v…

    Cú pháp Kích thước tối đa Giải thích
    bit mang giá trị 0, hoặc 1, hoặc NULL.
    int Từ -2,147,483,648

    đến 2,147,483,647

    smallint Từ -32768

    đến 32767

    tinyint Từ 0

    đến 255

    bigint Từ -9,223,372,036,854,775,808

    đến 9,223,372,036,854,775,807

    dec (m,d) m mặc định là 18

    d mặc định là 0

    – m là tổng số lượng các số.

    – d là số lượng các số nằm sau dấu phẩy.

    – Đồng nghĩa với kiểu dữ liệu decimal.

    decimal (m,d) m mặc định là 18

    d mặc định là 0

    – m là tổng số lượng các số.

    – d là số lượng các số nằm sau dấu phẩy.

    numeric (m,d) m mặc định là 18

    d mặc định là 0

    – m là tổng số lượng các số.

    – d là số lượng các số nằm sau dấu phẩy.

    – Đồng nghĩa với kiểu dữ liệu decimal.

    float (n) n mặc định là 53 n là số lượng của số bit lưu trữ trong một kí hiệu hóa học.
    real Tương đương với float (24)
    money Từ -922,337,203,685,477.5808

    đến 922,337,203,685,477.5807

    smallmoney Từ -214,748.3648

    đến 214,748.3647

     

    Kiểu dữ liệu thời gian (giờ, ngày tháng)

    Với kiểu dữ liệu thời gian, bạn có thể quy định cho nó như bình thường hoặc chính xác tới từng số thập phân của giây luôn.

    Cú pháp Kích thước tối đa Giải thích
    date Ngày lấy

    từ ‘0001-01-01’

    đến ‘9999-12-31

    Hiển thị dạng YYYY-MM-DD
    time – Ngày lấy

    từ ‘0001-01-01’

    đến ‘9999-12-31′

     

    – Giờ lấy

    từ ’00:00:00.0000000′

    đến ’23:59:59.9999999’

    Hiển thị dạng YYYY-MM-DD hh:mm:ss[.nnnnnnn]
    datetime – Ngày lấy

    từ ‘1753-01-01 00:00:00’

    đến ‘9999-12-31 23:59:59′

     

    – Giờ lấy

    từ ’00:00:00′

    đến ’23:59:59:997’

    Hiển thị dạng YYYY-MM-DD hh:mm:ss[.mmm]
    datetime2 – Ngày lấy

    từ ‘0001-01-01’

    đến ‘9999-12-31′

     

    – Giờ lấy

    từ ’00:00:00′

    đến ’23:59:59:9999999’

    – Hiển thị dạng YYYY-MM-DD hh:mm:ss[.số giây thập phân]

    – Chính xác tới số thập phân của giây.

    smalldatetime – Ngày lấy

    từ ‘1900-01-01’

    đến ‘2079-06-06′

     

    – Giờ lấy

    từ ’00:00:00′

    đến ’23:59:59’

    Hiển thị dạng YYYY-MM-DD hh:mm:ss
    datetimeoffset – Giờ lấy

    từ ’00:00:00′

    đến ’23:59:59:9999999′

     

    – Múi giờ lấy

    từ -14:00

    đến +14:00

    – Hiển thị dạng YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{+|-}hh:mm]

    – Chính xác tới số thập phân của giây.

     

    Cấp phát động và cấp phát tĩnh

    Kiểu dữ liệu có độ dài tùy theo dữ liệu nhập gọi là cấp phát động, còn kiểu dữ liệu có độ dài cố định gọi là cấp phát tĩnh. Cấp phát ở đây ý nói khả năng cấp phát bộ nhớ. Ví dụ:

    Cấp phát động và cấp phát tĩnh trong SQL
    Cấp phát động và cấp phát tĩnh trong SQL

    Đoạn code này có nghĩa là: Tạo một bảng tên BangDuLieu, trong đó:

    – Cột Cot1 có kiểu dữ liệu varchar và độ dài là 10.

    – Cột Cot2 có kiểu dữ liệu char và độ dài cũng là 10.

     

    Cả hai đều có độ dài là 10. Nhưng nếu bạn nhập nội dung “abc” cho hai cột này thì:

    – Cot1: Sẽ lưu trữ 3 ô bộ nớ (3 kí tự abc). => Cấp phát động.

    – Cot2: Sẽ luôn lưu trữ 10 ô bộ nhớ (3 kí tự abc và 7 kí tự rỗng). => Cấp phát tĩnh.

     

    Như vậy rõ ràng là kiểu cấp phát động linh hoạt và tiết kiệm bộ nhớ hơn. Vậy khi nào thì xài cấp phát tĩnh? Là khi bạn cần dữ liệu có độ dài cố định, chính xác. Ví dụ khi nhập mã khách hàng chẳng hạn.

Eine Übersicht der Gewinnzahlen jeder Community helfen, um euch selbst Gedanken über eure Gewinnchancen zu machen. spieler ein Gewinne werden lediglich ausbezahlt, wenn jeder Spieler die Bonusbedingungen erfüllt. von uns Auch hinsichtlich der Zahlungsdaten müsst ihr euch keinerlei Gedanken machen. mit einem Ansonsten ist dieser kostenlose Casino Willkommensbonus ein sehr gutes Erlebnis. vulkan vegas