Categories
Hệ quản trị SQL

Lệnh DISTINCT trong SQL

Des: Giải đáp lệnh DISTINCT trong SQL là gì, cú pháp như thế nào. Hướng dẫn cách dùng, ý nghĩa tên biến, giá trị biến và ví dụ minh họa cụ thể.

Các câu hỏi về lệnh DISTINCT

Cấu trúc dữ liệu SQL có rất nhiều câu lệnh khác nhau và một số các câu lệnh được sử dụng khá thường xuyên đó là DISTINCT. Vậy DISTINCT trong SQL là gì? Cú pháp như thế nào, dùng ra sao? Tất cả sẽ được chúng tôi giải đáp ngay sau đây!

1. Cú pháp SELECT DISTINCT trong cấu trúc dữ liệu SQL?

Hàm DISTINCT thuộc ngôn ngữ truy vấn SQL được sử dụng nhằm mục đích loại bỏ những giá trị trùng lặp ở bộ kết quả trả về khi truy vấn. Các bạn chỉ có thể sử dụng mệnh đề DISTINCT thuộc lệnh SELECT mới thực thi được.

Dưới đây là cú pháp SELECT DISTINCT trong SQL:

SELECT DISTRINCT “biểu thức”

FROM “bảng”

[WHERE “điều kiện”];

2. Tên biến hoặc giá trị biến trong SQL

  • “biểu thức”: Cột hoặc giá trị tính toán mà các bạn muốn lấy kết quả
  • “bảng”: Bảng được dùng để lấy bản ghi và mệnh đề FROM phải có tối thiểu 1 bảng
  • WHERE “điều kiện”: Bạn có thể đưa ra điều kiện tùy chọn nhưng điều kiện phải đảm bảo bản ghi đáp ứng được

Những lưu ý quan trọng về lệnh DISTINCT:

  • Nếu hàm DISTINCT trong SQL chỉ có duy nhất 1 biểu thức thì cuối cùng truy vấn trả về sẽ là các giá trị duy nhất của biểu thức đó
  • Nếu lệnh DISTINCT khi dùng SQL có nhiều hơn 1 biểu thức thì kết quả truy vấn trả về sẽ là tất cả giá trị duy nhất của các biểu thức đó
  • Sử dụng DISTINCT khi lập trình SQL giá trị NULL cũng được tính. Do đó, kết quả giá trị trả về của lệnh này sẽ có cả giá trị NULL duy nhất

3. Một số ví dụ về DISTINCT trong ngôn ngữ truy vấn có cấu trúc SQL:

Để các bạn có thể hiểu rõ hơn về SELECT DISTINCT chúng tôi xin đưa ra ví dụ minh họa sau:

Giải sử, chúng ta có một bảng SINHVIEN với các giá trị như bản ghi như sau:

ID TEN TUOI KHOAHOC HOCPHI
1 Hoang 21 CNTT 4
2 Viet 19 DTVT 3
3 Thanh 18 KTDN 4
4 Nhan 19 CK 4.5
5 Huong 20 TCNH 5

Trước hết chúng ta sẽ thực hiện truy vấn SELECT để trả về kết quả của bản sao HOCPHI. Câu lệnh như sau:

SQL> SELECT HOCPHI FROM SINHVIEN

ORDER BY HOCPHI;

Kết quả thu được như sau:

HOCPHI
4
3
4
4.5
5

Tiếp theo, chúng ta sẽ sử dụng hàm DISTINCT để truy vấn:

SQL> SELECT DISTINCT HOCPHI FROM SINHVIEN

ORDER BY HOCPHI;

Kết quả thu được là:

HOCPHI
4
5
4.5
5

Kết luận về DISTINCT

Trên đây là giải đáp của chúng tôi về hàm DISTINCT của cấu trúc dữ liệu SQL là gì, chúng được tận dụng cho mục đích nào. Bên cạnh đó là một số ví dụ để các bạn có thể hiểu rõ hơn về hàm này. Đây là hàm có giá trị thiết yếu và được sử dụng nhiều khi học về cấu trúc dữ liệu. Vì vậy, hãy cố gắng hiểu và thực hành với hàm này thật nhiều để tận dụng thành thạo nhất!

Categories
Hệ quản trị SQL

INNER JOIN trong SQL

Trong cấu trúc cơ sở dữ liệu SQL có một hàm mà các bạn sẽ cần phải sử dụng rất thường xuyên, đó là Inner Join. Vậy, Inner Join trong SQL là cú pháp gì, có tác dụng như thế nào? Nếu các bạn đang tìm hiểu về cú pháp này hãy theo dõi bài viết kết hợp cùng một vài ví dụ dưới đây để hiểu rõ hơn.

1. Cú pháp INNER JOIN trong SQL

SQL Inner Join là một mệnh đề được dùng nhằm mục đích truy vấn kết quả. Khi viết đúng câu lệnh, hệ thống sẽ trả về tập hợp dữ liệu thỏa mãn điều kiện từ hai bảng. Câu lệnh này sẽ thực hiện truy vấn dữ liệu trong bang1 và bang2, thực hiện so sánh mỗi hàng trong hai bảng để tìm ra các cặp hàng kết hợp thỏa mãn điều kiện người dùng đưa ra.

Cú pháp của câu lệnh Inner Join SQL cơ bản như sau:

SELECT cot1, cot2,… cotn

FROM bang1

INNER JOIN bang2

ON bang1.cot_chung = bang2.cot_chung;

Trong đó:

  • Cot1, cot2,… cotn: Tên các cột mà người dùng muốn hiển thị kết quả truy vấn. Trong cú pháp, các cột được phân cách bằng một dấu phẩy (,)
  • Bang1, bang2: Tên bảng truy vấn dữ liệu
  • Cot_chung: Tên cột khóa ngoại được dùng để tham chiếu từ bag 1 đến cột định danh ở bang2 hoặc ngược lại

2. Ví dụ về INNER JOIN trong SQL

Để các bạn có thể hiểu rõ hơn về Inner Join in SQL chúng tôi xin lấy một vài ví dụ sau:

Giả sử, chúng ta có hai bảng tên là NHANVIEN và TIENTHUONG với nội dung các cột như sau:

Bảng 1: NHANVIEN

ID TEN TUOI DIACHI LUONG
1 Thanh 32 haiphong 2000.00
2 Loan 25 Hanoi 1500.00
3 Nga 23 Hanam 2000.00
4 Manh 25 Hue 6500.00
5 Huy 27 Hatinh 8500.00
6 Cao 22 HCM 4500.00
7 Lam 24 Hanoi 10000.00

Bảng 2: TIENTHUONG

TT_ID NGAY NHANVIEN_ID SOTIEN
102 2019-01-08 00:00:00 3 3000
100 2019-01-08 00:00:00 3 1500
101 2019-02-20 00:00:00 2 1560
103 2018-12-20 00:00:00 4 2060

Câu lệnh Inner Join trong SQL dùng để join hai bảng này lại như sau:

SELECT ID, TEN, SOTIEN, NGAY

FROM NHANVIEN

INNER JOIN TIENTHUONG

