Categories
Câu lệnh SQL

Cú pháp mệnh đề Union trong SQL

Ngoài những nội dung sql cơ bản thì ta còn phải biết thêm các sql nâng cao như join, alias, alter table, view, union, union all,… Trong đó mệnh đề union trong cấu trúc sql là một câu lệnh quan trọng và hữu ích, giúp người dùng có thể kết hợp các kiểu dữ liệu có cấu trúc giống nhau từ nhiều bảng thành một. Vậy, mệnh đề union trong sql cụ thể là gì? Hãy cùng nhau tìm hiểu ngay bây giờ.

Khái niệm về mệnh đề Union trong sql là gì?

Mệnh đề Union trong sql là một mệnh đề hay còn gọi là toán tử sql. Theo đó, khi sử dụng lệnh SELECT union sql, cho phép người dùng kết hợp kết quả của hai hoặc nhiều lệnh SELECT mà không trả về bất cứ bản ghi trùng lặp nào (do chức năng của lệnh này là kết hợp lai các kiểu dữ liệu có cấu trúc giống nhau từ nhiều bảng thành một nhưng loại bỏ các cơ sở dữ liệu trùng nhau).

Union sql, câu lệnh phổ biến thường gặp đối với cơ sở dữ liệu.

Đối với lệnh Union, ta cần phân biệt với lệnh Union All hai lệnh này chỉ cần gõ sai lệnh thì chức năng của nó đã khác nhau. Lệnh Union All các bạn sẽ nghiên cứu ở những mục bên dưới.

Điều kiện để sử dụng được lệnh union in sql là mỗi lệnh SELECT phải:

+ Có số cột giống nhau.

+ Có cùng số biểu thức của các số cột.

+ Cùng kiểu dữ liệu.

+ Số cột tương ứng phải theo đúng thứ tự (không phải phải cùng chiều dài).

Các cú pháp lệnh toán tử union trong cấu trúc sql

Cú pháp lệnh sql union cơ bản được thực hiện như sau:

SELECT cot1 [, cot2 ]

FROM bang1 [, bang2 ]

[WHERE dieu_kien]

UNION

SELECT cot1 [, cot2 ]

FROM bang1 [, bang2 ]

[WHERE dieu_kien]

Lưu ý: dieu_kien ở đây có thể là bất cứ biểu thức vào tùy vào lựa chọn của cá nhân bạn.

Một số ví dụ về union in sql

Sql là tên viết tắt tiếng Anh của Structured Query Language, là ngôn ngữ thường dùng cho doanh nghiệp, bệnh viện hay khách sạn,… để quản lý nhân viên hay khách hàng. Sql giúp quản lý dữ liệu hiệu quả và thực hiện các thao tác tìm kiếm, chỉnh sửa, bổ sung nhanh hơn. Sau đây là một ví dụ điển hình về union sql vào việc quản lý nhân sự của một doanh nghiệp:

Ta cần sử dụng lệnh union trong cấu trúc sql để kết hợp hai bảng dữ liệu nhân viên và tiền thưởng để tính tiền thưởng cho nhân viên, ta sẽ làm như sau:

– Ta có hai bảng ban đầu là bảng 1 là NHANVIEN và bảng 2 là TIENTHUONG:

Bảng 1: NHANVIEN

ID TEN TUOI DIACHI LUONG
1 Trinh 31 Binhdinh 2000.00
2 Diep 27 Hanoi 1500.00
3 Lai 25 Hanam 2000.00
4 Thuy 25 Hue 6500.00
5 Nam 28 Danang 8500.00
6 Lan 29 HCM 4500.00
7 Dao 21 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

– Thực hiện thao tác kết hợp hai bảng này ở lệnh SELECT như sau:

SQL> SELECT ID, TEN, SOTIEN, NGAY

FROM NHANVIEN

LEFT JOIN TIENTHUONG

ON NHANVIEN.ID = TIENTHUONG.NHANVIEN_ID

UNION

SELECT ID, TEN, SOTIEN, NGAY

FROM NHANVIEN

RIGHT JOIN TIENTHUONG

ON NHANVIEN.ID = TIENTHUONG.NHANVIEN_ID;

– Kết quả được trả về như sau:

ID TEN SOTIEN NGAY
1 Trinh NULL NULL
2 Diep 1560 2019 – 02 – 20 00:00:00
3 Lai 3000 2019 – 01- 08 00:00:00
3 Lai 1500 2019 – 01- 08 00:00:00
4 Thuy 2060 2018 – 12 – 20 00:00:00
5 Nam NULL NULL
6 Lan NULL NULL
7 Dao NULL NULL

Từ kết quả hiển thị như trên, ta có thể thấy không có sự trùng lặp dữ liệu nào ở kết quả trả về.

Khái niệm về mệnh đề Union All trong SQL

Toán tử Union All SQL cũng dùng để kết hợp các kiểu dữ liệu có cấu trúc giống nhau từ hai hay nhiều bảng thành một bảng nhưng không loại bỏ các dữ liệu trùng nhau.

Cú pháp mệnh đề toán tử Union All

Cú pháp câu lệnh của toán tử Union All cũng giống với câu lệnh UNION nhưng thay bằng gõ UNION ta sẽ gõ bằng UNION ALL và tất nhiên hai lệnh này cũng sẽ có chức năng khác nhau. Cú pháp cơ bản như sau:

SELECT cot1 [, cot2 ]

FROM bang1 [, bang2 ]

[WHERE dieu_kien]

