+2

Những kiến thức cơ bản về SQL? #1

SQL là gì?

SQL, viết tắt của "Structured Query Language," là một ngôn ngữ lập trình được sử dụng để tương tác và quản lý cơ sở dữ liệu. SQL là một ngôn ngữ tiêu chuẩn cho việc xử lý dữ liệu trong các hệ thống quản trị cơ sở dữ liệu quan hệ (RDBMS) và cũng có thể sử dụng trong việc xử lý dữ liệu dòng dữ liệu quan hệ (RDSMS). Ban đầu được phát triển bởi IBM vào những năm 1970.

SQL bao gồm nhiều thành phần, mỗi thành phần có mục đích riêng biệt trong việc giao tiếp với cơ sở dữ liệu:

  1. Truy vấn (Queries): Cho phép bạn truy xuất dữ liệu từ cơ sở dữ liệu. Lệnh SELECT thường được sử dụng để thực hiện việc này.

  2. Ngôn ngữ Định nghĩa Dữ liệu (DDL): Cho phép bạn tạo, sửa đổi hoặc xóa cơ sở dữ liệu và các đối tượng liên quan như bảng, chế độ xem, vv. Các lệnh bao gồm CREATE, ALTER, DROP, và TRUNCATE.

  3. Ngôn ngữ Thao tác Dữ liệu (DML): Cho phép bạn quản lý dữ liệu trong các đối tượng cơ sở dữ liệu. Các lệnh này bao gồm SELECT, INSERT, UPDATE, và DELETE.

  4. Ngôn ngữ Kiểm soát Dữ liệu (DCL): Bao gồm các lệnh như GRANT và REVOKE, chủ yếu là để quản lý quyền, phân quyền và các nhiệm vụ quản lý cấp độ kiểm soát khác cho hệ thống cơ sở dữ liệu.

SQL có nhiều hệ quản trị cơ sở dữ liệu khác nhau như Oracle Database, Microsoft SQL Server và MySQL. Mặc dù chúng khác nhau về nhiều mặt, nhưng tất cả các cơ sở dữ liệu SQL sử dụng các lệnh ngôn ngữ chung - SQL.


Relational Databases?

Cơ sở dữ liệu quan hệ là một hệ thống lưu trữ dữ liệu có cấu trúc sử dụng bảng để tổ chức thông tin. Dưới đây là một số điểm chính:

  • Bảng: Dữ liệu được lưu trữ trong các bảng. Mỗi bảng tương ứng với một loại thông tin cụ thể, ví dụ: một bảng cho thông tin người dùng và một bảng khác cho sản phẩm.

    • Cột: Mỗi bảng có các cột để đại diện cho các thuộc tính riêng biệt. Ví dụ: bảng người dùng có thể có các cột như "tên," "địa chỉ email," và "tuổi."

    • Hàng: Mỗi hàng trong bảng đại diện cho một mục cụ thể hoặc bản ghi. Ví dụ: một hàng trong bảng người dùng có thể chứa thông tin về một người dùng cụ thể, như tên, địa chỉ email và tuổi.

  • Khóa chính: Mỗi bảng có một cột hoặc một nhóm cột được xác định là khóa chính, giúp xác định một cách duy nhất từng hàng trong bảng.

  • Quan hệ: Dữ liệu trong các bảng có thể liên kết với nhau thông qua các quan hệ. Ví dụ: thông tin về một người dùng có thể được liên kết với các bản ghi trong bảng đơn hàng thông qua một trường chung như ID người dùng.

  • Câu truy vấn: Để truy xuất dữ liệu, chúng ta sử dụng ngôn ngữ truy vấn SQL để định rõ yêu cầu. Ví dụ: "SELECT tên FROM người dùng WHERE tuổi > 30" truy vấn tên của các người dùng có tuổi trên 30.

  • Tính toàn vẹn dữ liệu: Cơ sở dữ liệu quan hệ thường có các quy tắc để đảm bảo tính toàn vẹn dữ liệu, bao gồm ràng buộc duy nhất, ràng buộc khóa ngoại và các quy tắc kiểm tra.

