View allAll Photos Tagged CodeGym

 

SQL hay viết tắt của Structured Query Language, là ngôn ngữ truy vấn có cấu trúc giúp bạn truy xuất và cập nhật dữ liệu ở DB. Với mỗi RDBMS thì SQL sẽ thay đổi nhỏ ở một số cú pháp, nhưng nhìn chung điều đó là không nhiều. Bài viết sau mình sẽ hướng dẫn các bạn sử dụng SQL trên hệ quản trị MySQL.

 

1. Kiểu dữ liệu

 

Với mỗi table, sẽ có nhiều column, mỗi column được xem là thuộc tính của đối tượng. Và mỗi column sẽ có mỗi kiểu dữ liệu khác nhau, thường các kiểu mà chúng ta hay gặp:

 

Kí tự, chuỗi (String)

 

Số (Numeric)

 

Ngày và giờ (Date and Time)

 

Với mỗi loại, mình có liệt kê các kiểu thường xuyên được dùng để xây dựng DB, hãy cùng xem các bảng bên dưới.

 

1.1. Kiểu String

 

Kiểu dữ liệu

 

Mô tả

 

CHAR (size)

 

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

 

Phạm vi 0 đến 255. Mặc định là 1

 

VARCHAR (size)

 

Độ dài thay đổi được.

 

Phạm vi 0 đến 65,535.

 

TINYTEXT

 

Độ dài thay đổi được, tối đa là 255 kí tự

 

TEXT

 

Độ dài thay đổi được.

 

Phạm vi 0 đến 65,535.

 

MEDIUMTEXT

 

Độ dài tối đa đến 16,777,215.

 

LONGTEXT

 

Độ dài tối đa đến 4,294,967,295.

 

Ngoài ra, nếu cần lưu trữ giá trị nhị phân thì có thể sử dụng kiểu BLOB.

 

1.2. Kiểu Numeric

 

Kiểu dữ liệu

 

Mô tả

 

BIT

 

Kiểu số có kích thước nhỏ nhất. Giá trị mặc định là 1.

 

BOOL (BOOLEAN)

 

Kiểu TRUE/FALSE

 

TINYINT, SMALLINT, INT, BIGINT

 

Các kiểu số nguyên

 

FLOAT, DOUBLE, DECIMAL

 

Các kiểu số thực (số thập phân)

 

1.3. Kiểu Date

 

Kiểu dữ liệu

 

Mô tả

 

DATE

 

Kiểu ngày, định dạng là: yyyy-mm-dd

 

DATETIME

 

Kiểu ngày và giờ, định dạng là: yyyy-mm-dd hh🇲🇲ss

 

TIMESTAMP

 

Tương tự như kiểu DATETIME, nhưng lưu dữ liệu theo chuẩn UTC.

 

TIME

 

Kiểu giờ, định dạng là: hh🇲🇲ss

 

YEAR

 

Kiểu năm, lưu trữ 4 chữ số.

 

[Database] SQL (Part 1)

 

[Database] SQL (Part 2)

 

2. Toán tử so sánh

 

Được sử dụng so sánh các dữ liệu với nhau, từ đó mới lọc kết quả cuối cùng của câu lệnh SQL.

 

Các toán tử so sánh cũng gần giống như các phép toán học.

 

Toán tử

 

Chú thích

 

=

 

So sánh bằng

 

>

 

So sánh lớn hơn

 

<

 

So sánh nhỏ hơn

 

>=

 

So sánh lớn hơn hoặc bằng

 

<=

 

So sánh nhỏ hơn hoặc bằng

  

Có thể dùng !=, đây là phép so sánh khác

 

3. Toán tử logic

 

Được sử dụng để phối hợp các biểu thức điều kiện với nhau

 

Toán tử

 

Ý nghĩa

 

AND

 

Trả về TRUE nếu 2 biểu thức cùng trả về TRUE.

 

IN

 

Trả về TRUE nếu chỉ cần có biểu thức trong danh sách điều kiện là TRUE

 

NOT

 

Phủ định biểu thức trả về kiểu BOOLEAN.

 

OR

 

Trả về TRUE nếu một trong hai biểu thức là TRUE

 

LIKE

 

Kiểm tra tính gần đúng của dữ liệu.

 

BETWEEN

 

Trả về TRUE, nếu giá trị thuộc trong đoạn

 

ALL

 

Trả về TRUE nếu tất cả tập so sánh là TRUE.

 

ANY

 

Trả về TRUE nếu có bất kỳ giá trị ở tập so sánh là TRUE.

 

EXISTS

 

Trả về TRUE nếu truy vấn trả về ít nhất một dòng dữ liệu

 

SOME

 

Trả về TRUE nếu vài giá trị ở tập so sánh là TRUE.

 

4. NULL

 

Là một giá trị đặc biệt, nó thể hiện 3 ý nghĩa sau:

 

Thể hiện giá trị chưa được xác định rõ ràng.

 

Giá trị ở đây không phải là rỗng hay 0.

 

Không thể dùng các toán tử so sánh thông thường với NULL, mà cần sử dụng toán tử IS. Như là IS NULL hay IS NOT NULL.

 

Kết luận

 

Hôm nay mình chỉ giới thiệu lại phần SQL đến đây thôi, có thể thấy rằng SQL cũng có nhiều khái niệm tương tự như bên ngôn ngữ lập trình. Nhưng đây chỉ là ngôn ngữ để thao tác với các dữ liệu ở DB, tức là chỉ thao tác với tầng dưới cùng của một hệ thống, được xem như là phương tiện để một ứng dụng giao tiếp được với DB trong hệ thống.

 

Nguồn: codegym.vn/blog/2023/11/18/structured-query-language-sql/

100 phím tắt cho lập trình viên Pycharm

 

Ở phần kiến thức hôm nay, mình tiếp tục chia sẻ về VIEW, là một khái niệm nâng cao hơn so với các bài trước đây. Và kiến thức này cũng hay được sử dụng trong khi làm dự án.

 

1. VIEW trong SQL là gì?

 

Là table ảo (virtual) dựa trên kết quả từ câu lệnh SQL SELECT. Và nó cũng có các dòng và cột nhưng là table thật. Vậy hãy cùng theo dõi tiếp bên dưới nó có gì khác với table thật hay không.

 

Khái niệm View

 

2. Mục đích sử dụng VIEW

 

Giúp thao tác nhanh với dữ liệu mà không cần viết lại câu lệnh SQL SELECT từ đầu. Vì nó cũng chứa các dòng và cột như table thật, nên chúng ta có thể thao tác như một table thông thường.

 

3. Hướng dẫn thao tác với VIEW trong SQL

 

3.1. Tạo VIEW

 

Cú pháp

 

CREATE VIEW view_name AS

 

SELECT column1, column2, ...

 

FROM table_name

 

WHERE condition;

 

