Các nguyên tắc cơ bản về SQL

Tìm hiểu về DDL, DML và JOIN

Ngôn ngữ truy vấn có cấu trúc là một trong những khối xây dựng cơ bản của kiến ​​trúc cơ sở dữ liệu hiện đại. SQL định nghĩa các phương thức được sử dụng để tạo và thao tác cơ sở dữ liệu quan hệ trên tất cả các nền tảng chính. Thoạt nhìn, ngôn ngữ có vẻ đáng sợ và phức tạp, nhưng nó không phải là tất cả những khó khăn.

Giới thiệu về các nguyên tắc cơ bản đằng sau SQL sẽ xem xét một số lệnh chính được sử dụng để tạo và sửa đổi cơ sở dữ liệu.

Giới thiệu về SQL

Cách phát âm chính xác của SQL là một vấn đề gây tranh cãi trong cộng đồng cơ sở dữ liệu. Trong tiêu chuẩn SQL của nó, Viện tiêu chuẩn quốc gia Mỹ tuyên bố rằng cách phát âm chính thức là "es queue el." Tuy nhiên, nhiều chuyên gia cơ sở dữ liệu đã đưa ra cách phát âm tiếng lóng "phần tiếp theo". Sự lựa chọn là của bạn.

SQL có nhiều hương vị. Cơ sở dữ liệu Oracle sử dụng PL / SQL độc quyền của nó. Microsoft SQL Server sử dụng Transact-SQL. Tất cả các biến thể dựa trên chuẩn ANSI SQL tiêu chuẩn công nghiệp. Phần giới thiệu này sử dụng các lệnh SQL tuân thủ ANSI hoạt động trên bất kỳ hệ thống cơ sở dữ liệu quan hệ hiện đại nào.

DDL và DML

Các lệnh SQL có thể được chia thành hai ngôn ngữ chính. Ngôn ngữ định nghĩa dữ liệu (DDL) chứa các lệnh được sử dụng để tạo và hủy các cơ sở dữ liệu và các đối tượng cơ sở dữ liệu. Sau khi cấu trúc cơ sở dữ liệu được định nghĩa với DDL, người quản trị cơ sở dữ liệu và người dùng có thể sử dụng Ngôn ngữ thao tác dữ liệu (DML) để chèn, lấy và sửa đổi dữ liệu chứa trong nó.

Lệnh ngôn ngữ định nghĩa dữ liệu

Ngôn ngữ định nghĩa dữ liệu được sử dụng để tạo và phá hủy cơ sở dữ liệu và các đối tượng cơ sở dữ liệu. Các lệnh này chủ yếu được sử dụng bởi các quản trị viên cơ sở dữ liệu trong các giai đoạn thiết lập và loại bỏ của một dự án cơ sở dữ liệu. Dưới đây là một cái nhìn về cấu trúc và cách sử dụng của bốn lệnh DDL cơ bản:

TẠO NÊN. Cài đặt hệ thống quản lý cơ sở dữ liệu trên máy tính cho phép bạn tạo và quản lý nhiều cơ sở dữ liệu độc lập. Ví dụ, bạn có thể muốn duy trì một cơ sở dữ liệu địa chỉ liên lạc của khách hàng cho bộ phận bán hàng của bạn và một cơ sở dữ liệu nhân sự cho bộ phận nhân sự của bạn. Lệnh CREATE được sử dụng để thiết lập từng cơ sở dữ liệu trên nền tảng của bạn. Ví dụ, lệnh:

TẠO nhân viên DATABASE

tạo một cơ sở dữ liệu rỗng có tên là "employees" trên DBMS của bạn. Sau khi tạo cơ sở dữ liệu, bước tiếp theo là tạo các bảng có chứa dữ liệu. Một biến thể khác của lệnh CREATE có thể được sử dụng cho mục đích này. Lệnh:

CREATE TABLE personal_info (first_name char (20) không null, last_name char (20) không null, employee_id int không null)

thiết lập một bảng có tiêu đề "personal_info" trong cơ sở dữ liệu hiện tại. Trong ví dụ này, bảng chứa ba thuộc tính: first_name, last_name và employee_id cùng với một số thông tin bổ sung.

SỬ DỤNG. Lệnh USE cho phép bạn chỉ định cơ sở dữ liệu mà bạn muốn làm việc với bên trong DBMS của bạn. Ví dụ: nếu bạn hiện đang làm việc trong cơ sở dữ liệu bán hàng và muốn phát hành một số lệnh sẽ ảnh hưởng đến cơ sở dữ liệu của nhân viên, hãy bắt đầu bằng lệnh SQL sau:

Sử dụng nhân viên

Điều quan trọng là luôn luôn ý thức về cơ sở dữ liệu bạn đang làm việc trước khi phát hành các lệnh SQL thao tác dữ liệu.

ALTER. Khi bạn đã tạo một bảng trong cơ sở dữ liệu, bạn có thể muốn sửa đổi định nghĩa của nó. Lệnh ALTER cho phép bạn thay đổi cấu trúc của một bảng mà không xóa và tạo lại nó. Hãy xem lệnh sau:

ALTER TABLE personal_info ADD tiền lương null

Ví dụ này thêm thuộc tính mới vào bảng personal_info — mức lương của nhân viên. Đối số "tiền" quy định rằng lương của nhân viên được lưu trữ bằng cách sử dụng định dạng đô la và xu. Cuối cùng, từ khóa "null" cho cơ sở dữ liệu biết rằng trường OK không có giá trị cho bất kỳ nhân viên nào.

RƠI VÃI. Lệnh cuối cùng của ngôn ngữ định nghĩa dữ liệu, DROP, cho phép chúng ta loại bỏ toàn bộ các đối tượng cơ sở dữ liệu từ DBMS của chúng ta. Ví dụ, nếu chúng ta muốn loại bỏ vĩnh viễn bảng personal_info mà chúng ta đã tạo, chúng ta sẽ sử dụng lệnh sau đây:

DROP TABLE personal_info

Tương tự, lệnh dưới đây sẽ được sử dụng để xóa toàn bộ cơ sở dữ liệu của nhân viên:

Nhân viên DROP DATABASE

Sử dụng lệnh này cẩn thận. Lệnh DROP loại bỏ toàn bộ cấu trúc dữ liệu khỏi cơ sở dữ liệu của bạn. Nếu bạn muốn loại bỏ các bản ghi riêng lẻ, sử dụng lệnh DELETE của Ngôn ngữ thao tác dữ liệu.

Lệnh ngôn ngữ thao tác dữ liệu

Ngôn ngữ thao tác dữ liệu (Data Manipulation Language - DML) được sử dụng để lấy ra, chèn và sửa đổi thông tin cơ sở dữ liệu. Các lệnh này được sử dụng bởi tất cả người dùng cơ sở dữ liệu trong quá trình hoạt động thường xuyên của cơ sở dữ liệu.

CHÈN. Lệnh INSERT trong SQL được sử dụng để thêm các bản ghi vào một bảng hiện có. Quay trở lại ví dụ personal_info từ phần trước, hãy tưởng tượng rằng bộ phận nhân sự của chúng tôi cần thêm một nhân viên mới vào cơ sở dữ liệu của nó. Bạn có thể sử dụng một lệnh tương tự như lệnh này:

INSERT INTO giá trị personal_info ('bart', 'simpson', 12345, $ 45000)

Lưu ý rằng có bốn giá trị được chỉ định cho bản ghi. Các giá trị này tương ứng với các thuộc tính bảng theo thứ tự chúng được định nghĩa: first_name, last_name, employee_id và salary.

LỰA CHỌN. Lệnh SELECT là lệnh được sử dụng phổ biến nhất trong SQL. Nó cho phép người dùng cơ sở dữ liệu truy xuất thông tin cụ thể mà họ mong muốn từ một cơ sở dữ liệu hoạt động. Hãy xem một vài ví dụ, một lần nữa bằng cách sử dụng bảng personal_info từ cơ sở dữ liệu của nhân viên.

Lệnh được hiển thị bên dưới truy xuất tất cả thông tin chứa trong bảng personal_info. Lưu ý rằng dấu sao được sử dụng như một ký tự đại diện trong SQL. Điều này có nghĩa là "Chọn tất cả mọi thứ từ bảng personal_info."

CHỌN * FROM personal_info

Ngoài ra, người dùng có thể muốn giới hạn các thuộc tính được lấy ra từ cơ sở dữ liệu. Ví dụ, bộ phận Nhân sự có thể yêu cầu danh sách họ của tất cả nhân viên trong công ty. Lệnh SQL sau sẽ chỉ lấy thông tin đó:

CHỌN last_name FROM personal_info

