View allAll Photos Tagged codegym
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
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.
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.
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.
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
Xem thêm tại: codegym.vn/blog/2022/09/14/tester-can-hoc-nhung-gi/
#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...
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
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.
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...
Bạn muốn làm quen với Java nhưng chưa biết nên bắt đầu từ đâu. Bài viết dưới đây sẽ chia sẻ cho bạn những vấn đề bạn cần biết về một lộ trình học lập trình Java đấy!
Xem thêm: saigon.codegym.vn/2022/12/07/bat-mi-lo-trinh-hoc-lap-trin...
Ở các phần chia sẻ trước đây, mình đã có đề cập đến FUNCTION, nhưng đó là các FUNCTION có sẵn trong thư viện của SQL (như các hàm CHAR_LENGTH(), CONCAT(), CURDATE()…), chúng ta có thể gọi ra và sử dụng luôn.
Nhưng với các vấn đề mà các FUNCTION không thể giải quyết được cho chúng ta. Thì chúng ta phải tự tạo ra một FUNCTION để sử dụng, hay còn gọi là USER FUNCTION.
1. USER FUNCTION là gì?
Cũng là một đoạn chương trình, bao gồm các câu lệnh SQL để thực hiện cho một nghiệp vụ cụ thể. Và thường được dùng chung với các câu lệnh truy vấn.
Create User function
2. Mục đích sử dụng FUNCTION
Nó là tập hợp các khối lệnh, dùng để tái sử dụng:
Trả về giá trị đơn.
Có thể sử dụng chung với câu lệnh SQL hoặc các dạng khối lệnh khác.
FUNCTION có thể truyền tham số và xử lý dữ liệu.
3. Hướng dẫn cách tạo FUNCTION
3.1. Tạo FUNCTION
Cú pháp
CREATE FUNCTION func_name ([parameter[,...]])
RETURNS datatype
[NOT] DETERMINISTIC
BEGIN
sql_statement
RETURN value;
END;
Ví dụ
Mình tạo ra FUNCTION để trả về đầy đủ họ tên của một người với 3 giá trị được truyền vào: tên (p_first_name), tên lót (p_middle_name), họ (p_last_name).
delimiter //
CREATE FUNCTION get_full_name (p_first_name VARCHAR(10)
, p_middle_name VARCHAR(10)
, p_last_name VARCHAR(10))
RETURNS VARCHAR(30)
DETERMINISTIC
BEGIN
DECLARE result VARCHAR(30);
SET result = (SELECT CONCAT(p_first_name, ' ', p_middle_name, ' ', p_last_name));
RETURN result;
END //
delimiter ;
Sau đó, mình sử dụng nó để lấy họ và tên của các bác sĩ, như thế này:
SELECT get_full_name(first_name, middle_name, last_name)
FROM doctor;
3.2. Xoá FUNCTION
Cú pháp
DROP FUNCTION func_name
Ví dụ
Thực hiện xoá function vừa tạo bên trên
DROP FUNCTION get_full_name
4. Tham số và biến ở FUNCTION
Ở FUNCTION sẽ chỉ có 1 dạng tham số là IN, tức là nó giúp truyền giá trị vào hàm (Xem thêm ví dụ ở video để nắm rõ hơn).
Còn muốn tạo ra biến lưu trữ giá trị khi thao tác với dữ liệu, thì giống hệt như SP:
DECLARE total INT DEFAULT 0;
SET total = 10;
Mình đang thực hiện tạo ra biến total có kiểu dữ liệu là số, với giá trị mặc định là 0. Sau đó tiếp tục thực hiện phép gán bởi từ khoá SET, giá trị của total cuối cùng là 10.
Kết luận
Qua 2 bài FUNCTION và STORED PROCEDURE, chúng ta có thể thấy 2 khái niệm này gần giống như nhau. Có một điểm khác biệt rõ nhất là ở FUNCTION, chúng ta có thể trả về giá trị, tức là dùng được từ khoá RETURN, còn ở SP thì không thể thực hiện được việc này.
Nguồn: codegym.vn/blog/2023/11/21/tao-va-su-dung-user-function/
11 tài liệu tự học lập trình Java hay nhất cho người mới bắt đầu
Chắc hẳn dân lập trình ai cũng biết về tầm quan trọng của ngôn ngữ lập trình Java. Ứng với độ nổi tiếng của nó thì cũng có rất nhiều tài liệu. Việc này khiến người muốn tìm tài liệu tự học lập trình Java không biết nên học thế nào. Nếu bạn là người mới có thể bắt đầu với 11 tài liệu tuyển chọn này.
#codegym #hoclaptrinh #codingbootcamp #CNTT #laptrinhvien #daotaolaptrinh
Ngôn ngữ PHP: Đây là mã nguồn mở, ổn định và cài đặt một cách đơn giản, điều này sẽ giúp cho doanh nghiệp tiết kiệm được một khoản chi phí khá lớn so với những ngôn ngữ khác. Đồng thời để phát triển một trang web và những ứng dụng web với PHP sẽ giúp website của bạn linh hoạt, trao đổi qua lại tốt hơn. Chính vì những điều này mà ngôn ngữ PHP ngày càng được các doanh nghiệp lựa chọn để thiết kế web khá phổ biến. HTML: Đây là một loại ngôn ngữ đánh dấu siêu văn bản, được thiết kế để tạo nên cac trag web với những nội dung được giải thích trên các website. Khi truy cập những trang web thì mọi người có thể dẫn được nhiều trang khác nhau, mỗi trang là một tài liệu hoặc một tập tin HTML. JavaScript: Đây là loại ngôn ngữ hoàn toàn không mất phí và dễ dàng tác động qua lại, giúp điều khiển và tránh những việc giải quyết từ phía server. Nếu mọi người nắm vững kiến thức JavaScript, mọi người dễ dàng lĩnh hội được những công nghệ mới như AJAX, ATLAS,… - xfwux6gjmf - codegym.vn/blog/2021/12/06/khoa-hoc-lap-trinh-web/
📢 Khai giảng lớp lập trình tháng 9/2023 tại CodeGym Sài Gòn! Đừng bỏ lỡ cơ hội học tập và trở thành nhà lập trình chuyên nghiệp tại trung tâm đào tạo uy tín này. Xem chi tiết chương trình và đăng ký tại: codegym.vn/blog/2023/09/11/khai-giang-lop-lap-trinh-thang... #codegym #laptrinh #khaigiang