UNION ALL

SELECT cot1 [, cot2 ]

FROM bang1 [, bang2 ]

[WHERE dieu_kien]

Ví dụ về mệnh đề toán tử Union All

Cũng lấy lại ví dụ về hai bảng nhân viên và tiền thưởng như trên nhưng khi sử dụng 2 lệnh khác nhau ta sẽ thấy ra kết quả khác nhau giữa toán tử UNION và toán tử UNION ALL.

– Kết hợp hai bảng trên thuộc lệnh SELECT được thực hiện như sau:

SQL> SELECT ID, TEN, SOTIEN, NGAY

FROM NHANVIEN

LEFT JOIN TIENTHUONG

ON NHANVIEN.ID = TIENTHUONG.NHANVIEN_ID

UNION ALL

SELECT ID, TEN, SOTIEN, NGAY

FROM NHANVIEN

RIGHT JOIN TIENTHUONG

ON NHANVIEN.ID = TIENTHUONG.NHANVIEN_ID;

– Kết quả được trả về khi sử dụng lệnh thuộc toán tử UNION ALL sẽ khác với khi sử dụng lệnh UNION như sau:

ID TEN SOTIEN NGAY
1 Trinh NULL NULL
2 Diep 1560 2019 – 02 – 20 00:00:00
3 Lai 3000 019 – 01- 08 00:00:00
3 Lai 1500 019 – 01- 08 00:00:00
4 Thuy 2060 | 2018 – 12 – 20 00:00:00
5 Nam NULL NULL
6 Lan NULL NULL
7 Dao NULL NULL
3 Lai 3000 019 – 01- 08 00:00:00
3 Lai 1500 019 – 01- 08 00:00:00
2 Diep 1560 2019 – 01- 08 00:00:00
4 Thuy 2060 2018 – 12 – 20 00:00:0

Ta sẽ thấy có sự trùng lặp nhau, đã xuất hiện lại dữ liệu của nhân viên Lai, Diep, Thuy ở cuối hàng, nó không loại bỏ sự trùng lặp nhau.

Ngoài ra, chúng ta cũng có thể sử dụng hai mệnh đề khác tương tự như mệnh đề UNION đó là INTERSECT  SQL và EXCEPT SQL. Tùy vào sở thích và kỹ năng mà từng người có thể lựa chọn để hoàn thành tốt công việc của mình.

Kết luận

Như vậy, bài viết trên đã giúp bạn biết cách truy vấn cú pháp câu lệnh union trong cấu trúc sql cũng như lệnh union all. Hy vọng những hướng dẫn này giúp bạn nâng cao kiến thức và kỹ năng vào việc sử dụng sql để quản lý doanh nghiệp, khách sạn, nhà hàng, bệnh viện,… được nhanh và hiệu quả hơn.

Để thành thạo hơn cách sử dụng ngôn ngữ sql, cũng như cách thức sử dụng toán tử matlab. Bạn nên tham gia một khóa học chuyên sâu, theo đó các giảng viên, người hướng dẫn sẽ hướng dẫn bạn tận tình từ kỹ năng đơn giản đến nâng cao.

 

 

 

Categories
Câu lệnh SQL

Lệnh update trong SQL

Nếu bạn là một người sành về công nghệ thông tin, chắc hẳn đã nghe qua ngôn ngữ máy tính SQL cho phép người dùng xử lý dữ liệu một cách nhanh chóng hiệu quả. Ngoài ra đối với những ai không sành về máy tính cũng có thể sử dụng được ngôn ngữ SQL. Nhờ tính đơn giản và tích hợp được trên nhiều hệ thống máy tính nên SQL sử dụng khá phổ biến và rộng rãi. Trong SQL có một lệnh Update dữ liệu giúp người dùng có thể bổ sung hoặc sửa đổi dữ liệu cũ, cho ra kết quả mới nhất, chính xác nhất trong bộ nguồn CSDL. Lệnh Update thường xuyên được sử dụng cho đến khi tổng kết và cho ra được kết quả cuối cùng, cực kỳ hữu ích trong công tác xử lý dữ liệu của người dùng tại thời điểm hiện tại.

Ứng dụng của lệnh Update trong SQL.

Lệnh Update có cấu trúc:

UPDATE table_name SET column_name = value [, column_name = value…] [WHERE condition]

Trong đó: table_name là tên bảng, column_name là tên cột cũng như giá trị cần thay đổi và condition là kết quả người người muốn thay đổi, cập nhật.

Lệnh update trong SQL

Lệnh Update cho phép thay thế, sửa đổi hoặc xoá bỏ dữ liệu trong CSDL mà người dùng cần chỉnh sửa cho hợp lệ. Cập nhật dữ liệu mới là công việc thường xuyên đối với một hệ thống CSDL, ví dụ như cập nhật thông tin khách hàng hàng tuần, lương nhân viên hàng tháng,…và đưa ra kết quả cuối cùng chuẩn xác nhất. lệnh Update cần thoã mãn một số rang buộc nhất định như từ khoá chính, chỉ số duy nhất, rang buộc CHECK và ràng buộc không rỗng.