Lưu ý: Dữ liệu ở VIEW luôn được cập nhật theo dữ liệu mới nhất ở table chính.

 

Ví dụ

 

Tạo ra VIEW để liệt kê ra toàn bộ thông tin các bác sĩ và thông tin tài khoản. Với các bác sĩ chưa có tài khoản, hay tài khoản chưa có ai sở hữu thì cũng phải liệt kê ra.

 

CREATE VIEW view_full_join AS

 

SELECT d.doctor_id, d.last_name, a.account

 

FROM doctor d

 

LEFT JOIN account_system a ON d.doctor_id = a.doctor_id

 

UNION ALL

 

SELECT d.doctor_id, d.last_name, a.account

 

FROM doctor d

 

RIGHT JOIN account_system a ON d.doctor_id = a.doctor_id;

 

3.2. Thao tác với VIEW

 

Tiếp tục ví dụ bên trên, vì VIEW là một table ảo, nên bạn có thể dùng SELECT để truy vấn như một table thật:

 

SELECT *

 

FROM view_full_join;

 

Nhưng bạn hãy nhớ một số lưu ý khi muốn cập nhật dữ liệu (INSERT, UPDATE, DELETE) trên VIEW:

 

VIEW không chứa GROUP BY, ORDER BY.

 

Không chứa DISTINCT.

 

Nên chứa cả các column NOT NULL.

 

Không chứa sub query.

 

VIEW chỉ nên được tạo từ 1 table.

 

3.3. Để cập nhật cấu trúc VIEW

 

Khi bạn muốn cập nhật cấu trúc VIEW, hãy sử dụng với cú pháp:

 

CREATE OR REPLACE VIEW view_name AS

 

SELECT column1, column2, ...

 

FROM table_name

 

WHERE condition;

 

3.4. Xoá VIEW

 

Như là các khái niệm được tạo ra bởi CREATE, thì khi xoá chúng ta cũng sẽ sử dụng DROP như bên dưới:

 

DROP VIEW view_name;

 

Kết luận

 

Nếu trong dự án xuất hiện nhiều câu lệnh truy vấn phức tạp, thì hãy sử dụng VIEW để giải quyết vấn đề này. Ngoài ra, VIEW cũng có nhiều loại, các bạn hãy tìm hiểu thêm để linh hoạt trong cách sử dụng nhé.

 

Nguồn: codegym.vn/blog/2023/11/20/view-trong-sql/

 

Ở các phần kiến thức trước, chúng ta đã cùng tìm hiểu nhóm lệnh DDL trong tập các nhóm lệnh ở SQL:

 

Nhóm định nghĩa cấu trúc dữ liệu (DDL).

 

Nhóm lệnh thao tác dữ liệu (DML).

 

Nhóm lệnh phân quyền sử dụng dữ liệu (DCL).

 

Nhóm lệnh thao tác với transaction (TCL).

 

Bài hôm nay chúng ta tiếp tục tìm hiểu nhóm lệnh thao tác dữ liệu (DML).

 

1. Vai trò của câu lệnh DML trong SQL

 

Với DDL thì nhóm lệnh này sẽ giúp người dùng định nghĩa các cấu trúc dữ liệu. Nhưng với DML thì giúp chúng ta thao tác với DB để truy xuất hoặc cập nhật dữ liệu từ ứng dụng/hệ thống bên trên.

 

[Database] DML 1 (Part 1)

 

[Database] DML 1 (Part 2)

 

2. Hướng dẫn sử dụng các câu lệnh phổ biến ở DML

 

2.1. Câu lệnh INSERT

 

Sử dụng để thêm mới record đến table.

 

Cú pháp

 

INSERT INTO table_name (column1, column2, column3, ...)

 

VALUES (value1, value2, value3, ...);

 

Ví dụ

 

Ở bài DDL, mình đã tạo ra table doctor, giờ mình sẽ thêm dữ liệu:

 

INSERT INTO doctor (`first_name`, `middle_name`, `last_name`, date_of_birth, qualification, specialization_id)

 

VALUES

 

('Nguyễn', 'Mạnh', 'An', '1985-01-04', 6, 2);

 

2.2. Câu lệnh UPDATE

 

Sử dụng để cập nhật giá trị của một hoặc nhiều cột

 

Cú pháp

 

UPDATE table_name

 

SET column1 = value1, column2 = value2, ...

 

WHERE condition;

 

Ví dụ

 

UPDATE doctor

 

SET qualification = 10

 

WHERE doctor_id = 5;

 

Mình đang thực hiện cập nhật lại số năm kinh nghiệm của bác sĩ có doctor_id là 5.

 

Nếu câu lệnh trên không có điều kiện WHERE thì nó sẽ thực hiện cập nhật toàn bộ các record ở table doctor.

 

2.3. Câu lệnh DELETE

 

Dùng để xoá một hoặc nhiều record ở table.

 

Cú pháp

 

DELETE FROM table_name

 

WHERE condition;

 

Ví dụ

 

DELETE FROM doctor

 

WHERE doctor_id = 5;

 

Mình đang thực hiện xoá bác sĩ có doctor_id là 5.

 

Nếu câu lệnh trên không có điều kiện WHERE thì nó cũng sẽ xoá toàn bộ các record ở table.

 

2.4. Câu lệnh SELECT

 

Là câu lệnh luôn được sử dụng ở SQL, giúp cho việc truy xuất dữ liệu theo nhiều cách khác nhau.

 

Cú pháp

 

SELECT column_name(s)

 

FROM table_name

 

WHERE condition

 

Ví dụ

 

SELECT last_name

 

FROM doctor;

 

Câu lệnh trên giúp lấy ra phần tên (last_name) của toàn bộ bác sĩ.

 

SELECT *

 

FROM doctor

 

WHERE last_name = "An";

 

Còn nếu các bạn muốn lấy toàn bộ thông tin thì cần sử dụng câu lệnh SELECT *

 

Ngoài ra, câu lệnh SELECT còn được kết hợp với các từ khoá khác để tuỳ biến trong việc lấy dữ liệu, như là:

 

SELECT DISTINCT last_name

 

FROM doctor;

 

Với các bác sĩ trùng tên, thì câu lệnh trên chỉ lấy ra một giá trị duy nhất.

 

Khi muốn giới hạn số record lấy ra, thì kết hợp SELECT và LIMIT:

 

SELECT *

 

FROM doctor

 

LIMIT 3;

 

Nó sẽ lấy ra 3 bác sĩ đầu tiên, ở các DBMS khác thì cú pháp LIMIT sẽ thay đổi, như là: TOP, FETCH, ROWNUM.

 

Kết luận

 

Trên đây là tập các câu lệnh ở DML thường xuyên được sử dụng khi thao tác với dữ liệu, nếu nắm rõ sẽ giúp các bạn xử lý dữ liệu dễ dàng hơn. Còn với câu lệnh SELECT, thì còn rất nhiều kiến thức để nghiên cứu, các bạn tiếp tục theo dõi ở các bài sau để hiểu hơn về câu lệnh SELECT nhé.

 