ON NHANVIEN.ID = TIENTHUONG.NHANVIEN_ID;

Khi thực hiện câu lệnh chúng ta sẽ nhận được kết quả trả về là:

ID TEN SOTIEN NGAY
3 Nga 3000 2019-01-08 00:00:00
3 Nga 1500 2019-01-08 00:00:0
2 Loan 1560 2019-02-20 00:00:00
4 Manh 2060 2018-12-20 00:00:00

Trên đây là giải đáp của chúng tôi về câu lệnh Inner Join trong SQL và ví dụ minh họa. Hy vọng thông qua bài viết này các bạn đã hiểu ý nghĩa và cách sử dụng câu lệnh này như thế nào. Chúc các bạn học tập tốt môn cấu trúc cơ sở dữ liệu và sử dụng thành thạo Inner Join.

 

Categories
Hệ quản trị SQL

CONSTRAINT (RÀNG BUỘC) trong SQL Server

CONSTRAINT là một trong những quy tắc áp dụng trong SQL Server. Có nhiều loại CONSTRAINT khác nhau. Cùng tôi tìm hiểu kỹ hơn nhé.

1. CONSTRAINT trong SQL là gì?

Constraint được sử dụng để đảm bảo các điều kiện đầu vào đúng, đảm bảo sự chính xác và sự toàn vẹn của dữ liệu.

Thông thường sẽ có 6 loại ràng buộc trong SQL Server. Mỗi loại này đều là những quy tắc được áp dụng trên các cột dữ liệu

2. Các RÀNG BUỘC có sẵn trong SQL Server

Loại ràng buộc Ý nghĩa
NOT NULL Khi muốn dữ liệu không nhận giá trị NULL trong cột dữ liệu.
DEFAULT Nếu các dữ liệu của cột không xác định hoặc không nhập sẽ được gán cho các giá trị mặc định trước đó đã setting.
UNIQUE Đảm bảo dữ liệu không bị lặp lại với các dữ liệu khác.
PRIMARY KEY (Khóa chính) Sử dụng cài đặt khóa chính trong bảng, xác định các dữ liệu phải là duy nhất (không trùng lặp) trên các cột được gán lệnh. Việc khai báo yêu cầu các cột phải NOT NULL.
FOREIGN KEY (Khóa ngoại) Mỗi hàng/bản ghi được nhận diện duy nhất trong bất kỳ bảng nào.
CHECK Đảm bảo các dữ liệu trong cột phải thỏa mãn điều kiện mà bạn đã gán.
INDEX Lấy dữ liệu từ Database nhanh nhất

Những lệnh ràng buộc này có thể được xác định khi tạo một bảng bởi CREATE TABLE hoặc ALTER TABLE giúp bạn tạo ra các ràng buộc trước khi tạo bảng.

2.1 Một số lưu ý khác đối với RÀNG BUỘC CHECK

  • Không thể định trong VIEW
  • Bạn chỉ có thể tham chiếu các dữ liệu ở bảng đã khai báo ràng buộc. Còn lại không thể tham ở bảng khác, nếu muốn phải dùng Function để trích xuất dữ liệu.
  • Trong định nghĩa điều kiện không thể sử dụng các truy vấn con (Subquery)

2.2 Ví dụ cụ thể

Thuật toán quản lý Vay có thế chấp tài sản đơn giản thể hiện qua sơ đồ như sau:

Thiết lập lệnh NOT NULL trong cột MaKH trên bảng KHACHHANG

Nếu tạo mới bảng:

CREATE TABLE KhachHang (

MaKH char(10) NOT NULL,

HoTen nvarchar(50),

DiaChi nvarchar(50),

DienThoai varchar(50),

NgaySinh date

);

Nếu sửa bảng:

ALTER TABLE KhachHang MODIFY MaKH char(10) NOT NULL;

Sử dụng lệnh DEFAULT

Cột NgayVay lấy giá trị mặc định là ngày hiện tại nếu ngày vay không thể xác định. Sử dụng function GETDATE() để lấy giá trị ngày hiện tại.

Nếu tạo mới bảng:

CREATE TABLE Vay (

MaVay char(10) NOT NULL,

MaKH char(10) NOT NULL,

MaTaiSan char(10) NOT NULL,

MaNV char(10) NOT NULL,

NgayVay date DEFAULT GETDATE(),

ThoiHan int,

LaiSuat float,

SoTienVay money,

NgayHetHan date

);

Nếu sửa bảng

ALTER TABLE Vay

ADD CONSTRAINT df_ngay_vay DEFAULT GETDATE() FOR NgayVay;

Sử dụng lệnh PRIMARY KEY (khóa chính)

Nếu bạn sử dụng lệnh này cho MaTaiSan trên bảng MATAISAN

Tạo mới bảng:

Cách 1: Không khai báo Constraint

CREATE TABLE TaiSan (

MaTaiSan char(10) PRIMARY KEY,

TenTaiSan nvarchar(70) NOT NULL,

LoaiTaiSan nvarchar(30),

GiaTri money

);

Cách 2: Khai báo Constraint

CREATE TABLE TaiSan (

MaTaiSan char(10) NOT NULL,

CONSTRAINT pk_ma_ts PRIMARY KEY (MaTaiSan),

TenTaiSan nvarchar(70) NOT NULL,

LoaiTaiSan nvarchar(30),

GiaTri money

);

Sửa đổi bảng:

ALTER TABLE TaiSan

ADD CONSTRAINT pk_mats PRIMARY KEY (MaTaiSan);

Sử dụng FOREIGN KEY (khóa ngoại)

Lệnh ràng buộc ví dụ được sử dụng trên bảng VAY cho cột MaKH

Tạo mới bảng

Cách 1: Không khai báo Constraint

CREATE TABLE Vay (

MaVay char(10) NOT NULL,

MaKH char(10) FOREIGN KEY REFERENCES KhachHang(MaKH),

MaTaiSan char(10),

MaNV char(10),

NgayVay date,

ThoiHan int,

LaiSuat float,

SoTienVay money,

NgayHetHan date

);

Cách 2: Khai báo constraint

CREATE TABLE Vay (

MaVay char(10) NOT NULL,

MaKH char(10),

CONSTRAINT FOREIGN KEY (MaKH) REFERENCES KhachHang(MaKH),

MaTaiSan char(10),

MaNV char(10),

NgayVay date,

ThoiHan int,

LaiSuat float,

SoTienVay money,

NgayHetHan date

);

Sửa đổi bảng

ALTER TABLE Vay

ADD CONSTRAINT fk_makh FOREIGN KEY (MaKH) REFERENCES KhachHang(MaKH);

Sử dụng lệnh UNIQUE

Áp dụng trên bảng KhachHang cho trường DienThoai

Tạo mới bảng

Cách 1:

CREATE TABLE KhachHang (

MaKH char(10) NOT NULL,

HoTen nvarchar(50) NOT NULL,

DiaChi nvarchar(50) NOT NULL,

DienThoai varchar(50) UNIQUE,

NgaySinh date

);

Cách 2:

CREATE TABLE KhachHang (

MaKH char(10) NOT NULL,

HoTen nvarchar(50) NOT NULL,

DiaChi nvarchar(50) NOT NULL,

DienThoai varchar(50),

CONSTRAINT unique_dien_thoai UNIQUE (DienThoai)

NgaySinh date

);

Sửa đổi bảng:

ALTER TABLE KhachHang

ADD CONSTRAINT unique_dien_thoai UNIQUE (DienThoai);

Sử dụng lệnh Check constraint trong sql

Tao Constraint Check trên trường NgayVaoLam > ‘1/1/1997’ của bảng NhanVien.

ALTER TABLE NhanVien

ADD CONSTRAINT check_ngay_vao_lam CHECK (NgayVaoLam > ‘1997-1-1’);

Tao Constraint Check trên trường NgayHetHan phải lớn hơn NgayVay của bảng Vay

ALTER TABLE Vay

ADD CONSTRAINT check_ngayhethan CHECK (NgayHetHan > NgayVay);

Tao Constraint kiểm tra trên trường GiaTri>=2 của bảng TaiSan

ALTER TABLE TaiSan

ADD CONSTRAINT check_gia_tri CHECK (GiaTri > 2);

Tao Constraint kiểm tra trên trường ThoiHan khoảng 1 đến 12 tháng của bảng Vay

ALTER TABLE Vay

ADD CONSTRAINT check_thoi_han CHECK (ThoiHan BETWEEN 1 AND 12);

3. Xóa RÀNG BUỘC trong SQL

Lệnh xóa bỏ

ALTER TABLE <tên table chứa ràng buộc>

DROP CONSTRAINT <tên ràng buộc muốn xóa bỏ>

Ví dụ: Xóa bỏ kiểm tra trên trường ThoiHan từ 1-12 tháng gán ở trên

ALTER TABLE Vay

DROP CONSTRAINT check_thoi_han CHECK (ThoiHan BETWEEN 1 AND 12);

4. Bỏ kích hoạt và kích hoạt CONSTRAINT

Đôi khi bạn không muốn lệnh CONSTRAINT hoạt động nhưng lại không muốn xóa chúng. Đừng lo lắng vì đã có lệnh bỏ và kích hoạt lại lệnh.

Câu lệnh là:

ALTER TABLE <tên table chứa ràng buộc>

NOCHECK CONSTRAINT <tên ràng buộc>

Ví dụ: Vô hiệu hóa Constraint Check trên trường NgayHetHan phải lớn hơn NgayVay của bảng Vay

ALTER TABLE Vay

NOCHECK CONSTRAINT check_ngayhethan CHECK (NgayHetHan > NgayVay);

Trường hợp muốn kích hoạt lại ràng buộc, bạn sử dụng lệnh sau:

ALTER TABLE <tên table chứa ràng buộc>

WITH CHECK CHECK CONSTRAINT <tên ràng buộc>

Ví dụ: Kích hoạt lại ví dụ trên

ALTER TABLE Vay

WITH CHECK CHECK CONSTRAINT check_ngayhethan CHECK (NgayHetHan > NgayVay);

5. RÀNG BUỘC toàn vẹn trong SQL Server

Integrity constraint (ràng buộc toàn vẹn) chỉ nên sử dụng khi bạn muốn đảm bảo 100% sự chính xác và tính nhất quán trong các dữ liệu của Cơ sở dữ liệu.

Integrity constraint được sử dụng thông qua khái niệm toàn vẹn tham chiếu (referential integrity – RI)

Như vậy là tôi đã hướng dẫn bạn add constraint trong sql. Khá đơn giản thôi, nhưng bạn cần cố gắng thực hiện mỗi ngày. Đón chờ các bài viết tiếp theo của tôi nữa nhé.

 

Categories
Hệ quản trị SQL

Lệnh SELECT TOP trong SQL Server

Khái niệm cơ bản về cú pháp lệnh select top trong ngôn ngữ lập trình dữ liệu có cấu trúc SQL Server

Lệnh SELECT TOP được dùng để lấy dữ liệu từ 1 hay nhiều bảng trong SQL SERVER và trả về các dữ liệu được giới hạn dựa trên % cố định hoặc giá trị

1. Cú pháp lệnh SELECT TOP trong lập trình dữ liệu cấu trúc SQL Server

SELECT TOP (giatridau) [PERCENT] [WITH TIES]

bieu_thuc

FROM bang

[WHERE dieukien]

[ORDER BY bieuthuc [ ASC | DESC ]];

2. Tên biến (hoặc giá trị biến)

Biến TOP

TOP (giatridau), lệnh trả về kết quả dựa trên giatridau. Ví dụ TOP(1) sẽ chèn 1 hàng đầu tiên từ kết quả, đây cũng có thể gọi là Select top 1 trong SQL.

Ví dụ thực tế:

SELECT TOP(10)

nhanvien_id, ho, ten

FROM nhanvien

WHERE ho = ‘LÊ’

ORDER BY nhanvien_id;

Lệnh này sẽ lấy 10 dữ liệu đầu tiên trong bảng nhanvien có họ là LÊ. Khi đã lấy đủ 5 dữ liệu thì những dữ liệu khác dù có họ LÊ cũng không được xuất hiện.

Nếu thêm mệnh đề WITH TIES

SELECT TOP(10) WITH TIES

nhanvien_id, ho, ten

FROM nhanvien

WHERE ho = ‘LÊ’

ORDER BY nhanvien_id;

Ví dụ này sẽ trả về các hàng giống với hàng cuối trong bộ kết quả.

Biến PERCENT

Tùy chọn. Nếu sử dụng kết quả trả về sẽ dựa trên % của giatridau. Ví dụ TOP(5) PERCENT sẽ chèn 5% giá trị đầu trong bộ kết quả.

Ví dụ thực tế:

SELECT TOP(20) PERCENT

nhanvien_id, ho, ten

FROM nhanvien

WHERE ho = ‘LÊ’

ORDER BY nhanvien_id;

Ví dụ này sẽ trả về bộ kết quả đúng 20% đầu tiên trong bảng nhanvien trong số các nhân viên có họ là LÊ. 80% còn lại sẽ không được trả về.

Thêm hàm WITH TIES ta có:

SELECT TOP(20) PERCENT WITH TIES

nhanvien_id, ho, ten

FROM nhanvien

WHERE ho = ‘LÊ’

ORDER BY nhanvien_id;

Kết quả trả về sẽ có các hàng giống với hàng cuối trong bộ kết quả. Bộ kết quả khi đó sẽ nhiều hơn 20%.

Biến WITH TIES

Tùy chọn. Sử dụng nếu các hàng cuối trong kết quả có giá trị giống với các hàng. Xảy ra khi số hàng trả về nhiều hơn biến TOP

bieuthuc

Cột hoặc giá trị muốn lấy về

bang

Bảng muốn lấy bản ghi từ đó. Phải có ít nhất 1 bảng trong mệnh đề FROM.

Biến WHERE

Điều kiện áp dụng để bản ghi được chọn.

Biến ORDER BY

Dùng để sắp xếp các kết quả trả về theo thứ tự tăng hoặc giảm (ASC hoặc DESC)

Kết luận