Lệnh Update thực thi được nhiều vấn đề liên quan đến cập nhật dữ liệu, như thay đổi giá trị cột, tăng giá trị cột, them tiền tố “text” vào giá trị cột,…nhưng không hỗ trợ cập nhật dữ liệu trong bảng kết nội (Joined table). Đối với lệnh Update, bạn có thể cập nhật một hoặc nhiều trường, có thể xác định bất kỳ điều kiện nào bởi mệnh đề WHERE và cập nhật giá trị trong một bảng đơn tại một thời điểm. Đây cũng là lệnh cơ bản khi bạn sử dụng ngôn ngữ SQL – một ngôn ngữ phổ biến mà người dung sử dụng để thao tác với dữ liệu mà bất kỳ một lập trình viên nào cũng phải thành thạo, giúp công tác xử lý được chính xác hơn.

Tiện ích cho những người không sành IT.

Bạn biết đấy, không phải ai cũng có thể sử dụng các thiết bị công nghệ một cách thành thạo, và khi dữ liệu được tạo thành, chưa hẳn đã chính xác hoàn toàn bởi đôi lúc bạn quên một số chi tiết nhỏ… Với cấu trúc câu lệnh có sẵn, dễ nhớ, lệnh Update và union trong sql hoàn toàn có thể giúp người dùng giải quyết cả hai vấn đề trên. Thậm chí khi bạn không sành IT vẫn có thể tạo lập và xử lý CSDL được. Lệnh cập nhật trong ngôn ngữ máy tính lien quan đến dữ liệu khá quan trọng, bởi nó ảnh hưởng đến kết quả sau cùng của hệ thống dữ liệu này. Nếu bạn sử dụng chúng rành, tin chắc chúng sẽ phục vụ tối đa những yêu cầu của bạn và giúp bạn thuận lợi hơn trong công tác học tập và làm việc.

Các kiểu dữ liệu khác nhau sẽ dẫn đến các cách cập nhật khác nhau, như dữ liệu kiểu số hay văn bản đều ảnh hưởng đến cách cập nhật.

Nguyên tắc khi dung lệnh Update trong thao tác CSDL.

Cơ sở dữ liệu được lưu trữ dưới nhiều bảng khác nhau, tuỳ thuộc vào độ phức tạp của CSDL đó. Khi xem hoặc cập nhật dữ liệu trong một biểu mẫu, báo cáo, hoặc kết quả trả về đều ở dạng bảng, khi cập nhật cần xem xét trên từng bảng và kiểm tra một cách kỹ lưỡng.

Mỗi bảng trong CSDL sẽ lưu trữ những vấn đề khác nhau, về thể loại hay mục đích, và vấn đề đó là duy nhất. Ví dụ như bảng lưu trữ tiền lương thưởng nhân viên công ty không thể nào chứa thông tin bán hàng, nếu trái với tính năng của chúng, công việc tìm kiếm và update sẽ trở nên khó khăn hơn.

Mỗi trường trong bảng được định dạng theo một kiểu dữ liệu nhất định, có thể là văn bản hay số học, nếu thao tác không đúng, hệ thống sẽ báo lỗi.

Xin lưu ý rằng, kiểu dữ liệu ảnh hưởng đến cập nhật hay thao tác, để việc Update được thuận tiện, dễ dàng hơn, bạn cần định dạnh chính xác cho CSDL của mình. Lệnh Update là một trong những lệnh cơ bản trong sử dụng ngôn ngữ SQL, và được sử dụng thường xuyên trong mọi ngành nghề của doanh nghiệp. Dù là người sành công nghệ hay không thì cũng rất cần cho quá trình học tập và làm việc của mình. Như đã nói ở trên, SQL được sử dụng khá phổ biến với câu lệnh đơn giản, dễ thực hiện, không thuộc câu lệnh vẫn có thể thực hành thao tác nhanh gọn được. Việc tìm hiểu về ngôn ngữ máy giúp bạn hiểu rõ về máy hơn và chủ động hơn trong các công tác của mình.

Update dữ liệu được ứng dụng thường xuyên bởi thao tác trên dữ liệu luôn cần sự chuẩn xác, nếu CSDL thuộc mức khổng lồ thì chắc chắn việc sai sót là khó tránh khỏi. Tuy nhiên khi sử dụng cần tuân thủ một số nguyên tắc nhất định để đảm bảo việc thay đổi dữ liệu thuận tiện hơn, tránh những bất cập về dữ liệu sai và kết quả không chính xác.

Categories
Câu lệnh SQL

Lệnh Insert trong SQL

Khái niệm và vai trò của lệnh Insert trong ngôn ngữ truy vấn mang tính cấu trúc SQL:

Thao tác chèn Insert into trong SQL khá quen thuộc với đại đa số người dùng sử dụng ngôn ngữ SQL. Insert khá đơn giản, dễ sử dụng trong hệ thống CSDL.
Trong bảng hệ thống dữ liệu máy tính, để xử lý chúng người dùng cần trang bị cho mình các kiến thức về IT để xử lý CSDL nhanh gọn và hiệu quả nhất. Tuy nhiên đối với ngôn ngữ SQL, người dùng không cần tìm hiểu những cấu trúc quá phức tạp mà vẫn có thể xử lý hết đống tài liệu còn dang dở vào cuối tuần một cách nhanh và hiệu quả nhất. SQL với nhiều câu lệnh như Inner Join, Update, Union, Insert into,..sẽ hỗ trợ đắc lực cho khách hàng hoàn thành công việc của mình. Lệnh Insert into trong SQL với vai trò chèn dòng khá phổ biến giúp người dùng bổ sung CSDL còn thiếu trong bảng với câu lệnh đơn giản, dễ thực hiện, hạn chế khách hàng tạo bảng dữ liệu nhưng sau đó muốn bổ sung thêm.