Nguồn: codegym.vn/blog/2023/11/19/cac-cau-lenh-thong-dung-o-dml-...

Chương trình không yêu cầu học viên có kiến thức công nghệ thông tin trước đó, nên phù hợp với nhiều đối tượng như: sinh viên, người đã tốt nghiệp Đại học, Cao Đẳng, Trung cấp và người đi làm muốn chuyển nghề. - fklsxzh7k0 - codegym.vn/blog/2022/08/08/hoc-tester-o-ha-noi/

Lập trình Android là gì?

 

Theo thống kế vào năm 2012, sau bốn năm kể từ khi ra mắt có khoảng 700.000 ứng dụng trên Android và số lượt tải ứng dụng từ Google Play. Cửa hàng ứng dụng chính của Android, ước tính khoảng 25 tỷ lượt. Chỉ trong vòng hơn 10 năm android đã trở thành một hệ điều hành phổ biến trên thế giới. Nó đã phát triển bất chấp sự bùng nổ mạnh mẽ của hệ điều iOS của Apple.

codegym.vn/blog/2018/12/22/lap-trinh-android-la-gi/

 

#codegym #hoclaptrinh #codingbootcamp #CNTT #laptrinhvien #daotaolaptrinh

[CodeGym HN] Phím tắt cho lập trình viên Pycharm

Khóa học tester cơ bản như thế nào? - Sau khi tìm được một địa chỉ đào tạo uy tín và một khóa học tester cho người mới bắt đầu thì bạn sẽ được đào tạo từ những khái niệm cơ bản nhất. Vậy một khóa học tester cho người mới bắt đầu sẽ được học những gì? Trước khi bắt đầu khóa học các giảng viên sẽ cho bạn biết về khái niệm tester là gì? Công việc của một tester hàng ngày sẽ là làm gì? điều này sẽ khiến cho các bạn dễ hình dung hơn về công việc của mình sau khi kết thúc khóa học. Những thông tin này các bạn có thể tìm hiểu tại Đây. - 69xllbda8x - codegym.vn/blog/2022/08/02/khoa-hoc-tester-cho-nguoi-moi-...

 

Thường khi làm việc với dữ liệu ở tầng dưới cùng của một hệ thống hay ứng dụng, chúng ta đã quá quen thuộc với các khái niệm như DB (Database), SQL (Structured Query Language). Và các bạn cũng thường nghe đến khái niệm RDBMS, vậy các bạn đã hiểu rõ về RDBMS hay chưa. Vậy thì hôm nay chúng ta cùng tìm hiểu sâu hơn về nó.

 

Khái niệm RDBMS

 

Hay được viết tắt Relational Database Management System, là chương trình cho phép lập trình viên tạo, cập nhật, quản lý hay các xử lý khác với DB quan hệ.

 

Sau đây là một số RDBMS thông dụng:

 

MySQL

 

PostgreSQL

 

Microsoft SQL Server

 

Oracle Database…

 

1. DB quan hệ

 

Ở trên là ví dụ cho một DB quan hệ của một hệ thống rạp phim, bao gồm 4 table: Ratings, Users, Tags, Movies. Các table sẽ có liên kết với nhau qua các mối quan hệ 1 – 1, 1 – n, n – n. Với hình trên, thì 1-* đang biểu đạt cho mối quan hệ 1 – n.

 

Và các DB quan hệ sẽ được quản lý bởi các RDMS như:

 

2. MySQL

 

3. SQL Server

 

RDBMS là gì

 

Phân biệt Entity và Table

 

Entity là một đối tượng trong thực tế. Và table là khái niệm entity ở DB quan hệ. Table là một khái niệm rộng hơn, có thể hiểu là đại diện cho một entity, nhưng nó cũng dùng để thể hiện mối quan hệ giữa entity với nhau nữa.

 

4. Table

 

Với ví dụ trên chúng ta đang có 3 table là Employee, Work_On, Project. 3 table này được tạo ra dựa trên kết quả của mối quan hệ giữa 2 entity là Employee và Project.

 

Hay có thể thấy rằng với 2 entity Employee và Project, thì sẽ tạo ra được 2 table tương ứng là Employee và Project. Đồng thời, giữa 2 table này có mối quan hệ và sinh ra thêm table thứ 3 là Work_On.

 

Kết luận

 

Tóm lại khái niệm RDBMS chính là hệ quản trị các cơ sở dữ liệu, giúp cho lập trình viên thao tác với DB dễ dàng hơn. Lập trình viên có thể sử dụng các thao tác giao diện hoặc dùng SQL để làm việc với các DB.

 

Hôm nay chúng ta chỉ tìm hiểu đến đây thôi, hi vọng các bạn đã hiểu rõ về RDBMS và lựa chọn được RDBMS phù hợp để luyện tập với DB.

 

Nguồn: codegym.vn/blog/2023/11/17/rdbms-la-gi/

Tại SaigonTech, giảng viên luôn luôn tự hoàn thiện và nâng cao trình độ của mình, các nhà quản lý luôn biết hỗ trợ nhân viên, các sinh viên luôn biết trau dồi kiến thức để tiến bộ nhanh chóng thông qua sự hướng dẫn của giảng viên và các hoạt động hỗ trợ sinh viên. Thông tin liên hệ: - x7du08wyzt - codegym.vn/blog/2022/06/10/top-10-trung-tam-day-lap-trinh...

Chào mừng tân sinh viên Trường Đại học Kinh tế Đà Nẵng! Bài viết này sẽ giúp bạn tìm hiểu về lịch trình và thông tin quan trọng nhất trong ngày khai giảng. Hãy xem chi tiết tại đây: codegym.vn/blog/2023/09/11/chao-don-tan-sinh-vien-truong-... @CodeGym

 

Ở Database (DB) quan hê, đặc biệt là DB lớn, công việc chuẩn hoá database được đánh giá là một trong những giai đoạn quan trọng trước khi đưa DB vào sử dụng. Vậy chuẩn hoá DB là gì? Vì sao lại cần chuẩn hoá và làm sao để chuẩn hoá DB? Bài viết này sẽ giúp bạn giải đáp các thắc mắc này.

 

Chuẩn hoá Database là gì?

 

Là tổ chức lại dữ liệu:

 

Cần loại bỏ sự dư thừa dữ liệu.

 

Và đảm bảo lưu trữ dữ liệu có logic.

 

Hay chính là việc phân tách các table lớn thành các table nhỏ hơn và liên kết chúng bởi các mối quan hệ.

 

[Database] Normalization (Part 1)

 

[Database] Normalization (Part 2)

 

Vì sao cần chuẩn hoá Database

 