Vậy là chúng ta lại đi xong một câu lệnh nữa trong sql. Hy vọng rằng có thể tiếp thêm nhiều kiến thức cho các bạn. Cùng đón chờ các bài viết tiếp theo của tôi nhé.

 

Categories
Hệ quản trị SQL

Điều kiện LIKE trong SQL Server

Sử dụng LIKE trong SQL giúp bạn dùng các ký hiệu đại diện (wildcard) trong các mệnh đề WHERE ở các lệnh như INSERT, SELECT DELETE, UPDATE.

1. Cú pháp điều kiện LIKE trong cấu trúc SQL server

“bieu-thuc” LIKE “mau” [ ESCAPE ‘Escape_Character’ ]

2. Tên biến, giá trị biến và toán tử

Bắt đầu bằng các biểu thức, biểu thức ký hiệu, mẫu, biểu thức kí tự đối chiếu mẫu. Các mẫu có thể chọn từ bảng dưới đây.

Kí hiệu đại diện Ý nghĩa
% tìm chuỗi ký tự với độ dài bất kỳ nào (gồm cả độ dài = 0)
_ tìm một ký tự
[^] tìm bất kỳ ký hiệu nào mà không chứa trong dấu [^] (ví dụ [^xyz] sẽ tìm bất kì kí tự nào không phải là x, y hoặc z)

Escape Character. Bạn có thể tùy chọn bỏ qua ký hiệu, cho phép kiểm tra xem các ký hiệu đại diện như % hay _ có thể dùng dưới dạng hằng số, chứ không được dùng như một kí tự đặc biệt.

Ví dụ – sử dụng ký hiệu đại diện %

SELECT *

FROM hangtonkho

WHERE ho LIKE ‘C%’;

Hàm này sẽ tìm ra các hàng tồn kho có tên bắt đầu bằng chữ C

SELECT *

FROM hangtonkho

WHERE ten LIKE ‘%0%’;

Dùng %O% để tìm ra hàng tồn kho có tên chứa chữ O trong bảng hangtonkho.

Ví dụ – sử dụng ký tự đại diện _

Ký tự _ chỉ tìm được 1 ký tự (độ dài bằng 1)

SELECT *

FROM hangtonkho

WHERE ten LIKE ‘K_o’;

Ví dụ hàm này sẽ trả về tất cả các kết quả hàng tồn kho có giá trị như: Kẹo, Kéo trong bảng hangtonkho.

Ví dụ – dùng ký tự đại diện []

Những gì được liệt kê trong [] là tất cả những ký hiệu có giá trị mà bạn muốn khớp

SELECT *

FROM hangtonkho_id

WHERE ma LIKE ‘AA[BC]22’;

Ví dụ – dùng ký tự đại diện [^]

SELECT *

FROM hangtonkho_id

WHERE ma LIKE ‘AA[^BC]22’;

Những gì được liệt kê trong [] sẽ không được chứa B hoặc C khi được dùng thêm ký hiệu ^. Kết quả trả về có giá trị là AAD22 hoặc AAE22.

Ví dụ – sử dụng toán tử NOT

SELECT *

FROM nhanvien

WHERE ten NOT LIKE ‘C%’;

Hàm này sử dụng thêm toán tử NOT nghĩa là trong bảng nhân viên hãy liệt kê ra tất cả nhân viên có giá trị không chứa những người bắt đầu bằng chữ C. Dạng toán tử này nhằm xây dựng các điều kiện giá trị của mệnh đề WHERE trong SQL

Ví dụ – dùng kí tự bỏ qua Escape Character

Sử dụng Escape Character để tránh hàm hiểu rằng chúng ta dùng ký hiệu đại diện mà đơn giản chỉ là như hằng số giá trị bình thường.

SELECT *

FROM nhanvien

WHERE secret_hint LIKE ‘222!%333’ ESCAPE ‘!’;

Lệnh này sẽ trả về tất cả các nhân viên có secret_hint giá trị là 222%333. Kí tự % không còn được dùng để chọn ký hiệu bắt đầu mà như một kí tự giá trị bình thường. Phức tạp hơn ta có:

SELECT *

FROM nhanvien

WHERE secret_hint LIKE ‘S%!%’ ESCAPE ‘!’;

SAU ĐÓ LIỆT KÊ CÁC VÍ DỤ MINH HỌA CHI TIẾT NHƯ TRONG LINK ĐỐI THỦ.

Như vậy là tôi đã kết thúc giới thiệu cho bạn hiểu về điều kiện LIKE của SQL Server. Bài viết của tôi kết thúc tại đây, hy vọng rằng với những thông tin bổ ích và miễn phí trong bài viết nên trên có thể giúp các bạn cải thiện được nhiều khó khăn trong việc xử lý vấn đề về các biến cũng như lệnh LIKE trong hệ dữ liệu có cấu trúc SQL. Các bạn có thể đón chờ thêm các bài viết giá trị sau nhé.

 

Categories
Hệ quản trị SQL

Điều kiện BETWEEN trong SQL Server – Học SQL từ cơ bản đến nâng cao

 

Between một trong những điều kiệu thuộc cấu trúc dữ liệu SQL Server được dùng để lấy dữ liệu trong một khoảng, thường được sử dụng chung với Update, Insert, Delete hoăc Select.

1. Cú pháp điều kiện BETWEEN trong SQL

bieu_thuc BETWEEN giatriA AND giatriB ;

2. Ví dụ tên biến ( hoặc giá trị biến)

Bieu_thuc – trường thông tin hoặc cột

giatriA và giatriB

Các giá trị đối chiếu ở bieu_thuc mà tạo nên khoảng giữa. Gồm cả 2 giá trị A và B.

Ví dụ sử dụng giá trị số

SELECT *

FROM hangtonkho

WHERE hangtonkho_id BETWEEN 5 AND 10;

Hàm sẽ trả về các mặt hàng tồn kho có hantonkho_id từ 5-10 ở bảng hangtonkho

SELECT *

FROM hangtonkho

WHERE hangtonkho_id >= 5

AND hangtonkho_id <= 10;

Lệnh này kết quả tương đương lượng trên nhưng được sử dụng hàm WHERE và AND thay cho BETWEEN.

Ví dụ về toán tử NOT

SELECT *

FROM hangtonkho

WHERE hangtonkho_id NOT BETWEEN 5 AND 10;

Kết quả trả về tên các mặt hàng còn tồn kho, nhưng không nằm trong id từ 5-10 bao gồm cả mặt hàng có id là 5 và 10.

SELECT *

FROM hangtonkho

WHERE hangtonkho_id < 5

OR hangtonkho_id > 10;

Hàm này cũng tương tự với hàng trên.

Kết luận 

Như vậy là chúng ta đã hoàn thành về hướng dẫn điều kiện BETWEEN trong ngôn ngữ cấu trúc SQL Server. Bạn có thể thấy khi áp dụng BETWEEN hàm được viết nhanh hơn khá nhiều.

 

Categories
Hệ quản trị SQL

13 câu lệnh cơ bản trong SQL mà Programmer nên biết