Mệnh đề WHERE có thể được sử dụng để giới hạn các bản ghi được truy lục đến các bản ghi đáp ứng các tiêu chí được chỉ định. Giám đốc điều hành có thể quan tâm đến việc xem xét hồ sơ nhân sự của tất cả các nhân viên được trả lương cao. Lệnh sau truy xuất tất cả dữ liệu chứa trong personal_info cho các bản ghi có giá trị lương lớn hơn 50.000 đô la:

CHỌN * FROM personal_info WHERE lương> $ 50000

CẬP NHẬT. Lệnh UPDATE có thể được sử dụng để sửa đổi thông tin chứa trong một bảng, với số lượng lớn hoặc riêng lẻ. Giả sử công ty cung cấp cho tất cả nhân viên mức tăng 3 phần trăm chi phí sinh hoạt trong tiền lương hàng năm của họ. Lệnh SQL sau đây có thể được sử dụng để nhanh chóng áp dụng điều này cho tất cả các nhân viên được lưu trữ trong cơ sở dữ liệu:

CẬP NHẬT personal_info SET lương = lương * 1.03

Khi nhân viên mới Bart Simpson thể hiện hiệu suất ở trên và vượt ra ngoài nhiệm vụ, quản lý mong muốn nhận ra những thành tựu xuất sắc của mình với mức tăng $ 5,000. Mệnh đề WHERE có thể được sử dụng để tách ra Bart cho mức tăng này:

CẬP NHẬT personal_info SET lương = lương + $ 5000 WHERE employee_id = 12345

XÓA BỎ. Cuối cùng, chúng ta hãy xem lệnh DELETE. Bạn sẽ thấy rằng cú pháp của lệnh này tương tự như cú pháp của các lệnh DML khác. Thật không may, báo cáo thu nhập doanh nghiệp mới nhất của chúng tôi không hoàn toàn đáp ứng được kỳ vọng và Bart kém đã bị sa thải. Lệnh DELETE với mệnh đề WHERE có thể được sử dụng để xóa bản ghi của anh ta khỏi bảng personal_info:

XÓA TỪ personal_info WHERE employee_id = 12345

THAM GIA

Bây giờ bạn đã học được những điều cơ bản về SQL, đã đến lúc chuyển sang một trong những khái niệm mạnh nhất mà ngôn ngữ cung cấp — câu lệnh JOIN. Câu lệnh JOIN cho phép bạn kết hợp dữ liệu trong nhiều bảng để xử lý hiệu quả lượng lớn dữ liệu. Các câu lệnh này là nơi sức mạnh thực sự của một cơ sở dữ liệu cư trú.

Để khám phá việc sử dụng một phép toán JOIN cơ bản để kết hợp dữ liệu từ hai bảng, tiếp tục với ví dụ bằng cách sử dụng bảng PERSONAL_INFO và thêm một bảng bổ sung vào hỗn hợp. Giả sử bạn có một bảng có tên DISCIPLINARY_ACTION đã được tạo với câu lệnh sau:

CREATE TABLE disciplinary_action (action_id int không null, employee_id int không null, bình luận char (500))

Bảng này chứa kết quả của các biện pháp kỷ luật đối với nhân viên của công ty. Bạn sẽ nhận thấy rằng nó không chứa bất kỳ thông tin nào về nhân viên khác ngoài số nhân viên. Thật dễ dàng để tưởng tượng nhiều kịch bản mà bạn có thể muốn kết hợp thông tin từ các bảng DISCIPLINARY_ACTION và PERSONAL_INFO.

Giả sử bạn đã được giao nhiệm vụ tạo báo cáo liệt kê các biện pháp kỷ luật được thực hiện đối với tất cả nhân viên có mức lương lớn hơn 40.000 đô la. Việc sử dụng một phép toán JOIN, trong trường hợp này, là đơn giản. Chúng ta có thể lấy thông tin này bằng cách sử dụng lệnh sau:

CHỌN personal_info.first_name, personal_info.last_name, disciplinary_action.comments TỪ personal_info, disciplinary_action WHERE personal_info.employee_id = disciplinary_action.employee_id AND personal_info.salary> 40000

Đoạn mã chỉ định hai bảng mà chúng ta muốn tham gia vào mệnh đề FROM và sau đó bao gồm một câu lệnh trong mệnh đề WHERE để giới hạn kết quả cho các bản ghi có ID nhân viên phù hợp và đáp ứng các tiêu chí của chúng ta về mức lương lớn hơn $ 40.000.