Ở DB quan hệ, đặc biệt là DB lớn, chúng ta cần phải tổ chức cấu trúc có logic để việc bảo trì và quản lý chúng dễ dàng hơn. Nên chuẩn hoá là một giai đoạn quan trọng trước khi đưa DB vào sử dụng.

 

Các cách chuẩn hoá Database

 

Chuẩn hoá 1

 

Mỗi ô dữ liệu chỉ chứa đơn giá trị.

 

Mỗi record phải là duy nhất (tức là phải có khoá chính).

 

Chuẩn hoá 2

 

DB hiện tại phải đạt chuẩn 1NF.

 

Cần loại bỏ các phụ thuộc thành phần (Partial Dependency).

 

Chuẩn hoá 3

 

DB hiện tại phải đạt chuẩn 2NF.

 

Cần loại bỏ các phụ thuộc bắc cầu (Transitive Dependency).

 

Chuẩn hoá Boyce-Codd

 

DB hiện tại phải đạt chuẩn 3NF.

 

Cần loại bỏ các khoá thành viên (candidate keys).

 

Tức là ngoài khoá chính (primary key) hiện tại, thì table không được phép chứa bất kỳ column nào có chức năng tương tự như primary key nữa.

 

Chuẩn hoá 4

 

DB hiện tại phải đạt chuẩn Boyce-Codd.

 

Cần loại bỏ các phụ thuộc đa trị (Multi-valued Dependency).

 

(tương tự như Quy tắc 2 ở các bước chuyển đổi ERD sang Table).

 

Chuẩn hoá 5

 

Hay còn gọi là PJNF – Project-Join Normal Form.

 

Cần loại bỏ phụ thuộc liên kết (Join Dependency) nếu cần thiết.

 

Kết luận

 

Vậy chúng ta đã đi qua toàn bộ các bước chuẩn hoá Database. Hầu hết các table sẽ không vượt quá 3NF, nhưng bạn cũng cần nắm thêm về 4NF, 5NF. Phụ thuộc vào yêu cầu hay độ lớn của dữ liệu mà các quy tắc đó sẽ được áp dụng.

 

Nguồn: codegym.vn/blog/2023/11/18/chuan-hoa-database/

 

Sau khi đã có ERD, ở kiến thức hôm nay chúng ta tiếp tục chuyển đổi ERD thành các Relations, chính là table ở Database mà chúng ta hay sử dụng để thao tác với dữ liệu, ở video mình sẽ có ví dụ cụ thể hơn.

 

Vì sao cần chuyển đổi từ ERD sang Relations?

 

Như đã biết, ERD chỉ là sơ đồ mô tả trực quan yêu cầu của khách hàng, nên chúng ta chưa thể sử dụng để chứa dữ liệu và truy xuất dữ liệu vào hệ thống/ứng dụng sau này được. Vì vậy chúng ta sẽ tiếp tục chuyển đổi từ ERD sang Relations.

 

Convert to ERD to relations

 

Các bước chuyển đổi ERD sang Relations

 

1. Biến đổi một kiểu thực thể thành một table

 

Thuộc tính khóa của thực thể chính là khoá chính của table.

 

Các thuộc tính thông thường của thực thể là thuộc tính của table.

 

2. Biến đổi thuộc tính đa trị thành một table

 

Tách thuộc tính đa trị thành table mới, đặt khoá chính của table mới đó vào table ban đầu, đóng vai trò là khoá ngoại tham chiếu đến table ban đầu.

 

3. Biểu diễn mối liên kết có lượng số 1-1

 

Đặt thuộc tính khóa ở phía tùy chọn sang phía bắt buộc.

 

4. Biểu diễn mối liên kết có lượng số 1-n

 

Đặt thuộc tính khóa ở phía 1 sang n.

 

5. Biến đổi mối liên kết có lượng số n-n

 

Sinh ra table trung gian và khoá chính của table này được tạo bởi sự kết hợp giữa 2 khoá của 2 thực thể tham gia vào mối quan hệ n-n, hay còn được gọi là khoá phức hợp.

 

Kết luận

 

Sau khi hoàn thành 5 quy tắc chuyển đổi ERD sang Relations, gần như chúng ta đã có được một Database hoàn chỉnh rồi. Nhưng để toàn vẹn được dữ liệu ở DB về sau, thì cần phải tiếp tục đánh giá DB qua các quy tắc ở Normalization Form.

 

Nguồn: codegym.vn/blog/2023/11/17/chuyen-doi-erd-sang-relations/

Download toàn bộ tài liệu lập trình C cho người mới bắt đầu

 

C được phổ biến khá rộng rãi và đã trở thành một công cụ lập trình khá mạnh, được sử dụng như là một ngôn ngữ lập trình chủ yếu trong việc xây dựng những phần mềm hiện nay. Ngày C chính thức ra mắt bởi Dennis M. Ritchie để phát triển hệ điều hành UNIX, nó được phát triển như một dự án mở tuyệt vời cho các nhà lập trình viên học tập. Ứng dụng chủ yếu của C để kết hợp với Assembly để viết các trình điều khiển, hệ điều hành và ngôn ngữ khác như C++, Python, Java …

codegym.vn/blog/2021/01/17/tai-lieu-lap-trinh-c-cho-nguoi...

 

#codegym #hoclaptrinh #codingbootcamp #CNTT #laptrinhvien #daotaolaptrinh

 

Ở 2 bài trước chúng ta đã cùng tìm hiểu các lệnh cơ bản trong nhóm DML (INSERT, UPDATE, DELETE và SELECT), với từ khoá dùng chung để làm đa dạng hơn cách xử lý ở câu lệnh truy vấn (IN, EXISTS, LIKE và UNION).

 

Trong bài hôm nay, chúng ta cùng tìm hiểu các lệnh JOIN, với nhiều kiểu khác nhau. Qua tên gọi thì các bạn cũng đã hiểu phần nào về ý nghĩa các kiểu JOIN này rồi, chúng ta cùng tiếp tục đi chi tiết hơn.

 

1. Vai trò của câu lệnh JOIN trong SQL

 

Thường hay được sử dụng với câu lệnh SELECT để giúp liên kết dữ liệu của các table.

 

[Database] DML 3 (Part 1)

 

[Database] DML 3 (Part 2)

 

2. Các loại câu lệnh JOIN trong SQL

 

Gồm 4 loại cơ bản sau:

 

INNER JOIN

 

OUTER JOIN

 

SELF JOIN

 

CROSS JOIN

 

3. Ý nghĩa và cách sử dụng câu lệnh JOIN trong SQL

 

3.1. Câu lệnh INNER JOIN

 

Là một kiểu JOIN để kết hợp các records từ 2 hoặc nhiều table có liên kết với nhau qua khoá ngoại (FOREIGN KEY).

 

Cú pháp

 

SELECT column_name(s)

 

FROM table1

 

INNER JOIN table2

 

ON table1.column_name = table2.column_name

 

Ví dụ

 

SELECT *

 

FROM doctor d

 

