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.
– 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
Lê
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
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
Lê
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.
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.
– 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
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.
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.
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
Đ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