Cú pháp Insert cột dòng, bổ sung dữ liệu.

Với cấu trúc khá đơn giản, dễ nhớ, lệnh Insert into với cấu trúc:
INSERT INTO TABLE_TEN (cot1, cot2, cot3,…cotN)] VALUES (giatri1, giatri2, giatri3,…giatriN);


Cho phép thêm dữ liệu vào trong bảng hệ thống CSDL database quan hệ, giúp người dùng bổ sung những thông tin còn thiếu của dữ liệu nếu trong quá trình tạo lập vô ý quên hay cập nhật lại dữ liệu, đảm bảo CSDL được đầy đủ nhất và kết quả chính xác nhất. Khi dung lệnh Insert into thì số lượng các cột và giá trị trong câu lệnh phải bằng nhau, và các giá trị trong câu lệnh phải thoã mãn những ràng buộc, nguyên tắc trong bảng dữ liệu. Những ràng buộc của CSDL có thể là định dạng cấu trúc như dữ liệu kiểu chuỗi và datetime cần có dấu “”, dữ liệu kiểu số thì không.

lenh-insert
ví dụ trong cấu trúc dữ liệu sql (insert into)


Lệnh Insert into có thể chèn cột hoặc chèn hàng trong bảng tuỳ vào nhu cầu của người dùng và CSDL, nếu chèn thêm số cần có dấu nháy đơn, chèn thêm dữ liệu chuỗi có dấu nháy đơn và dấu “/” đằng trước nếu không sẽ bị lỗi trong câu lệnh. Insert into là một lệnh nhỏ trong SQL nhưng đóng vai trò khá quan trọng trong công tác xử lý dữ liệu của người dung. Nếu người dùng sành sỏi những cấu trúc lệnh nhỏ trong bảng ngôn ngữ máy tính thì làm việc với CSDL chỉ là “chuyện vặt”.
Insert into cũng có thể di chuyển dữ liệu trong bảng này qua bảng khác một cách mẫu mực và an toàn, cho phép người nhiều người dùng cùng thực hiện, không gây xáo trộn schema, có thể rollback tuy nhiên do dung transaction log nên khi áp dụng với lượng dữ liệu lớn thì nó thực hiện rất chậm.

Cú pháp Insert trong SQL được sử dụng nhiều trong lập trình backend.

Lập trình backend là lập trình nền tảng web phía Server bằng cách sử dụng ngôn ngữ phía Server mà cụ thể là PHP để tạo ra hệ thống quản lý nội dung động, tương tác được với giá trị cơ sở dữ liệu trong bảng. Trong lập trình backend, người ta thường dùng lệnh Insert into dữ liệu bằng PHP để thực hiện xử lý dữ liệu như mong muốn. Backend tương tác với hệ quản trị cơ sở dữ liệu quan hệ, nên những câu lệnh trong SQL sẽ được người dùng “rèn giũa” giá trị thường xuyên hơn, phục vụ yêu cầu công việc cao hơn. Có 3 cách để insert into dữ liệu bằng cách sử dụng MySQLi và PDO của PHP:
– Ví dụ sử dụng cú pháp MySQLi Object – oriented như sau:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Tạo kết nối
$conn = new mysqli(‘localhost’, ‘root’, ‘vertrigo’, ‘FreetutsDemo’);

 

// Kiểm tra kết nối
if ($conn->connect_error) {
die(“Kết nối thất bại: ” . $conn->connect_error);
}

// Câu SQL Insert
$sql = “INSERT INTO News (title, content)
VALUES (‘tieu de’, ‘noi dung’)”;

// Thực hiện thêm record
if ($conn->query($sql) === TRUE) {
echo “Thêm record thành công”;
} else {
echo “Lỗi: ” . $sql . “<br>” . $conn->error;
}

// Ngắt kết nối
$conn->close();

   

– Ví dụ về sử dụng cú pháp MySQLi Procedural như sau:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Tạo kết nối
$conn = mysqli_connect(‘localhost’, ‘root’, ‘vertrigo’, ‘FreetutsDemo’);

 

// Kiểm tra kết nối
if (!$conn) {
die(“Kết nối thất bại: ” . mysqli_connect_error());
}

// Câu SQL Insert
$sql = “INSERT INTO News (title, content)
VALUES (‘tieu de’, ‘noi dung’)”;

// Thực hiện thêm record
if (mysqli_query($conn, $sql)) {
echo “Thêm record thành công”;
} else {
echo “Lỗi: ” . $sql . “<br>” . mysqli_error($conn);
}

// Ngắt kết nối
mysqli_close($conn);

– Ví dụ sử dụng cú pháp PDO như sau:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
try {
// Tạo kết nối
$conn = new PDO(“mysql:host=localhost;dbname=FreetutsDemo”, ‘root’, ‘vertrigo’);

 

// Cấu hình exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// Câu SQL Insert
$sql = “INSERT INTO News (title, content)
VALUES (‘tieu de’, ‘noi dung’)”;

// Thực hiện thêm record
$conn->exec($sql);

echo “Thêm record thành công”;
}
catch (PDOException $e) {
echo $e->getMessage();
}

// Ngắt kết nối
$conn = null;

Kết luận về cú pháp Insert trong ngôn ngữ lập trình có cấu trúc SQL:

Nói chung, mỗi ngôn ngữ cấu trúc đều được hỗ trợ những câu lệnh khác nhau nhằm giải quyết nhu cầu xử lý, phân tích dữ liệu của người dùng. Các cú pháp lệnh có thể đơn giản nhưng cũng có thế khá phức tạp, đối với ngôn ngữ SQL người dùng không cần thuộc lòng các câu lệnh cũng có thể giải quyết hệ thống CSDL khổng lồ một cách triệt để. Vì tính đơn giản, tiện dụng, dễ thực hiện, SQL được dùng thường xuyên trong ngôn ngữ lập trình, lệnh Insert into có giá trị rất quan trọng trong việc tạo ra website động, thu hút khách hàng và làm phong phú thêm cho nội dung.


dong-lenh-sql
insert into

Ngôn ngữ lập trình đóng vai trò quan trọng trong thiết kế website, và giá trị tạo nên lợi ích doanh nghiệp được người dùng lẫn khách hàng hết sức chú trọng, việc thành thạo ngôn ngữ máy tính và các câu lệnh của nó khiến bạn xử lý dữ liệu nhẹ nhàng hơn. Hy vọng rằng với các kiến thức và ví dụ bổ ích trên có thể giúp bạn phần nào trong công việc

Categories
Câu lệnh SQL

Mệnh đề having trong SQL

Như bạn đã biết, SQL là ngôn ngữ máy tính mang tính truy vấn cấu trúc, được dùng để tạo lạp, xử lý trên một hệ CSDL quan hệ, trong đó có nhiều lệnh như Select, Insert, Update, Merge, Delete, Truncate, Join. Trong đó Select là lệnh thường xuyên được dùng để thao tác với dữ liệu trên bảng nhất.

Khái niệm Having trong SQL

Select bao gồm các từ khoá liên quan như From, Where, Group By, Having, Order by, cùng phối hợp để xử lý CSDL cho người dùng. Trong bài viết này, chúng ta sẽ đề cập đến câu lệnh having SQL – mệnh đề having cho phép xác định các điều kiện lọc nhóm kết quả nào sẽ xuất hiện trong kết quả cuối cùng. Hầu hết các câu lệnh, mệnh đề having trong SQL rất dễ thiết lập, người dùng không cần nhớ kỹ từng chi tiết mà vẫn có thể thao tác trên dữ liệu một cách dễ dàng.

Hàm Having trong ngôn ngữ lập trình có cấu trúc SQL

Như đã đề cập, having trong sql cho phép lọc nhóm kết quả nào sẽ xuất hiện trong kết quả cuối cùng của bảng ghi, mệnh đề Where đặt điều kiện trên các cột đã lựa chọn trong khi having sql lại đặt các điều kiện trên các nhóm đã được tạo ra từ mệnh đề Group By. Điều này đồng nghĩa với việc Having luôn đi sau Group By trong một truy vấn SQL, sau đó Order by mới sắp xếp dữ liệu theo thứ tự như người dùng mong muốn.
sql having

Cú pháp thực hiện hàm having trong ngôn ngữ có cấu trúc SQL:

Cú pháp hàm having trong sql sẽ có cấu trúc như sau:
SELECT cot1, cot2
FROM bang1, bang2
WHERE [ cac_dieu_kien ]
GROUP BY cot1, cot2
HAVING [ cac_dieu_kien ]
ORDER BY cot1, cot2

Ví dụ ta có bảng “HOCPHI” được diễn giải như sau:

ID TEN TUOI MONHOC HOCPHI
01 VIET 20 CNTT 5.000.000
02 HUY 21 TC 4.500.000
03 UYEN 19 KT 3.000.000
04 KHANH 22 QTKD 3.500.000
05 NHUNG 23 TCNK 4.000.000
06 QUYNH 21 TCDN 3.500.000

Muốn lọc ra học viên có TUOI >20, HOCPHI > 3.000.000 và sắp xếp ID theo thứ tự tăng dần thì ta sử dụng cú pháp sau:
SELECT ID, TEN, TUOI, MONHOC, HOCPHI
FROM HOCPHI
WHERE TUOI>20
GROUP BY SUM(HOCPHI)
HAVING SUM(HOCPHI)>3000000
ORDER BY ID ASC
Khi đó, ta có bảng kết quả sau:

ID TEN TUOI MONHOC HOCPHI
02 HUY 21 TC 4.500.000
04 KHANH 22 QTKD 3.500.000
05 NHUNG 23 TCNK 4.000.000
06 QUYNH 21 TCDN 3.500.000

Tuy nhiên, để có được bảng kết quả này buộc chúng ta phải sử dụng group by having để cho ra cột SUM(HOCPHI) để có thể thực hiện đầy đủ cú pháp trên. Bảng HOCPHI không có học viên nào học 2 môn nên dùng Group by vẫn cho ra kết quả học phí như ban đầu, sau khi Group by, ta sẽ có bảng trung gian:

ID TEN TUOI MONHOC SUM(HOCPHI)
01 VIET 20 CNTT 5.000.000
02 HUY 21 TC 4.500.000
03 UYEN 19 KT 3.000.000
04 KHANH 22 QTKD 3.500.000
05 NHUNG 23 TCNK 4.000.000
06 QUYNH 21 TCDN 3.500.000

 

Một ví dụ khác về hàm Having trong SQL:

Để dễ hiểu hơn về cách dùng lệnh having trong sql, chúng tôi sẽ đưa ra một ví dụ về lọc nhân viên trong bản ghi có độ tuổi lớn hơn hoặc bằng hai lần như sau:

– Ví dụ, ta sẽ có một bảng NHANVIEN có các bản ghi như dưới đây:

 

ID TEN TUOI DIACHI LUONG
12 Trinh 32 Binhdinh 2000.00
3 Diep 25 Hanoi 1500.00
4 Lai 23 Hanam 2000.00
5 Thuy 25 Hue 6500.00
6 Nam 27 Danang 8500.00
7 Lan 22 HCM 4500.00
8 Dao 24 Hanoi 10000.00

 

– Bước tiếp theo, ta tiến hành sử dụng cú pháp theo hướng dẫn như trên để lọc nhân viên có độ tuổi lớn lớn hoặc bằng hai như sau:

SQL > SELECT ID, TEN, TUOI, DIACHI, LUONG

FROM NHANVIEN

GROUP BY tuoi

HAVING COUNT(tuoi) >= 2;

–  Ngay sau đó, kết quả trả về chúng ta nhận được sẽ hiển thị như sau là:

 

ID TEN TUOI DIACHI LUONG
2 Diep 25 Hanoi 1500.00

Một số lưu ý khác khi sử dụng mệnh đề having

Trên đây là hướng dẫn các bạn sử dụng lệnh having sql. Nên chú ý sự khác biệt giữa mệnh đề having với mệnh đề where để thực hành cho đúng với yêu cầu. Sql ra đời khá lâu nhưng nó vẫn được sử dụng nhiều trong các doanh nghiệp và không có dấu hiệu bị lạc hậu bởi những ngôn ngữ khác xuất hiện sau này. 

 

Ngoài ra, having trong sql còn nhiều sức mạnh khác khá phức tạp, đóng vai trò quan trọng trong công tác xử lý, quản lý và sử dụng CSDL, hỗ trợ thao tác cặn kẽ cho người dùng. Chúng ta cũng có thể dùng câu lệnh left join trong sql để sử dụng những chức năng tuyệt vời của nó trong việc xử lý, thao tác dữ liệu. Nếu có thể nắm vững cách sử dụng Having, người dùng sẽ không phải lo lắng với hàng tá CSDL quan hệ trên máy tính.

Kết luận

Do đó, để thành thạo hơn trong sử dụng sql, hay có kiến thức sâu hơn về hàm having trong sql bạn nên học một khóa học chuyên về sql để được hướng dẫn kỹ hơn cách sử dụng các lệnh trong sql từ cơ bản đến nâng cao.

Categories
Câu lệnh SQL

Cú pháp mệnh đề left join trong sql

Nếu ai đã quen với hàng tá thông tin được trả về và cần phải xử lý hằng ngày trên máy tính thì không xa lạ gì đối với SQL. SQL là ngôn ngữ truy vấn mang tính cấu trúc, khá đơn giản và được sử dụng phổ biến trong hệ quản trị CSDL quan hệ. Đối với những ai không có thời gian học thêm, tìm tòi những ứng dụng trong ngôn ngữ mới thì có thể dùng SQL cho các thao tác dữ liệu trên máy, vừa hiệu quả, nhanh chóng lại tiện dụng, đặc biệt không cần nhớ cấu trúc thuật toán, vẫn có thể thực hiện dễ dàng.

 

1. Câu lệnh Left join trong ngôn ngữ lập trình sql là gì?

Left join là một trong những câu lệnh phổ biến, thường gặp đối với ngôn ngữ SQL. Ngôn ngữ chung mà bất cứ hệ thống cơ sở dữ liệu quan hệ nào cũng cần có.

Join được hiểu là một mệnh đề trong SQL. Sử dụng để kết nối từ hai hay nhiều bảng trong cơ sở dữ liệu với nhau. Khi bạn muốn tìm các cột dữ liệu từ nhiều bảng khác nhau để trả về trong cùng một kết quả thì bạn cần dùng Join và SQL sẽ đưa ra một bảng có kết quả dữ liệu tạm thời từ JOIN.

Từ đó định nghĩa của JOIN, ta có thể hiểu left join trong sql là kiểu Join trả về tất cả các giá trị từ bảng bên trái, công với các giá trị trong bảng bên phải, ngay cả khi không có giá trị so khớp nào trong bảng bên phải. Nếu không có dữ liệu sẽ là NULL.

Một số điều lưu ý cần biết cơ bản về Left join trong SQL:

Khi dùng lệnh left join sql, kết quả trả về sẽ cộng gộp tất cả các giá trị của các hàng từ bảng bên trái vào bảng bên phải cộng với các giá trị được so khớp từ bảng bên phải, trường hợp không so khớp sẽ trả về NULL cho các hàng.

Cú pháp như sau:

SELECT bang1.cot1, bang2.cot2…FROM bang1LEFT JOIN bang2ON bang1.field_chung = bang2.field_chung;
Từ đó ta có ví dụ diễn giải bảng THONGTIN như sau:

ID TEN TUOI MONHOC HOCPHI
01 VIET 20 CNTT 5.000.000
02 HUY 21 TC 4.500.000
03 UYEN 19 KT 3.000.000
04 KHANH 22 QTKD 3.500.000
05 NHUNG 23 TCNK 4.000.000
06 QUYNH 21 TCDN 3.500.000

Và bảng MUONSACH:

STT TEN NGAYMUON SINHVIEN_ID SOTIEN
1001 VIET 18/5/2017 01 300
1002 HUY 19/5/2017 02 320
1003 HUY 19/5/2017 02 330
1004 KHANH 20/5/2017 04 400
1005 NHUNG 21/5/2017 05 500