INNER JOIN account_system a

 

ON d.doctor_id = a.doctor_id;

 

Sử dụng câu lệnh trên để lấy ra thông tin các bác sĩ và thông tin tài khoản truy cập vào hệ thống của họ.

 

3.2. Câu lệnh OUTER JOIN

 

Cú pháp

 

SELECT column_name(s)

 

FROM table1

 

LEFT/RIGHT/FULL [OUTER] JOIN table2

 

ON table1.column_name = table2.column_name;

 

Ví dụ về LEFT JOIN

 

SELECT *

 

FROM doctor d

 

LEFT JOIN account_system a ON d.doctor_id = a.doctor_id;

 

Với mục đích lấy ra thông tin các bác sĩ và thông tin tài khoản truy cập vào hệ thống của họ. Và bác sĩ nào chưa có tài khoản cũng phải liệt kê ra.

 

Ví dụ về RIGHT JOIN

 

SELECT *

 

FROM doctor d

 

RIGHT JOIN account_system a ON d.doctor_id = a.doctor_id;

 

Ngược lại, với việc dùng RIGHT JOIN thì câu lệnh trên sẽ lấy ra các thông tin chung giữa 2 table doctor và account_system, kể cả các tài khoản không có xuất hiện ở table doctor.

 

Ví dụ về FULL JOIN

 

Với MySQL, không có hỗ trợ FULL JOIN thì chúng ta thực hiện kết hợp LEFT JOIN và RIGHT JOIN như bên dưới:

 

SELECT *

 

FROM doctor d

 

LEFT JOIN account_system a ON d.doctor_id = a.doctor_id

 

UNION ALL

 

SELECT *

 

FROM doctor d

 

RIGHT JOIN account_system a ON d.doctor_id = a.doctor_id;

 

3.3. Câu lệnh SELF JOIN

 

Là một kiểu JOIN mà table đó tự join với chính nó.

 

Cú pháp

 

SELECT column_name(s)

 

FROM table T1, table T2

 

WHERE condition;

 

Ví dụ

 

SELECT d1.middle_name, d1.last_name, d1.specialization_id,

 

d2.middle_name, d2.last_name, d2.specialization_id

 

FROM doctor d1, doctor d2

 

WHERE d1.specialization_id = d2.specialization_id

 

AND d1.doctor_id d2.doctor_id;

 

Mục đích câu lệnh truy vấn dùng để liệt kê ra các bác sĩ có cùng chuyên khoa với nhau, bằng cách join table doctor với chính nó và những bác sĩ nào có mã chuyên khoa (specialization_id) giống nhau thì hiển thị ra.

 

3.4. Câu lệnh CROSS JOIN

 

Là một kiểu JOIN mà trả về tất cả record ở các table, tức là một record ở table này sẽ join với từng record ở table còn lại mà không dựa trên điều kiện nào cả.

 

Lưu ý: Kết quả từ CROSS JOIN khả năng sẽ rất lớn.

 

Cú pháp

 

SELECT column_name(s)

 

FROM table1

 

CROSS JOIN table2;

 

Ví dụ

 

SELECT *

 

FROM doctor

 

CROSS JOIN account_system;

 

Câu lệnh trên sẽ lấy toàn bộ record của table doctor với từng record ở table account_system mà không cần bất kỳ điều kiện liên kết nào giữa các record.

 

Kết luận

 

Sơ lược lại các loại JOIN chúng ta đã tìm hiểu ở phần kiến thức hôm nay:

 

Khi bạn muốn lấy ra các record có liên kết giữa các table thì sử dụng INNER JOIN.

 

Ngoài việc lấy các record có liên kết và kể cả các record không liên kết ở một phía table thì hãy nghĩ đến OUTER JOIN, trong này sẽ có 3 loại: LEFT JOIN, RIGHT JOIN, FULL JOIN.

 

Còn SELF JOIN thì sử dụng khi cần liên kết các record trong chính table đó.

 

Cuối cùng là CROSS JOIN, dùng khi không cần bất kỳ điều kiện liên kết nào giữa các record trong các table.

 

Nguồn: codegym.vn/blog/2023/11/20/cach-su-dung-join-de-lien-ket-...

 

Ở bài hôm nay chúng ta cùng tiếp tục tìm hiểu phần kiến thức nâng cao để ứng biến xử lý trong các trường hợp đặc biệt khi xử lý dữ liệu. Đó là CURSOR.

 

1. CURSOR trong SQL là gì?

 

CURSOR hay còn gọi là con trỏ, là khái niệm giúp bạn truy cập từng dòng dữ liệu trong quá trình xử lý. Tức là với việc không thể sử dụng các khái niệm mình đã giới thiệu ở các bài vừa qua để giải quyết vấn đề, thì mới nghĩ đến CURSOR.

 

Khái niệm CURSOR trong SQL

 

2. Tại sao phải sử dụng CURSOR

 

Nó dùng để duyệt các record ở table hay ở các kết quả từ câu lệnh truy vấn.

 

Gồm 3 tính chất sau:

 

Read only: chúng ta không thể cập nhật dữ liệu ở table qua CURSOR.

 

Non scrollable: chỉ có thể duyệt qua các dòng theo thứ tự được lấy ra từ câu lệnh SELECT. Không thể duyệt theo thứ tự ngược lại. Thêm nữa, chúng ta không thể bỏ qua record hay nhảy đến record mong muốn được.

 

Asensitive/Insensitive: có 2 loại CURSOR. Với asensitive thì nó sẽ duyệt trên chính dữ liệu ở table, còn insensitive nó sẽ duyệt trên dữ liệu tạm, tức là dữ liệu được sao chép từ dữ liệu thật. Vì vậy, hiệu suất của asensitive sẽ nhanh hơn insensitive. Tuy nhiên, với bất kỳ sự thay đổi của data chính sẽ làm ảnh hưởng đến quá trình xử lý của asensitive, sẽ an toàn hơn nếu không có sự cập nhật nào về dữ liệu. Loại con trỏ ở MySQL là asensitive.

 

3. Hướng dẫn cách dùng CURSOR

 

Cú pháp

 

Để khai báo một con trỏ, ta dùng lệnh:

 

DECLARE cursor_name CURSOR FOR query;

 

Khởi tạo kết quả truy vấn để bắt đầu duyệt:

 

OPEN cursor_name;

 

Để lấy kết quả từ con trỏ đến biến:

 

FETCH cursor_name INTO variables list;

 

Dừng hoạt động và giải phóng bộ nhớ con trỏ:

 

CLOSE cursor_name;

 

Ví dụ

 

Để thực hiện gửi tin nhắn đến cho toàn bộ tài khoản của các bác sĩ trong hệ thống, mình tạo ra FUNCTION và đang áp dụng CURSOR để lấy ra danh sách tài khoản, theo định dạng:

 

[tài khoản 1];[tài khoản 2];[tài khoản 3]…

 