Cơ sở dữ liệu quan hệ thường được sử dụng rộng rãi trong các ứng dụng và hệ thống để lưu trữ và quản lý dữ liệu một cách có tổ chức, dễ dàng truy xuất và tương tác.


RDBMS Benefits and Limitations

Hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS - Relational Database Management System) có nhiều ưu điểm và hạn chế:

Ưu điểm:

  1. Tính toàn vẹn dữ liệu: RDBMS thường áp dụng các ràng buộc để đảm bảo tính toàn vẹn dữ liệu, bao gồm ràng buộc duy nhất (unique constraints), ràng buộc khóa ngoại (foreign key constraints), và các quy tắc kiểm tra (check constraints).

  2. ACID Transactions: RDBMS hỗ trợ ACID (Atomicity, Consistency, Isolation, Durability) transactions, làm cho nó phù hợp cho các ứng dụng đòi hỏi độ tin cậy cao và tính nhất quán trong giao dịch dữ liệu.

  3. Dữ liệu có cấu trúc: RDBMS sử dụng cấu trúc bảng để lưu trữ dữ liệu, giúp tổ chức dữ liệu một cách rõ ràng và dễ dàng truy xuất.

  4. Truy vấn mạnh mẽ: SQL (Structured Query Language) cung cấp một cách mạnh mẽ để truy vấn và thao tác dữ liệu trong RDBMS. Ngôn ngữ này có cú pháp cụ thể và mạnh mẽ cho việc tìm kiếm, lọc và xử lý dữ liệu.

  5. Quản lý dữ liệu phức tạp: RDBMS thích hợp cho việc quản lý dữ liệu có mối quan hệ phức tạp và cần tổ chức dữ liệu một cách có cấu trúc.

Hạn chế:

  1. Khó mở rộng theo chiều ngang: RDBMS thường khó mở rộng khi cần xử lý tải cao hoặc có nhu cầu mở rộng theo chiều ngang (horizontal scalability).

  2. Không phù hợp cho dữ liệu không cấu trúc: RDBMS không hiệu quả cho việc lưu trữ và truy xuất dữ liệu không có cấu trúc như dữ liệu văn bản không cấu trúc hoặc dữ liệu đa phương tiện.

  3. Yêu cầu kiến thức phức tạp: Sử dụng RDBMS đòi hỏi kiến thức về cơ sở dữ liệu và SQL, điều này có thể là một ngưỡng đối với người mới vào lĩnh vực này.

  4. Có thể gặp vấn đề về hiệu suất: Trong một số trường hợp, RDBMS có thể gặp khó khăn trong việc xử lý tải cao và yêu cầu tối ưu hóa để đảm bảo hiệu suất.

  5. Chi phí cao: Một số RDBMS thương thúc đẩy chi phí cao, bao gồm giấy phép phần mềm và quản trị hệ thống.

Lựa chọn sử dụng RDBMS hay không phụ thuộc vào yêu cầu cụ thể của dự án, đặc điểm dữ liệu, và khả năng kỹ thuật của nhóm phát triển. Trong một số trường hợp, một hệ thống RDBMS có thể là lựa chọn tốt, trong khi trong những trường hợp khác, dữ liệu có thể phù hợp với một hệ thống NoSQL hoặc các giải pháp lưu trữ khác.

SQL và NoSQL?

SQL và NoSQL là hai hệ thống cơ sở dữ liệu khác nhau với các đặc điểm riêng biệt. Dưới đây là một so sánh giữa chúng:

SQL (Cơ sở dữ liệu quan hệ):

  1. Cấu trúc dữ liệu: SQL sử dụng bảng và các quan hệ giữa chúng để tổ chức dữ liệu. Dữ liệu phải tuân thủ một schema cụ thể.
  2. Truy vấn: Sử dụng SQL (Structured Query Language) để truy xuất và thao tác dữ liệu. Truy vấn phải tuân theo cú pháp cụ thể.
  3. Tính toàn vẹn dữ liệu: SQL thường áp dụng các ràng buộc để đảm bảo tính toàn vẹn dữ liệu như ràng buộc duy nhất và khóa ngoại.
  4. Độ tin cậy và ACID: SQL cung cấp tính toàn vẹn dữ liệu và ACID (Atomicity, Consistency, Isolation, Durability) transactions, làm cho nó thích hợp cho các ứng dụng yêu cầu độ tin cậy cao.