Khi dùng sql left join tổng hợp hai bảng từ THONGTIN qua MUONSACH, ta có cấu trúc:
SQL> SELECT ID, TEN, SOTIEN, NGAYMUON FROM THONGTIN LEFT JOIN MUONSACH ON THONGTIN.ID = MUONSACH.SINHVIEN_ID;
Và kết quả sẽ là:

ID TEN SOTIEN NGAYMUON
01 VIET 300 18/5/2017
02 HUY 320 19/5/2017
02 HUY 330 19/5/2017
03 UYEN NULL NULL
04 KHANH 400 20/5/2017
05 NHUNG 500 21/5/2017
06 QUYNH NULL NULL

 

Một ví dụ về câu lệnh left join trong mySQL:

Câu lệnh của Left join trong mySQL được thực hiện như sau:

SELECT cot1, cot2,… cotn

FROM bang1

LEFT JOIN bang2

ON bang1.cot_chung = bang2.cot_chung;

 

Chú giải:

  • cot1, cot2, … cotn: là những tên cột cần hiển thị ở kết quả truy vấn và được ngăn cách nhau bởi dấu phẩy (,)
  • bang1, bang2: là tên các bảng chứa các dữ liệu để lấy khi truy vấn.
  • cot_chung: là cột chứa khóa ngoại tham chiếu từ bang1 đến cột có được trong bang2 hoặc tên cột khóa ngoại tham chiếu từ bang2 đến cột có trong bang2.

3. Ví dụ về câu lệnh left join khi lập trình ngôn ngữ sql:

Để giúp các bạn dễ hiểu về lý thuyết như trên, dưới đây tôi sẽ đưa ra ví dụ sau: mối quan hệ trong hai bảng được chỉ định bởi customer_id khóa (là khóa chính trong bảng khách hàng và là khóa ngoại trong bảng đơn hàng. Nếu chúng ta chỉ muốn thông tin về các đơn đặt hàng vào bảng khách hàng bao gồm khách hàng đặt hàng hay không đặt hàng, chúng ta sẽ sử dụng một liên kết bên trái. Trong một bảng kết nối bên trái sẽ trả về tất cả các bảng ghi từ bảng 1 và bất kỳ bản ghi nào phù hợp từ bảng2. NULL sẽ là kết quả không phù hợp.

SELECT first_name, last name, order_date, order_amount

FROM khách hàng C

LEFT JOIN đơn hàng 0

ON C. customer_id = đơn hàng. ID khách hàng;

Chú ý: từ khóa left join trả về tất cả các bản ghi từ bảng bên trái (bảng khách hàng), ngay cả khi không có kết quả phù hợp với thông tin trong bảng bên phải (đơn hàng).

Bốn phép nối SQL cơ bản liên liên kết các phần dữ liệu khác nhau lại với nhau vì thế để lấy được dữ liệu từ cơ sở hay kho dữ liệu là rất khó. Nhưng khi ta có sự hiểu biết cơ bản về nó thì việc thực hiện này rất dễ và trong tầm tay.

SQL là ngôn ngữ truy vấn dữ liệu, nó được ra đời để hỗ trợ thêm cho web service. Hiện nay, nhiều doanh nghiệp dùng nhiều đến nó để quản trị nhân viên hoặc khách hàng của họ. Họ sử dụng cơ sở dữ liệu này để lưu trữ thông tin để bảo mật thông tin trong sự tuyệt đối tránh trường hợp rủi ro như bị mất hay sửa, xóa,… những thông tin. 

Sử dụng SQL hiện đang phổ biến, có được sự hiểu biết hơn về ứng dụng này, sẽ giúp các bạn làm việc hiệu quả, nhanh chóng trong giải quyết công việc liên quan về công nghệ thông tin, máy tính cũng như tạo cơ hội thăng tiến trong công việc. 

Hy vọng qua bài đọc này sẽ giúp các bạn có được nhiều thông tin, sự hiểu biết hơn về ứng dụng phổ biến này cũng như những thuật ngữ tin học hiện nay. Đặc biệt, giúp bạn thành thạo hơn trong việc truy vấn và sử dụng câu lệnh thật tốt. Cuối cùng, chúng tôi chúc các bạn học tốt và hoàn thành công việc hiệu quả.

Categories
Câu lệnh SQL

Mệnh đề GROUP BY trong SQL

Câu lệnh group by trong sql được dùng để kết hợp với lệnh SELECT để sắp xếp dữ liệu đồng nhất vào các nhóm, hàm này trong ngôn ngữ sql đi sau mệnh đề WHERE trong một lệnh SELECT và ở trước mệnh đề ORDER BY. SQL và những mệnh đề như GROUP BY ngày càng đóng vai trò quan trọng không kém đối với hệ quản trị CSDL.

Biết cách sử dụng GROUP BY khi dùng ngôn ngữ SQL là một điều cần thiết.

 
Không có một câu lệnh nào là thừa thải của một hàm CSDL, chỉ là bạn chưa cần thiết dùng đến chúng hoặc chưa áp dụng đúng mục đích. Mệnh đề group by sql được thêm vào bởi vì các hàm tập hợp (như SUM) trả về một tập của các giá trị ở cột đó mỗi khi chúng được gọi, nhờ lệnh GROUP BY trong sql, ta có thể tính tổng của các giá trị theo từng nhóm lẻ tại cột.
Cách thực hiện nội dung như sau:

SELECT tên_cột, SUM (tên _cột) FROM tên_bảng GROUP BY tên_cột
 

Ví dụ ta có bản ghi “HOCPHISINHVIEN” như sau:

ID TEN TUOI MONHOC HOCPHI
1 Hoang 21 CNTT 4
2 Nhu 22 TCNH 5
3 Hung 21 CK 3
4 Hoang 21 CK 3
5 Hung 21 CNTT 4
6 Ngan 22 TCNH 5

 
Nếu muốn biết tổng số học phí của từng sinh viên, ta buộc phải dùng truy vấn như sau:
SQL> SELECT TEN, SUM(HOCPHI) FROM HOCPHISINHVIEN
GROUP BY TEN;
Khi đó sẽ cho ra một bảng ghi nội dung mới như sau:

TEN SUM(HOCPHI)
Hoang 7
Nhu 5
Hung 7
Ngan 5

 
Cách sử dụng mệnh đề nhìn chung cũng khá đơn giản, chỉ cần nắm rõ cú pháp, bạn cũng không cần phải thuộc nằm lòng mới có thể sử dụng được, đây cũng có thể được xem là một lợi thế của người tạo ngôn ngữ truy vấn SQL.

Một số hàm tổng hợp thường đi kèm với Group by khi lập trình SQL.

Theo công thức cấu trúc, group by trong sql server thường được đi kèm với một số hàm nhất định, cụ thể nhất đó là:

  • AVG: Hàm AVG trong SQL được sử dụng để tìm giá trị trung bình của một trường của các bản ghi đa dạng, khi sử dụng kèm mệnh đề group by trong sql, hàm sẽ trả về giá trị trung bình của nhóm cột.
  • COUNT: Hàm COUNT là hàm đơn giản nhất và rất hữu dụng để đếm số bản ghi, được mong đợi trả về bởi một lệnh SELECT. Khi sử dụng, mệnh đề này sẽ trả về số lần xuất hiện ở một cột.
  • MAX: Hàm MAX trong SQL được tận dụng để tìm ra giá trị lớn nhất trong một tập hợp bản ghi, người dùng có thể tìm ra được giá trị lớn nhất của tất cả các bản ghi được cung cấp bởi tên với mỗi mệnh đề group by sql server
  • MIN: Tương tự, hàm MIN trả về giá trị nhỏ nhất trong nhóm cột khi đi kèm với group by SQL.

Như vậy, nội dung về group by sql là gì thì chắc hẳn sau bài viết này bí mật đã được bật mí, người dùng có thể tự tìm hiểu cho mình biết khi nào dùng group by sql, vận dụng ngôn ngữ máy tính sẽ trở nên dễ dàng hơn khi bạn tinh thông về nó.

 

Ví dụ về câu lệnh group by để lập trình sql

Một vài ví dụ về câu lệnh group by in sql để bạn đọc có thể tham khảo.

Ví dụ 1: Lệnh group by sql Server

SELECT cot1, cot2, … cot_N,

Ham_tong (cot)

FROM bang

[WHERE dieukien]

GROUP BY cot1, cot2, … cot_N;

Chú thích:

– Cot1, cot2, … cotN: là giá trị không nằm ở hàm tổng và phải nằm ở mệnh đề GROUP BY.

– Ham_tong: có thể là các hàm như MIN, MAX, COUNT, SUM, AVG

– Bang: bảng cần lấy bảng ghi và phải có ít nhất 1 bảng thuộc lệnh FROM

– WHERE dieukien: điều kiện phù hợp đáp ứng với mệnh đề WHERE

Ví dụ 2: Cú pháp group by sql Server dùng hàm SUM. Dưới đây là ví dụ dùng hàm SUM tính tổng để trả về mã số thiết bị và tổng số lượng theo mã số thiết bị.

SELECT maso_thietbi, SUM(soluong) AS “Tong so luong”

FROM thietbi

GROUP BY maso_thietbi

Ví dụ 3: Cú pháp group by sql Server dùng hàm MIN. Cú pháp này dùng hàm MIN nhỏ nhất để cho bạn kết quả tên sản phẩm và số lượng tối thiểu của tên sản phẩm đó.

SELECT ten_sanpham, MIN(Soluong) AS “So luong it nhat”

FROM sanpham

GROUP BY ten_san pham

Ví dụ 4: Cú pháp group by SQL trong Access

SELECT fieldlist

FROM table

WHERE criteria

[GROUP BY groupfieldlist]

Chú thích:

– Fieldlist là tên của một hoặc nhiều trường cần truy xuất

– Table là tên bảng cần truy xuất các bản ghi

– Criteria là điều kiện cho mệnh đề WHERE

– Groupfieldlist là tên tối đa 10 trường được dùng để nhóm các bản ghi theo thứ tự cấp độ nhóm cao nhất đến thấp nhất.

3. Lưu ý về lệnh group by

– Mệnh đề GROUP BY phải luôn theo sau các điều kiện thuộc mệnh đề WHERE, tức sau khi viết mệnh đề WHERE xong xuống dòng đến mệnh đề GROUP BY.– Mệnh đề ORDER BY luôn theo sau mệnh đề GROUP BY nếu được sử dụng ở trong cú pháp truy vấn dữ liệu.

Trên đây là những chia sẻ của chúng tôi về câu lệnh group by thuộc ngôn ngữ sql, một lệnh được sử dụng kết hợp với mệnh đề WHERE để gom nhóm trong sql các dữ liệu giống nhau. Hy vọng từ những thông tin cú pháp trên bạn có thể học tập, thực hành với kết quả sử dụng ngôn ngữ SQL tốt hơn.