Trong bài toán này, có thể thấy CURSOR có tên là cur_account, đang đại diện cho một tài khoản. Sau đó kết quả sẽ được tổng hợp dần vào biến account_list.

 

delimiter //

 

CREATE FUNCTION sp_get_list_account()

 

RETURNS TEXT

 

DETERMINISTIC

 

BEGIN

 

DECLARE is_last_record BIT DEFAULT 0;

 

DECLARE account_doctor VARCHAR(30);

 

DECLARE account_list TEXT DEFAULT "";

 

DECLARE cur_account CURSOR FOR

 

SELECT `account` FROM account_system;

 

DECLARE CONTINUE HANDLER

 

FOR NOT FOUND SET is_last_record = 1;

 

OPEN cur_account;

 

for_each_account: LOOP

 

FETCH cur_account INTO account_doctor;

 

IF is_last_record = 1 THEN

 

LEAVE for_each_account;

 

END IF;

 

SET account_list = CONCAT(account_doctor, ";", account_list);

 

END LOOP for_each_account;

 

CLOSE cur_account;

 

RETURN account_list;

 

END //

 

delimiter ;

 

Kết luận

 

Hơi khá phức tạp phải không? Bạn cứ hiểu thế này, CURSOR nó sẽ duyệt qua từng record được trả về từ câu lệnh truy vấn. Cứ mỗi vòng lặp, CURSOR sẽ nhảy xuống record tiếp theo, cho đến khi nhảy đến hết record cuối cùng thôi. Nếu bạn đã từng thao tác đọc file ở các ngôn ngữ lập trình rồi, thì CURSOR nó cũng gần tương tự như vậy.

 

Mặc dù khó để hiểu nhưng CURSOR sẽ giúp bạn linh hoạt hơn trong cách sử dụng để xử lý dữ liệu.

 

Nguồn: codegym.vn/blog/2023/11/22/cursor-trong-sql/

 

Hôm nay, chúng ta cùng tìm hiểu một khái niệm khá hay trong SQL, đó là INDEX, một khái niệm thường xuyên gặp khi xử lý bộ dữ liệu lớn.

 

1. Index trong SQL là gì?

 

Là kỹ thuật đánh dấu ở table, giúp truy xuất dữ liệu nhanh hơn.

 

Khái niệm INDEX

 

2. Vai trò INDEX trong SQL

 

Giúp truy xuất dữ liệu nhanh hơn, với dữ liệu ít trùng lặp thì sẽ cải thiện hiệu suất một cách đáng kể. Và INDEX được ứng dụng rất nhiều vào các công cụ tìm kiếm để tăng tốc độ tìm kiếm.

 

3. Hướng dẫn cách dùng INDEX

 

Cú pháp

 

CREATE INDEX index_name

 

ON table_name (column1, column2, ...);

 

Ví dụ

 

Thực hiện tạo index cho cột last_name ở table doctor.

 

CREATE INDEX idx_doctor_name

 

ON doctor(last_name);

 

Khi truy vấn như bên dưới thì tốc độ đã được tối ưu. Bằng cách sử dụng câu lệnh EXPLAIN để phân tích cách chạy của câu lệnh, bạn sẽ thấy rằng, nó chỉ duyệt qua các record chứa theo đúng giá trị được gán vào last_name. Chứ không phải duyệt toàn bộ như trước đây.

 

SELECT *

 

FROM doctor

 

WHERE last_name = 'Đại';

 

4. Một số lưu ý khi sử dụng INDEX

 

Không nên sử dụng INDEX:

 

Ở các table nhỏ, ít dữ liệu.

 

Ở các column ít xuất hiện ở điều kiện trong câu query.

 

Ở các column phải cập nhật dữ liệu thường xuyên.

 

Kết luận

 

Với những kiến thức đã giới thiệu ở trên thì đó là những mô tả chung nhất cho INDEX, ngoài ra cũng còn khá nhiều loại INDEX, các bạn hãy tìm hiểu thêm nhé.

 

[nhúng]https://youtu.be/3Fq6LAB26m8[/embed]

 

Nguồn: codegym.vn/blog/2023/11/22/uu-diem-va-luu-y-ve-index-tron...

Xem thêm tại: codegym.vn/blog/2022/08/04/dao-tao-tester/

  

#codegym #hoclaptrinh #codingbootcamp #CNTT #laptrinhvien

Một số lưu ý khi tham gia khóa học lập trình game mobile - Bạn chỉ nên cân nhắc làm việc trong ngành này nếu thực sự đam mê game mobile.. Không tập trung vào các giải pháp dành riêng cho bất kì nền tảng nào bởi nó sẽ hạn chế nhiều lựa chọn của bạn trên thị trường ngay từ đầu. Bạn nên sử dụng Unity và phần mềm phụ trợ không máy chủ để tạo game mobile trong thời gian rảnh nếu bạn đang muốn học thêm kiến thức nhưng lại không phải trong ngành liên quan đến game mobile Bạn nên thành thạo Photoshop nếu muốn trở thành một lập trình viên game mobile chuyên nghiệp. - svlhijh2gh - codegym.vn/blog/2022/01/20/khoa-hoc-lap-trinh-game-moblie/

"Nghiên cứu trường hợp Module 2 của học viên CodeGym Huế đã được công bố! Khám phá những thành quả đáng kinh ngạc và trình bày bởi các bạn học viên tài năng. Đặt mục tiêu thành công với CodeGym ngay bây giờ!"

 

Xem ngay tại: codegym.vn/blog/2023/09/11/case-study-module-2-cua-hoc-vi...

Xem thêm tại :https://codegym.vn/blog/2022/08/08/tai-lieu-hoc-tester/

 

 

Trong khi thiết lập DB thì cần phải có các quy tắc để đảm bảo được lượng dữ liệu sẽ được chứa trong DB, bài hôm nay chúng ta cùng tìm hiểu các quy tắc này dựa qua các ràng buộc (constraints),

 

1. Vai trò của các ràng buộc (constraints) trong SQL

 

Các ràng buộc (constraints) thường được sử dụng như là quy tắc cho các dữ liệu ở table.

 

Ràng buộc dùng để giới hạn các dữ liệu đến table. Đảm bảo tính chính xác và rõ ràng của dữ liệu. Nếu có bất kì sự vi phạm nguyên tắc đến các ràng buộc thì thao tác đó sẽ bị huỷ.

 

Phạm vị của ràng buộc sẽ nằm ở mức độ cột hay table.

 

[Database] Constraint (Part 1)

 

[Database] Constraint (Part 2)

 

2. Các loại ràng buộc (constraints) trong SQL

 

Ở SQL, bao gồm các loại ràng buộc chung sau đây:

 

NOT NULL

 

UNIQUE

 

PRIMARY KEY

 

FOREIGN KEY

 

CHECK

 

DEFAULT

 

Cú pháp chung:

 

CREATE TABLE table_name (

 

column1 datatype constraint,

 

column2 datatype constraint,

 

column3 datatype constraint,

 

constraint

 

....

 

);

 

3. Hướng dẫn sử dụng các ràng buộc (constraints)

 

3.1. NOT NULL

 

Ý nghĩa

 

Mặc định, các cột sẽ có giá trị là NULL.

 

Khi định nghĩa cột là NOT NULL, thì sẽ bảo đảm người dùng không nhập được giá trị NULL đến cột, tức là cột phải có giá trị rõ ràng.

 

Ví dụ

 

CREATE TABLE doctor (

 

doctor_id INT,

 

first_name VARCHAR(10) NOT NULL,

 

middle_name VARCHAR(10)

 

);

 

Với ví dụ trên, bạn hãy thử INSERT hay UPDATE một record ở doctor với giá trị ở cột first_name là NULL, thì sẽ bị lỗi và không thể thực hiện các thao tác đó.

 

3.2. UNIQUE

 

Ý nghĩa

 

Ràng buộc UNIQUE sẽ đảm bảo giá trị các cột luôn khác nhau.

 

Với PRIMARY KEY thì cũng đảm bảo việc này, với PRIMARY KEY thì các column mặc định sẽ là khác nhau mà không cần phải khai báo.

 

Sử dụng UNIQUE sẽ áp dụng nhiều lần ở một table, nhưng với PRIMARY KEY thì không.

 

Ví dụ

 

CREATE TABLE doctor (

 

doctor_id INT,

 

first_name VARCHAR(10),

 

middle_name VARCHAR(10),

 

id_card VARCHAR(15),

 

UNIQUE (id_card)

 

);

 

Từ đó, đảm bảo id_card (căn cước công dân) sẽ không bị trùng lặp giữa các bác sĩ.

 

3.3. PRIMARY KEY

 

Ý nghĩa

 

Đảm bảo tính duy nhất ở mỗi record trong table.

 

Với primary key, thì nó sẽ là UNIQUE và NOT NULL.

 

Mỗi table chỉ có một khoá chính, khoá chính có thể chứa 1 hoặc nhiều cột.

 

Ví dụ

 

CREATE TABLE doctor (

 

doctor_id INT PRIMARY KEY,

 

first_name VARCHAR(10),

 

middle_name VARCHAR(10)

 

);

 

Hoặc có thể dùng cách 2 bên dưới.

 

CREATE TABLE doctor (

 

doctor_id INT,

 

first_name VARCHAR(10),

 

middle_name VARCHAR(10),

 

CONSTRAINT pk_doctor PRIMARY KEY (doctor_id)

 

);

 

Với cách 2 thì có thể tạo khoá chính với nhiều cột.

 

3.4. FOREIGN KEY

 

Ý nghĩa

 

Đảm bảo dữ liệu luôn được liên kết giữa 2 table, nếu khác thì quá trình INSERT, UPDATE sẽ bị huỷ.

 

FOREIGN KEY là một cột ở table, nó tham chiếu đến PRIMARY KEY ở table khác.

 

Ví dụ

 

CREATE TABLE specialization (

 

specialization_id INT PRIMARY KEY,

 

specialization_name VARCHAR(50)

 

);

 

CREATE TABLE doctor (

 

doctor_id INT PRIMARY KEY,

 

`first_name` VARCHAR (10),

 

`middle_name` VARCHAR (10),

 

`last_name` VARCHAR (10),

 

date_of_birth DATE,

 

qualification INT,

 

specialization_id INT,

 

FOREIGN KEY (specialization_id) REFERENCES specialization(specialization_id)

 

);

 

Với cột specialization_id (chuyên khoa) ở table doctor, thì giá trị sẽ chỉ thuộc ở table specialization, nếu cố tình nhập giá trị khác thì sẽ bị lỗi và thao tác bị huỷ bỏ.

 

3.5. CHECK

 

Ý nghĩa

 

Giới hạn phạm vi giá trị ở cột.

 

Hay nói cách khác, ràng buộc này sẽ giúp kiểm tra giá trị nhập vào phải khớp với điều kiện đã được khai báo với cột đó.

 

Ví dụ

 

CREATE TABLE doctor (

 

doctor_id INT PRIMARY KEY,

 

first_name VARCHAR(10),

 

middle_name VARCHAR(10),

 

qualification INT,

 

CHECK (qualification >= 0)

 

);

 

Với cách khai báo như trên, thì số năm kinh nghiệm (qualification) của doctor phải lớn hơn hoặc bằng 0, nếu nhập số âm sẽ báo lỗi.

 

3.6. DEFAULT

 

Ý nghĩa

 

Dùng để gán giá trị mặc định đến một cột, trong trường hợp người dùng không nhập giá trị cho cột này.

 

Ví dụ

 

CREATE TABLE doctor (

 

doctor_id INT PRIMARY KEY,

 

first_name VARCHAR(10),

 

middle_name VARCHAR(10),

 

qualification INT DEFAULT 1

 

);

 

Nếu người dùng không nhập giá trị cho cột qualification, thì giá trị mặc định sẽ là 1.

 

Kết luận

 

Để giữ được dữ liệu luôn chuẩn xác, dễ thao tác và bảo trì trong tương lai, thì các ràng buộc (constraints) cũng là một yếu tố khá quan trọng.

 

TẠO BẢNG bác sĩ (

 

bác sĩ_id INT,

 

first_name VARCHAR(10),

 

tên đệm VARCHAR(10),

 

Ràng buộc pk_doctor KHÓA CHÍNH (doctor_id)

 

);

 

Nguồn: codegym.vn/blog/2023/11/19/cac-rang-buoc-nen-biet-constra...

Khóa học lập trình web Online - Chỉ với 2,5 tháng bạn hoàn toàn có thể làm chủ các kiến thức căn bản về HTML và CSS. Khóa học HTML & CSS căn bản Online tại CodeGym sẽ giúp bạn sử dụng thành tạo Framework Bootstrap, Sass, có kiến thức căn bản về UX/UI. Bạn có thể thiết kế website căn bản, website hoàn chỉnh… ===> Xem thêm bài viết: Các trang web học lập trình miễn phí cho người mới bắt đầu Với lộ trình giảng dạy rõ ràng – Thời gian linh động, khoá học nền tảng lập trình Online tại CodeGym sẽ cung cấp các kiến thức lập trình web nền tảng cho học viên. Nội dung khóa học rõ ràng liên quan đến các bài giảng về tổng quan lập trình, cấu trúc cơ bản, hàm và đối tượng, thực hành dự án cuối khoá. Khoá học lập trình web tại CodeGym Với khóa học này, bạn có thể thành thạo kiến thức Front – End nói riêng và kiến thức lập trình web nói chung. Kết thúc khóa học web Front – End Online trong 9 tháng đào tạo, học viên sẽ có đủ năng lực tham gia trực tiếp vào các dự án xây dựng website, phần mềm website và ứng dụng. ===> Xem thêm chi tiết các khóa học Online khác tại CodeGym: Khóa học web Back – End Online Khóa học Python căn bản Online - jq13ky9dpd - codegym.vn/blog/2022/05/13/hoc-lap-trinh-vien-web/

Học lập trình online miễn phí thông qua các trang web học lập trình là một phương pháp học tiết kiệm mà hiệu quả được rất nhiều người mới học áp dụng. Tuy nhiên, hiện nay có rất nhiều các trang web học lập trình, các khóa học lập trình miễn phí xuất hiện tràn lan trên Internet. Vì vậy, rất nhiều người không biết phải làm thế nào để tìm được các trang học lập trình uy tín, chất lượng tốt.

#codegymhanoi #php #java #hoclaptrinh #tuhoclaptrinhtudau

hanoi.codegym.vn/blog/hoc-lap-trinh-online-mien-phi/

Công nghệ thông tin nên học trường nào ở Hà Nội? – Câu trả lời

 

Nếu bạn là sinh viên lớp 12, đang phân vân không biết nên lựa chọn thế nào cho phù hợp. Liệu lĩnh vực công nghệ thông tin bạn muốn làm bây giờ có thật sự là đam mê không? Đây là bài viết dành cho bạn! Trong bài viết này, CodeGym sẽ gợi ý cho bạn công nghệ thông tin nên học trường nào ở Hà Nội. Đặc biệt là những điều cần biết thêm về chuyên ngành này.

 

#codegym #hoclaptrinh #codingbootcamp #CNTT #laptrinhvien #daotaolaptrinh

 

codegym.vn/blog/2021/01/19/cong-nghe-thong-tin-nen-hoc-tr...

 

Với các kiến thức bài trước thì câu lệnh câu lệnh truy vấn cũng đã được hỗ trợ khá nhiều thứ như IN/EXISTS, LIKE, UNION và JOIN. Thì ở phần bài hôm nay, chúng ta cùng tiếp tục tìm hiểu các khái niệm khác, cũng sẽ hỗ trợ nhiều hơn cho câu lệnh truy vấn như là SQL FUNCTIONS, bộ đôi GROUP BY và HAVING, cuối cùng là ORDER BY.

 

1. Vai trò của FUNCTION, GROUP BY và ORDER BY trong SQL

 

Các từ khoá hôm nay cũng sẽ được sử dụng với câu lệnh SELECT để giúp truy xuất dữ liệu đa dạng hơn. Ta có thể thấy rõ ý nghĩa của các từ khoá này qua tên gọi của nó như FUNCTION là cách áp dụng hàm vào câu truy vấn, GROUP BY dùng để gộp nhóm các dòng dữ liệu, ORDER BY sử dụng để sắp xếp dữ liệu.

 

[Database] DML 4 (Part 3)

 

[Database] DML 4 (Part 2)

 

2. Ý nghĩa và cách sử dụng câu lệnh JOIN trong SQL

 

2.1. SQL FUNCTIONS

 

Mỗi DBMS sẽ có sư thay đổi về cú pháp SQL và bộ FUNCTIONS được sử dụng ở các SQL cũng sẽ có khác nhau đôi chút, hãy tham khảo FUNCTIONS ở MySQL:

 

www.w3schools.com/mysql/mysql_ref_functions.asp

 

Nếu bạn muốn sử dụng FUNCTION ở DBMS nào thì hãy tìm kiếm theo tên DBMS đó.

 

FUNCTION có 3 loại chính sau:

 

Dùng để xử lý chuỗi (String).

 

Dùng để xử lý số.

 

Thao tác với ngày, tháng, năm.

 

Và một số FUNCTION nâng cao.

 

Ví dụ

 

Muốn tính độ dài tên của mỗi bác sĩ.

 

SELECT last_name, CHAR_LENGTH(last_name)

 

FROM doctor;

 

Để liệt kê đầy đủ Họ và Tên các bác sĩ

 

SELECT CONCAT(first_name, ' ', middle_name, ' ', last_name) as full_name

 

FROM doctor;

 

2.2. Câu lệnh GROUP BY

 

Là câu lệnh để gộp nhóm các record có cùng giá trị column.

 

Thường được sử dụng chung với các hàm gộp (aggregate):

 

COUNT()

 

MAX()

 

MIN()

 

SUM()

 

AVG()

 

Cú pháp

 

SELECT column_name(s)

 

FROM table_name

 

WHERE condition

 

GROUP BY column_name(s)

 

ORDER BY column_name(s);

 

Ví dụ

 

Để lấy ra số lượng bác sĩ của mỗi chuyên khoa, thì thực hiện như bên dưới. Mình sử dụng GROUP BY để phân nhóm các bác sĩ cùng chuyên khoa, sau đó thực hiện đếm số lượng bác sĩ ở mỗi nhóm bằng cách dùng hàm COUNT.

 

SELECT specialization_id, COUNT(*)

 

FROM doctor

 

GROUP BY specialization_id;

 

2.3. Câu lệnh HAVING

 

Được sử dụng để chứa các điều kiện là hàm gộp.

 

Bởi vì WHERE không làm được điều này.

 

Cú pháp

 

SELECT column_name(s)

 

FROM table_name

 

WHERE condition

 

GROUP BY column_name(s)

 

HAVING condition

 

ORDER BY column_name(s);

 

Ví dụ

 

SELECT specialization_id, COUNT(*) quantity

 

FROM doctor

 

GROUP BY specialization_id

 

HAVING quantity >= 3;

 

Tiếp tục ví dụ ở phần 2, muốn lấy ra các chuyên khoa với nhiều hơn 3 bác sĩ thì kết hợp HAVING sau GROUP BY.

 

2.4. Câu lệnh ORDER BY

 

Câu lệnh để sắp xếp các records.

 

Với 2 điều kiện sắp xếp:

 

ASC: ascending (mặc định)

 

DESC: descending

 

Cú pháp

 

SELECT column1, column2, ...

 

FROM table_name

 

ORDER BY column1, column2, ... ASC|DESC;

 

Ví dụ

 

SELECT *

 

FROM doctor

 

ORDER BY date_of_birth DESC;

 

Câu lệnh trên dùng để lấy ra danh sách các bác sĩ theo thứ tự: ai lớn tuổi nhất thì hiển thị ra trước.

 

Kết luận

 

Với việc nắm được toàn bộ các câu lệnh được sử dụng với DML thì bạn có thể tự tin truy vấn thoải mái rồi, nếu phần nào chưa rõ thì có thể xem kĩ ở phần video.

 

ift.tt/6FqT3zU

 

Did you mean www.w3schools.cơm/mysql/mysql_ref_functions.asp

 

Nguồn: codegym.vn/blog/2023/11/20/truy-van-qua-function-group-by...

1 2 ••• 5 7 9 10 11