Hiện nay cơ sở dữ liệu (CSDL) là một thứ không thể thiếu trong các website hiện đại ngày nay. Đặc biệt với sự thông dụng của SQL thì việc không chỉ các lập trình viên hay những Marketer, quản trị web,.. đều cần nên nắm rõ. Bài viết này tôi sẽ hướng dẫn 13 câu lệnh được sử dụng thường xuyên trong SQL Server.

Đầu tiên, ở mỗi câu lệnh sẽ có một ví dụ và các ví dụ đó sẽ được tôi sử dụng từ các bảng sau:

Bảng Khách Hàng

Ten tuoi
Chi 28
Tiến 30
Nhi 32

Bảng Height (chiều cao)

ten height
Chi 165
Tiến 164
Nhi 160

Bảng Nhân Viên

ten tuoi
Chi 21
Tiến 21
Nhi 25

Bảng People

ten tuoi
Chi 15
Tiến 19
Nhi 17

Ok bắt đầu thôi nào

1. Lệnh SELECT

Lệnh SELECT chắc chắn là câu lệnh nhập môn khi sử dụng SQL. Bởi vì bạn sẽ thường xuyên sử dụng lệnh này để tương tác với các lệnh khác. Đây cũng chính là một trong các câu lệnh cơ bản trong sql.

Mẹo: Bạn cũng nên cố gắng viết các câu lệnh bằng cách viết hoa để dễ dàng phân biệt hơn nhé.

SELECT nghĩa là chọn, do đó sử dụng lệnh SELECT khi bạn muốn chọn dữ liệu từ các CSDL.

SELECT * FROM table;

  • SELECT * hay SELECT star nghĩa là bạn chọn tất cả dữ liệu trong bảng
  • FROM table là bạn sẽ lấy dữ liệu từ bảng nào thì điển tên bảng đó thay table

Sử dụng lệnh star giúp bạn thao tác khá nhanh nhưng cũng có trường hợp ai đó thêm cột trên bảng bạn chọn sẽ khiến bạn khó có thể kiểm soát dữ liệu trích xuất.

Do đó bạn có thể viết như sau

SELECT ten , tuoi FROM khach_hang

Lúc này bạn sẽ lấy toàn bộ dữ liệu trong 2 cột tên và tuổi của bảng khách hàng. Nếu như ai thêm cột địa chỉ đi chẳng hạn dữ liệu trả về vẫn k bị thay đổi.

2. Lệnh WHERE

WHERE cũng chính là các lệnh cơ bản trong sql server. SELECT để chọn nhưng chọn lọc kỹ hơn sẽ cần WHERE.

SELECT ten, tuoi FROM people WHERE age > 15 ;

Lúc này kết quả sẽ trả về bảng

ten tuoi
Tiến 19
Nhi 17

Ngoài ra bạn cũng có thể kết hợp các biến khá như

SELECT ten, tuoi FROM people WHERE age > 15 AND age < 19 ;

ten tuoi
Nhi 17

Bạn cũng có thể kết hợp các biến khác để trả về kết quả mong muốn. Tìm hiểu rõ hơn ở bài viết chi tiết của tôi ở từng lệnh nhé.

3. Lệnh ORDER

Lệnh này để sắp xếp các kết quả trả về theo cách bạn muốn chẳng hạn tăng dần, giảm dần. Cho đẹp mắt và dễ tinh chỉnh hơn thôi.

SELECT ten, tuoi FROM people ORDER BY tuoi ASC;

ten tuoi
Chi 15
Nhi 17
Tiến 19

Trên tôi sử dụng biến ASC là tăng dần, muốn giảm dần thì sử dụng DESC. Bạn có thể chọn cột theo ý mình.

4. Lệnh JOIN

Lệnh JOIN được sử dụng để kết hợp các dữ liệu liên quan nhau và được giữ trong một hoặc nhiều bảng. Bạn có thể nối hai bảng với nhau, và chỉ định cách dữ liệu được kết nối. Ví dụ:

SELECT tuoi, ten, height FROM people LEFT JOIN heights USING (ten);

Lệnh này nghĩa là bạn sẽ ghép 2 bảng people và height lại và có dữ liệu chung là ten. Tuy nhiên nếu các cột của bạn không đồng nhất tên với nhau, bạn có thể sử dụng biến “ON” thay vì “USING”

SELECT ten, tuoi, height FROM people LEFT JOIN heights ON (tena = tenb);

tuoi ten height
15 Chi 165
19 Tiến 164
17 Nhi 160

Có khá nhiều kiểu nối khác nhau. Tôi cũng đã có một bài chi tiết cho lệnh JOIN này.

5. Lệnh ALIAS

Lệnh này khó hơn đôi chút là sẽ thay đổi tên bảng mà bạn đang thao tác. Nhưng chỉ trong quá trình thao tác thôi. Ví dụ:

SELECT A.tuoi FROM people A;

Lúc này thay vì nhập tên bảng dài loằng ngoằng bạn đơn giản chỉ cần nhập tên bảng ngắn gọn đã gán là A.

Nhưng nếu bạn sử dụng nhiều bảng trong một hàm thì rất dễ bị lỗi nếu dữ liệu của các bảng giống nhau. Ví dụ:

SELECT nhan_vien.tuoi, nhan_vien.ten, khach_hang.tuoi, khach_hang.ten FROM nhan_vien, khach_hang;

Sử dụng ALIAS sẽ là

SELECT A.tuoi, A.ten, B.tuoi, B.ten FROM nhan_vien A, khach_hang B;

Nếu muốn đổi tên cột với lệnh ALIAS bạn sử dụng lệnh AS

SELECT tuoi AS person_tuoi FROM people;

Lúc này cột tuoi sẽ hiển thị là person_tuoi

6. Lệnh UNION

Với lệnh UNION bạn sẽ nối các hàng với nhau một cách đơn giản. Khác với JOIN, bạn sẽ có thể nối các hàng với dù chúng không liên quan và chỉ cần giống số lượng cột, tên cột.

SELECT tuoi, ten FROM khach_hang

UNION

SELECT tuoi, ten FROM nhan_vien;

Ten tuoi
Chi 28
Tiến 30
Nhi 32
Chi 21
Tiến 21
Nhi 25

Hoặc sử dụng UNION ALL để trả về tất cả dữ liệu dù chúng có bị trùng nhau đi chăng nữa. Một vài trường hợp bạn có thể sử dụng UNION tính Subtotal.

7. Lệnh INSERT

Các lệnh trên đều để trích xuất dữ liệu thì INSERT giúp bạn chèn các dữ liệu vào CSDL

INSERT INTO people(ten, tuoi) VALUES(‘Ngoc Anh’, 20);

Lúc này trong bảng people sẽ được chèn thêm hàng có dữ liệu là Tên = Ngọc Anh có độ tuổi là 20 tuổi.

8. Lệnh UPDATE

Khi chèn dữ liệu vào CSDL bạn sẽ cần thay đổi các hàng cụ thể, lúc này bạn sẽ cần dùng lệnh UPDATE

UPDATE people SET ten = ‘Ngoc Anh’, age = 20;

9. Lệnh UPSERT

Với UPSERT bạn có thể giải quyết được vấn đề trùng lập dữ liệu. Nếu bạn muốn xuất dữ liệu tên là Nhi nhưng chỉ muốn đúng 1 cái tên Nhi xuất hiện trong bảng. Ví dụ

INSERT INTO people(ten, tuoi)

VALUES(‘Nhi’, 17)

ON DUPLICATE KEY UPDATE tuoi = 17;

10. Lệnh DELETE

Sử dụng lệnh khi muốn xóa bảng ghi hoặc dữ liệu được trích xuất. Nhưng bạn nên cẩn thận khi sử dụng lệnh này.

DELETE FROM people;

Nếu muốn xóa dữ liệu nhất định thì nên sử dụng thêm lệnh WHERE

DELETE FROM people WHERE name = ‘Nhi’;

11. Lệnh CREATE TABLE

Tạo bảng mới trong CSDL thì sử dụng CREATE TABLE. Ví dụ

CREATE TABLE people (

ten TEXT,

tuoi, INTEGER,

PRIMARY KEY(ten)

);

12. Lệnh ALTER TABLE

Nếu bạn muốn sửa đổi cấu trúc của bảng ghi nào đó bạn có thể sử dụng lệnh ALTER TABLE. Tuy nhiên cũng sẽ có hạn chế nếu như bảng đó đang tồn tại thì sẽ dễ gây ra xung đột. Lúc này bạn cần chỉnh sửa dữ liệu trước và sửa bảng sau

ALTER TABLE people ADD height integer;

Lệnh này nghĩa là bạn sẽ thêm cột height vào bảng people với kiểu dữ liệu là số nguyên.

13. Lệnh DROP TABLE

Câu lệnh cuối tôi muốn giới thiệu trong các câu lệnh truy vấn trong sql server. Lệnh gần như DELETE nhưng thay vì xóa bản ghi lệnh này xóa toàn bộ dữ liệu trong bảng.

DROP TABLE people;

Bạn nên cân nhắc trước khi sử dụng lệnh này và chỉ sử dụng khi viết tay tránh ảnh hưởng đến toàn CSDL.

Như vậy là tôi đã giới thiệu xong 13 lệnh thông dụng trong SQL. Nếu có thắc mắc gì hãy liên hệ hoặc đọc các bài viết của tôi trên BLOG SQL này nhé.

 

Categories
Hệ quản trị SQL

Transaction trong SQL Server

Khi học về SQL chắc chắn các bạn sẽ được tìm hiểu về transaction SQL. Đây là một nhóm câu lệnh trong SQL rất thường xuyên được sử dụng. Vậy cụ thể, cách dùng transaction trong SQL như thế nào? Hãy cùng theo dõi ngay sau đây!

1. Các thuộc tính của Transaction

– Tính bảo toàn (Atomicity): “All or nothing”, đây là thuộc tính đảm bảo sẽ thực thi thành công toàn bộ câu lệnh trong nhóm lệnh đó. Nếu không, tại thời điểm thất bại transaction sẽ bị hủy bỏ, đồng thời khôi phục lại những thao tác trước đó về trạng thái cũ. Nghĩa là sẽ không xuất hiện bất kỳ thay đổi dữ liệu nào

– Tính nhất quán (Consistency): Đảm bảo nếu SQL transaction được thực thi thành công thì các dữ liệu sẽ thay đổi chính xác trạng thái

– Tính độc lập (Isolation): Trong SQL server transaction sẽ được hoạt động một cách độc lập với nhau

– Tính bền vững (Durability): Đảm bảo rằng kết quả của 1 transaction được xác định và không xuất hiện tình trạng dữ liệu của transaction chuyển lại trạng thái trước đó sau khi thực thi thành công

2. Các lệnh xử lý trong Transaction

Trong transaction SQL server có các lệnh xử lý:

  • COMMIT trong SQL:
  • ROLLBACK trong SQL
  • SAVEPOINT trong SQL
  • RELEASE SAVEPOINT trong SQL

2.1 Lệnh COMMIT trong SQL

COMMIT có tác dụng lưu lại những thay đổi được gọi bởi 1 transaction với CSDL tính từ lệnh COMMIT hoặc ROLLBACK cuối cùng.

Cú pháp:

COMMIT;

Ví dụ: Nếu chúng ta có 1 bảng CUSTOMERS như sau:

1

2

3

4

5

6

7

8

9

10

11

+—-+———-+—–+———–+———-+

| ID | NAME | AGE | ADDRESS | SALARY |

+—-+———-+—–+———–+———-+

| 1 | Ha Anh | 32 | Da Nang | 2000.00 |

| 2 | Van Ha | 25 | Ha Noi | 1500.00 |

| 3 | Vu Bang | 23 | Vinh | 2000.00 |

| 4 | Thu Minh | 25 | Ha Noi | 6500.00 |

| 5 | Hai An | 27 | Ha Noi | 8500.00 |

| 6 | Hoang | 22 | Ha Noi | 4500.00 |

| 7 | Binh | 24 | Ha Noi | 10000.00 |

+—-+———-+—–+———–+———-+

Chúng ta sẽ xóa các bản ghi từ bảng có age giá trị 25 rồi thực hiện lệnh COMMIT:

1

2

3

DELETE FROM CUSTOMERS

WHERE AGE = 25;

COMMIT;

Kết quả sau khi thực hiện câu lệnh SELECT là:

1

2

3

4

5

6

7

8

9

+—-+———-+—–+———–+———-+

| ID | NAME | AGE | ADDRESS | SALARY |

+—-+———-+—–+———–+———-+

| 1 | Ha Anh | 32 | Da Nang | 2000.00 |

| 3 | Vu Bang | 23 | Vinh | 2000.00 |

| 5 | Hai An | 27 | Ha Noi | 8500.00 |

| 6 | Hoang | 22 | Ha Noi | 4500.00 |

| 7 | Binh | 24 | Ha Noi | 10000.00 |

+—-+———-+—–+———–+———-+

2.2 Lệnh ROLLBACK trong SQL

Lệnh ROLLBACK transaction SQL có tác dụng hoàn tác các transaction chưa được lưu vào CSDL kể từ khi lệnh COMMIT hoặc ROLLBACK cuối cùng được phát hành.

Cú pháp:

ROLLBACK;

Ví dụ: Trong bảng CUSTOMERS có:

1

2

3

4

5

6

7

8

9

10

11

+—-+———-+—–+———–+———-+

| ID | NAME | AGE | ADDRESS | SALARY |

+—-+———-+—–+———–+———-+

| 1 | Ha Anh | 32 | Da Nang | 2000.00 |

| 2 | Van Ha | 25 | Ha Noi | 1500.00 |

| 3 | Vu Bang | 23 | Vinh | 2000.00 |

| 4 | Thu Minh | 25 | Ha Noi | 6500.00 |

| 5 | Hai An | 27 | Ha Noi | 8500.00 |

| 6 | Hoang | 22 | Ha Noi | 4500.00 |

| 7 | Binh | 24 | Ha Noi | 10000.00 |

+—-+———-+—–+———–+———-+

Chúng ta thực hiện xóa các bản ghi có age giá trị 25 và Xóa các thay đổi trong CSDL:

1

2

3

DELETE FROM CUSTOMERS

WHERE AGE = 25;

ROLLBACK;

Thực hiện xóa không gây ra ảnh hưởng tới bảng. Khi thực hiện tiếp câu lệnh SELECT sẽ cho kết quả như sau:

1

2

3

4

5

6

7

8

9

10

11

+—-+———-+—–+———–+———-+

| ID | NAME | AGE | ADDRESS | SALARY |

+—-+———-+—–+———–+———-+

| 1 | Ha Anh | 32 | Da Nang | 2000.00 |

| 2 | Van Ha | 25 | Ha Noi | 1500.00 |

| 3 | Vu Bang | 23 | Vinh | 2000.00 |

| 4 | Thu Minh | 25 | Ha Noi | 6500.00 |

| 5 | Hai An | 27 | Ha Noi | 8500.00 |

| 6 | Hoang | 22 | Ha Noi | 4500.00 |

| 7 | Binh | 24 | Ha Noi | 10000.00 |

2.3 Lệnh SAVEPOINT trong SQL

Trong transaction, SAVEPOINT là 1 điểm cho phép lùi transaction quay lại điểm nhất định mà không cần lùi transaction đó về lại trạng thái đầu trước khi diễn ra sự thay đổi. Lệnh SAVEPOINT chỉ được sử dụng để tạo ra SAVEPOINT trong mọi câu lệnh transaction.

Cú pháp SAVEPOINT:

SAVEPOINT SAVEPOINT_NAME;

Cú pháp cuộn lại một SAVEPOINT:

ROLLBACK TO SAVEPOINT_NAME;

Ví dụ: Tại bảng CUSTOMERS các bạn cần xóa bỏ 3 bản ghi khác nhau và trước mỗi lần xóa thực hiện tạo một SAVEPOINT, cho phép các bạn có thể XÓA trở lại SAVEPOINT bất cứ lúc nào để trả lại dwx liệu ban đầu.

  • Bảng CUSTOMERS:
1

2

3

4

5

6

7

8

9

10

11

+—-+———-+—–+———–+———-+

| ID | NAME | AGE | ADDRESS | SALARY |

+—-+———-+—–+———–+———-+

| 1 | Ha Anh | 32 | Da Nang | 2000.00 |

| 2 | Van Ha | 25 | Ha Noi | 1500.00 |

| 3 | Vu Bang | 23 | Vinh | 2000.00 |

| 4 | Thu Minh | 25 | Ha Noi | 6500.00 |

| 5 | Hai An | 27 | Ha Noi | 8500.00 |

| 6 | Hoang | 22 | Ha Noi | 4500.00 |

| 7 | Binh | 24 | Ha Noi | 10000.00 |

+—-+———-+—–+———–+———-+

  • Các hoạt động:
1

2

3

4

5

6

7

8

9

10

11

12

SQL> SAVEPOINT SP1;

Savepoint created.

SQL> DELETE FROM CUSTOMERS WHERE ID=1;

1 row deleted.

SQL> SAVEPOINT SP2;

Savepoint created.

SQL> DELETE FROM CUSTOMERS WHERE ID=2;

1 row deleted.

SQL> SAVEPOINT SP3;

Savepoint created.

SQL> DELETE FROM CUSTOMERS WHERE ID=3;

1 row deleted.

Như vậy bạn đã thực hiện 3 lần xóa. Ví dụ, giờ bạn muốn khôi phục lại SAVEPOINT được định nghĩa là SP2. Do SP2 đã được tạo ra sau khi thực hiện lần xóa đầu tiên, 2 lần xóa cuối được khôi phục lại như sau:

1

2

ROLLBACK TO SP2;

Rollback complete.

Lưu ý: Kể từ khi khôi phục SP2 chỉ có lần xóa đầu tiên xảy ra.

1

2

3

4

5

6

7

8

9

10

11

12

SELECT * FROM CUSTOMERS;

+—-+———-+—–+———–+———-+

| ID | NAME | AGE | ADDRESS | SALARY |

+—-+———-+—–+———–+———-+

| 2 | Van Ha | 25 | Ha Noi | 1500.00 |

| 3 | Vu Bang | 23 | Vinh | 2000.00 |

| 4 | Thu Minh | 25 | Ha Noi | 6500.00 |

| 5 | Hai An | 27 | Ha Noi | 8500.00 |

| 6 | Hoang | 22 | Ha Noi | 4500.00 |

| 7 | Binh | 24 | Ha Noi | 10000.00 |

+—-+———-+—–+———–+———-+

6 rows selected.

2.4 Lệnh RELEASE SAVEPOINT trong SQL

Có tác dụng loại bỏ 1 SAVEPOINT đã tạo ra.

Cú pháp:

1 RELEASE SAVEPOINT SAVEPOINT_NAME;

Các bạn sẽ không sử dụng được lệnh ROLLBACK nữa sau khi SAVEPOINT đã bị xóa.

2.5 Lệnh SET TRANSACTION trong SQL

Có tác dụng bắt đầu một transaction trong CSDL, dùng cho mục đích chỉ định đặc tính của transaction SQL sau.

Cú pháp:

SET TRANSACTION [ READ WRITE | READ ONLY ];

Trên đây là những thông tin cần biết về transaction SQL. Các bạn cần phải hiểu rõ các câu lệnh của chúng để có thể sử dụng đúng cách nhất.

 

Categories
Hệ quản trị SQL

CREATE TABLE – Tạo bảng trong SQL Server

Khi học cấu trúc dữ liệu SQL Server có một kiến thức quan trọng mà các bạn cần phải nắm rõ bởi trong học tập lẫn làm việc sẽ cần sử dụng rất nhiều. Dưới đây là hướng dẫn chi tiết cách tạo bảng SQL cho các bạn đang quan tâm!

1. Tạo bảng trong SQL Server 2014 – các quy tắc đặt tên bạn nên biết

– Đặt tên bảng (table): Một trong những điều cần biết đầu tiên khi tạo bảng trong SQL đó là đặt tên bảng. Nên đặt tên bảng phản ánh đúng thực thể và giữa các từ dùng ký tự “_” để phân tách. Bên cạnh đó, không nên đặt tên bảng chứa các từ “table” hay “file”. Trong database, tên bảng là duy nhất

– Đặt tên cột (column): Đặt tên cột cũng rất quan trọng khi tạo bảng cơ sở dữ liệu trong SQL. Tên cột đặt dựa vào thuộc tính và cũng sử dụng “_” để phân tác cách từ. Trong bảng, tên cột là duy nhất

2. Tạo table trong SQL Server – Kiểu dữ liệu

2.1 Kiểu chuỗi

Khi create table trong SQL các bạn cần hiểu rõ ý nghĩa của các kiểu chuỗi sau:

Kiểu dữ liệu Miêu tả
char(n) Dùng để cố định độ rộng của chuỗi và độ rộng tối đa là 8000 ký tự
varchar(n) Không cố định độ rộng của chuỗi và độ rộng tối đa là 8000 ký tự
varchar(max) Không cố định độ rộng của chuỗi và độ rộng tối đa là 1 073 741 824 ký tự
text Không cố định độ rộng của chuỗi và độ rộng tối đa là 22GB dữ liệu văn bản
nchar(n) Tương tự như char(n) nhưng hỗ trợ thêm Unicode
nvarchar(n) Tương tự như varchar nhưng hỗ trợ thêm Unicode
nvarchar(max) Tương tự như varchar(max) nhưng hỗ trợ thêm Unicode
ntext Tương tự như text nhưng hỗ trợ thêm Unicode

2.2 Kiểu số

Tạo bảng trong SQL server cũng cần hiểu rõ các kiểu dữ liệu số, cụ thể:

Kiểu dữ liệu Miêu tả
Số nguyên
tinyint Chứ các số từ 0 – 255
smallint Chứa các số từ -32,768 đến 32,767
int Chứa các số từ -2,147,483,648 đến 2,147,483,647
Số thực
float Chứa các số từ -1.79E + 308 đến 1.79E + 308

2.3 Kiểu date/ time

Kiểu dữ liệu Miêu tả
date Ngày, tháng, năm
datetime Ngày, tháng, năm và giờ

3. Ví dụ về tạo bảng trong SQL Server

Để giúp các bạn hiểu rõ hơn về cách tạo bảng trong SQL chúng tôi xin đưa ra một ví dụ cụ thể. Giả sử, nếu bạn muốn tạo 2 bảng thuộc database QuanLyNhanSu:

  • Bảng PHONGBAN có: Tên phòng ban (khóa chính), số điện thoại
  • Bảng NHANVIEN có: Mã nhân viên (khóa chính), tên nhân viên, giới tính, tên phòng ban (khóa ngoại)

Thì câu lệnh tạo bảng trong SQL như sau:

  • Bảng PHONGBAN:

Create Table PHONGBAN (

TenPhong nvarchar(30)

,SDT varchar(15)

,primary key(TenPhong)

)

  • Bảng NHANVIEN:

Create Table NHANVIEN (

MaNv char(15)

,TenNv nvarchar(50)

,GioiTinh nvarchar(4)

,TenPhong nvarchar(30)

,primary key(MaNv)

,foreign key(TenPhong) references PHONGBAN(TenPhong)

)

tạo table trong sql server 2014

Hình ảnh thực hiện tạo bảng trên Microsoft SQL Server Management Studio

Kết quả khi tạo bảng thành công

Như vậy, với những thông tin vừa chia sẻ trên chắc hẳn các bạn đã biết cách tạo bảng SQL như thế nào, viết câu lệnh ra sao. Khi tạo bảng cần nắm vững và hiểu rõ các kiểu dữ liệu để tránh sử dụng sai.

 

Categories
Hệ quản trị SQL

Bảng tạm TEMPORARY TABLES trong SQL Server

 

Một trong các kiến thức quan trọng của môn quản trị cơ sở dữ liệu SQL Server mà các bạn cần phải học đó là thao tác với bảng tạm TEMPORARY nữa. Nếu các bạn chưa hiểu rõ về bảng tạm trong SQL là gì, cách sử dụng như thế nào thì hãy theo dõi ngay sau đây!

1. Temporary Tables trong SQL là gì?

Bảng tạm hay trong tiếng Anh còn được viết là Temporary Table. Đây là một cấu trúc dạng bảng đặc biệt. Chúng được lưu trữ tạm trên SQL Server. Người ta dùng bảng tạm chủ yếu để lưu lại kết quả của các câu truy vấn SELECT khi cần phải sử dụng nó nhiều lần. Có 2 loại bảng tạm là Local Temporary Table và Global Temporary Table.

Trên thực tế, đây cũng là một loại bảng và sở hữu đầy đủ những tính chất mà một bảng cần có. Các bạn có thể thực hiện mọi thác tác như SELECT hay INSERT trên bảng tạm này như bình thường.

Dưới đây là cách tạo bảng tam trong SQL và thêm dữ liệu (với bảng tạm Local Temporary Table):

1.1. Sử dụng INSERT INTO

Đây là hàm được sử dụng để tạo bảng tạm trong SQL. Cách dùng như sau:

SELECT

select_list

INTO

temporary_table

FROM

table_name

….

Khi đặt tên cho bảng tạm phải bắt đầu bằng dấu thăng (#), ví dụ:

SELECT

product_name,

list_price

INTO #trek_products — temporary table

FROM

production.products

WHERE

brand_id = 9;

Theo ví dụ này chúng ta sẽ tạo được 1 bảng tạm có tên #trek_products. Trong bảng gồm 2 cột là product_name và list_name. Kết quả trả về từ câu truy vấn chính là dữ liệu của bảng.

Để xem bảng các bạn mở công cụ SSMS và chọn: System Databases > tempdb > Temporary Tables:

SQL Server Temporary Tables Example png Ở tên bảng tạm có hậu tố ở phía sau nhằm mục đích tránh hiện tượng bảng bị trùng tên khi cùng lưu trữ trong một database tempdb.

1.2. Sử dụng CREATE TABLE

Khi tạo bảng tạm trong SQL server bằng câu lệnh CREATE TABLE thì bảng được tạo sẽ là bảng rỗng. Muốn thêm dữ liệu phải sử dụng câu lệnh INSERT. Cụ thể:

CREATE TABLE #haro_products (

product_name VARCHAR(MAX),

list_price DEC(10,2)

);

Như vậy chúng ta sẽ có bảng tạm tên #haro_products. Trong bảng có 2 cột là product_name và list_price. Muốn thêm dữ liệu cần dùng hàm:

INSERT INTO #haro_products

SELECT

product_name,

list_price

FROM

production.products

WHERE

brand_id = 2;

Dù sau này bảng gốc thay đổi dữ liệu cũng không làm ảnh hưởng tới dữ liệu trong bảng tạm.

2. Global Temporary Tables

Local Temporary Table chỉ tồn tại trong một phiên làm việc. Để kiểm tra điều này có đúng không các bạn có thể mở connection khác và dùng câu lệnh:

SELECT

*

FROM

#haro_products;

Kết quả trả về lỗi: Invalid object name ‘#haro_products’.

Trường hợp muốn dùng bảng tạm cho nhiều phiên làm việc khác nhau thì cần chuyển thành Global Temporary Table bằng cách thêm 2 dấu (#) tại tên table. Cụ thể:

CREATE TABLE ##heller_products (

product_name VARCHAR(MAX),

list_price DEC(10,2)

);

INSERT INTO ##heller_products

SELECT

product_name,

list_price

FROM

production.products

WHERE

brand_id = 3;

3. Xóa Temporary Tables

Khi một phiên làm việc kết thúc thì bảng tạm sẽ mặc định được xóa bỏ khỏi hệ thống. Tuy nhiên, trường hợp bạn muốn từ xóa thì có thể dùng lệnh DROP TABLE. Cụ thể:

DROP TABLE ##table_name;

Trên đây là các thông tin về bảng tạm trong SQL Server. Hy vọng những thông tin này sẽ giúp các biết cách thao tác với bảng tạm và sử dụng bảng tạm hiệu quả hơn.