NoSQL (Cơ sở dữ liệu không quan hệ):

  1. Cấu trúc dữ liệu linh hoạt: NoSQL cho phép lưu trữ dữ liệu không cần tuân thủ một schema cụ thể. Dữ liệu có thể có cấu trúc, bán cấu trúc hoặc không cấu trúc.
  2. Truy vấn linh hoạt: Truy vấn trong NoSQL thường linh hoạt hơn và có thể được điều chỉnh tùy theo nhu cầu ứng dụng.
  3. Tính mở rộng: NoSQL thường dễ dàng mở rộng theo chiều ngang (horizontal scalability) để xử lý tải lớn và dữ liệu phân tán.
  4. Hiệu năng cao và phân tán: NoSQL thích hợp cho các ứng dụng yêu cầu hiệu suất cao và khả năng phân tán.

Tùy thuộc vào yêu cầu cụ thể của ứng dụng, bạn có thể chọn giữa SQL và NoSQL:

  • SQL thường được sử dụng trong các ứng dụng yêu cầu tính toàn vẹn dữ liệu cao như hệ thống tài chính hoặc quản lý kho.
  • NoSQL thường được sử dụng trong các ứng dụng yêu cầu tính mở rộng, linh hoạt và hiệu suất cao như các ứng dụng web lớn, trò chơi trực tuyến, hoặc lưu trữ dữ liệu không cấu trúc như dữ liệu truyền thông xã hội.

Lựa chọn giữa SQL và NoSQL phụ thuộc vào mục tiêu và yêu cầu cụ thể của dự án của bạn. Có thể sử dụng cả hai loại cơ sở dữ liệu trong một hệ thống nếu cần thiết.

Basic SQL Syntax

Tất cả kiến thức cơ bản về cú pháp SQL mà bạn cần biết bao gồm các từ khóa, kiểu dữ liệu, toán tử và các câu lệnh thông dụng sau:

SQL keywords:

  • SQL keywords là các từ đã được định nghĩa sẵn trong SQL để thực hiện các tác vụ cụ thể.
  • Các từ khóa quan trọng: SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, FROM, WHERE, và JOIN.

Các câu lệnh SQL thông dụng:

  1. SELECT: Sử dụng để truy vấn dữ liệu từ cơ sở dữ liệu. Ví dụ:

    SELECT * FROM employees WHERE department = 'IT';
    
  2. INSERT: Sử dụng để thêm dữ liệu mới vào cơ sở dữ liệu. Ví dụ:

    INSERT INTO products (product_name, price) VALUES ('Laptop', 999);
    
  3. UPDATE: Sử dụng để cập nhật dữ liệu hiện có trong cơ sở dữ liệu. Ví dụ:

    UPDATE customers SET email = 'new@email.com' WHERE customer_id = 1;
    
  4. DELETE: Sử dụng để xóa dữ liệu từ cơ sở dữ liệu. Ví dụ:

    DELETE FROM orders WHERE order_id = 1001;
    

Đây chỉ là những khái niệm cơ bản về SQL. SQL có thể trở nên phức tạp hơn khi bạn bắt đầu làm việc với cơ sở dữ liệu lớn và phức tạp hơn. Tuy nhiên, kiến thức cơ bản về cú pháp SQL này là một nền tảng quan trọng cho việc làm việc với cơ sở dữ liệu.

Data Type:

Dưới đây là ví dụ đơn giản cho mỗi kiểu dữ liệu trong SQL:

  1. INT (Kiểu số): Lưu trữ giá trị số nguyên.

    CREATE TABLE students (
        student_id INT,
        student_name VARCHAR(50)
    );
    
  2. DECIMAL (Kiểu số thập phân và phân số): Lưu trữ giá trị số thập phân có độ chính xác cố định.

    CREATE TABLE products (
        product_id INT,
        product_name VARCHAR(50),
        price DECIMAL(10, 2)
    );
    
  3. CHAR (Kiểu chuỗi có độ dài cố định): Lưu trữ chuỗi với độ dài cố định.

    CREATE TABLE countries (
        country_code CHAR(2),
        country_name VARCHAR(50)
    );
    
  4. VARCHAR (Kiểu chuỗi có độ dài thay đổi): Lưu trữ chuỗi với độ dài thay đổi.

    CREATE TABLE employees (
        employee_id INT,
        employee_name VARCHAR(100)
    );
    
  5. DATE (Kiểu ngày): Lưu trữ giá trị ngày.

    CREATE TABLE orders (
        order_id INT,
        order_date DATE
    );
    
  6. DATETIME (Kiểu ngày giờ): Lưu trữ giá trị ngày và giờ.

    CREATE TABLE log_data (
        log_id INT,
        log_timestamp DATETIME
    );
    
  7. BINARY (Kiểu chuỗi nhị phân): Lưu trữ chuỗi dưới dạng nhị phân.

    CREATE TABLE images (
        image_id INT,
        image_data BINARY
    );
    
  8. BOOLEAN (Kiểu true/false): Lưu trữ giá trị logic true hoặc false.

    CREATE TABLE tasks (
        task_id INT,
        task_name VARCHAR(50),
        task_completed BOOLEAN
    );
    

Các ví dụ trên chỉ là một phần nhỏ của cách bạn có thể sử dụng các kiểu dữ liệu trong SQL. Tùy thuộc vào yêu cầu cụ thể của dự án, bạn có thể điều chỉnh độ dài, độ chính xác và loại dữ liệu để phù hợp với nhu cầu của bạn.

Toán tử:

Các toán tử trong SQL được sử dụng để thực hiện các phép toán như so sánh và tính toán số học. Chúng rất quan trọng trong việc tạo câu truy vấn. Toán tử SQL được chia thành các loại sau:

  1. Toán tử Số học: Chúng được sử dụng để thực hiện các phép toán toán học. Dưới đây là danh sách các toán tử này:

    • + : Phép cộng
    • - : Phép trừ
    • * : Phép nhân
    • / : Phép chia
    • % : Phép chia lấy dư

    Ví dụ:

    SELECT product, price, (price * 0.18) as tax
    FROM products;
    
  2. Toán tử So sánh: Chúng được sử dụng trong mệnh đề WHERE để so sánh một biểu thức với một biểu thức khác. Một số toán tử so sánh bao gồm:

    • = : Bằng
    • != hoặc <> : Không bằng
    • > : Lớn hơn
    • < : Nhỏ hơn
    • >=: Lớn hơn hoặc bằng
    • <=: Nhỏ hơn hoặc bằng

    Ví dụ:

    SELECT name, age
    FROM students
    WHERE age > 18;
    
  3. Toán tử Logic: Chúng được sử dụng để kết hợp kết quả của hai điều kiện khác nhau. Bao gồm:

    • AND: Trả về true nếu cả hai điều kiện đều đúng.
    • OR : Trả về true nếu ít nhất một trong hai điều kiện là đúng.
    • NOT: Trả về giá trị boolean ngược lại của điều kiện.

    Ví dụ:

    SELECT * 
    FROM employees
    WHERE salary > 50000 AND age < 30;
    
  4. Toán tử Bitwise: Chúng thực hiện các phép toán trên mức bit trên dữ liệu đầu vào. Dưới đây là danh sách các toán tử này:

    • & : Bitwise AND
    • | : Bitwise OR
    • ^ : Bitwise XOR

    Toán tử bitwise thường ít được sử dụng hơn so với các loại toán tử khác trong SQL.

Nhớ rằng các toán tử này chủ yếu được sử dụng trong mệnh đề WHERE của câu truy vấn SQL để lọc và truy xuất dữ liệu dựa trên các điều kiện cụ thể.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí