Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Giới thiệu về các lệnh SQL

Trong thế giới gia tăng số hóa, dữ liệu lớn và điện toán đám mây ngày nay, quản lý dữ liệu là một trong những kỹ năng quan trọng nhất mà một kỹ sư phần mềm có thể có. Vì vậy, một trong những công cụ cơ sở dữ liệu mạnh mẽ nhất là SQL.

SQL (Ngôn ngữ truy vấn có cấu trúc) là ngôn ngữ lập trình tiêu chuẩn được sử dụng để thao tác với các đối tượng cấu trúc dữ liệu. Chúng hoạt động dựa trên dữ liệu được chứa trong hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS). Một số RDBMS nổi tiếng là MySQL và PostgreSQL.

Trong hướng dẫn này, bạn tìm hiểu về các tập hợp con của ngôn ngữ SQL và cách sử dụng một số lệnh SQL cơ bản, như SELECT , INSERT , UPDATEDELETE .

Các tập con của SQL

Danh sách dưới đây bao gồm các tập hợp con ngôn ngữ khác nhau của các lệnh SQL khác nhau. Mỗi tập hợp con có chức năng và mục đích riêng.

  • Ngôn ngữ Định nghĩa Dữ liệu (DDL):Điều này cho phép bạn tạo, xóa và cập nhật các định nghĩa lược đồ cơ sở dữ liệu (cụ thể là bảng và chỉ mục) mà không thực sự thao tác dữ liệu trong các bảng cơ sở dữ liệu.
  • Ngôn ngữ Truy vấn Dữ liệu (DQL):DQL được sử dụng để truy xuất dữ liệu từ cơ sở dữ liệu bằng cách sử dụng SELECT tuyên bố.
  • Ngôn ngữ Thao tác Dữ liệu (DML):Ngôn ngữ con này cho phép thao tác dữ liệu trong cơ sở dữ liệu bằng cách sử dụng INSERT , UPDATEDELETE tuyên bố.

Hướng dẫn này sử dụng cơ sở dữ liệu mẫu cho một trường học để minh họa thêm các lệnh SQL cho mỗi tập hợp con được liệt kê ở trên. Cơ sở dữ liệu của trường có một số bảng, dành cho sinh viên, khóa học, điểm số, v.v. Định nghĩa của Student bảng chứa các cột cho SSNumber của sinh viên , FirstnameLastname và định nghĩa của CourseTaken bảng chứa các cột cho SSNumber , CourseId , NumericGradeYearTaken .

Ví dụ giả sử rằng có ba học sinh trong trường, mỗi học sinh đã hoàn thành hai khóa học. Dữ liệu mẫu được hiển thị trong bảng dưới đây:

SSNumber LastName FirstName CourseId NumericGrade YearTaken
111111111 Smith John CSC101 98 2021
111111111 Smith John ENG101 95 2022
222222222 Jones Mary CSC101 100 2022
222222222 Jones Mary EEE101 75 2022
333333333 Hansen Robert POL101 92 2021
333333333 Hansen Robert SOC103 84 2022

Tạo, thay đổi và thả bảng bằng lệnh SQL

Từ dòng lệnh, hãy sử dụng CREATE TABLE theo sau là tên của bảng và dữ liệu bảng. Lệnh dưới đây tạo Student bảng.

CREATE TABLE Student (
  SSNumber CHAR(9) NOT NULL,
  LastName VARCHAR(30) NOT NULL,
  FirstName VARCHAR(20) NOT NULL
);

Dấu ngoặc đơn bao quanh dữ liệu bảng, bắt đầu bằng một cột gắn nhãn dữ liệu của mỗi hàng. Cột tiếp theo cho biết kiểu dữ liệu mà hàng này giữ. CHAR cho biết kiểu dữ liệu chuỗi có độ dài cố định và VARCHAR cho biết kiểu dữ liệu chuỗi có độ dài thay đổi. Trong cột cuối cùng, NOT NULL thuộc tính đảm bảo rằng bản ghi không thể được thêm vào bảng nếu bất kỳ NOT NULL nào các cột không có dữ liệu được liên kết với chúng.

Lưu ý CREATE TABLE câu lệnh được phân tách bằng dấu chấm phẩy ở cuối (;), mặc dù có thể một số hệ thống cơ sở dữ liệu quan hệ thương mại có thể không yêu cầu dấu phân cách đó.
Lưu ý Trừ khi được đề cập khác, tất cả các lệnh cơ sở dữ liệu được trình bày trong hướng dẫn này hoạt động tốt trên cả MySQL PostgreSQL .

Để tạo CourseTaken bảng, thực hiện lệnh sau:

CREATE TABLE CourseTaken (
  SSNumber CHAR(9) NOT NULL,
  CourseId CHAR(6) NOT NULL,
  NumericGrade INT NOT NULL
);

YearTaken cố ý không được đưa vào cột CourseTaken bảng để chứng minh việc sử dụng ALTER TABLE yêu cầu. Để thêm YearTaken trong cột CourseTaken bảng, bạn không cần bỏ CourseTaken bảng hoàn toàn. Thay vào đó, bạn có thể sử dụng DDL ALTER TABLE yêu cầu. Lệnh sau thay đổi CourseTaken bảng bằng cách thêm cột bị thiếu vào bảng.

ALTER TABLE CourseTaken
  ADD (YearTaken INT NOT NULL);

Lệnh trên tuân theo cú pháp tương tự như trước. Nó yêu cầu tên bảng cũng như ba đối số:tên hàng, kiểu dữ liệu hàng và NOT NULL thuộc tính. Nếu bạn muốn xóa CourseTaken toàn bộ bảng, hãy phát hành DDL DROP TABLE theo sau là tên bảng.

DROP TABLE CourseTaken;
Thận trọng Việc thả một bảng sẽ xóa tất cả dữ liệu trong bảng.

Cách chèn dữ liệu vào bảng trong SQL

Để chèn dữ liệu vào bảng, hãy sử dụng INSERT INTO của SQL tuyên bố. Để gọi lệnh này, hãy cung cấp tên bảng và danh sách tên hàng (trong ngoặc đơn) mà bạn muốn chèn dữ liệu vào. Tiếp theo là VALUES từ khóa và các giá trị thực tế (trong ngoặc đơn) mà bạn muốn chèn. Các giá trị được chèn vào các hàng theo thứ tự mà chúng được gọi.

Lưu ý
  • Các lệnh SQL có thể được chia thành các dòng. Phần cuối của lệnh SQL được phân tách bằng dấu chấm phẩy (; ).
  • Dữ liệu ký tự được phân tách bằng dấu nháy đơn mở và đóng ( ), trong khi dữ liệu số thì không.

INSERT sau lệnh chèn ba hàng vào Student bàn. Các lệnh này sử dụng nhiều INSERT tuyên bố.

INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('111111111', 'Smith', 'John');

INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('222222222', 'Jones', 'Mary');

INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('333333333', 'Hansen', 'Robert');

Tương tự, bạn cũng có thể chèn nhiều hàng vào bảng trong một truy vấn SQL như hình dưới đây:

INSERT INTO CourseTaken
(SSNumber, CourseId, NumericGrade, YearTaken)
VALUES
('111111111', 'CSC101', 98, 2021),
('111111111', 'ENG101', 95, 2022),
('222222222', 'CSC101', 100, 2022);
Lưu ý

Bạn có thể sử dụng INSERT INTO lệnh tương tự trong PostgreSQL để thêm hàng vào bảng. Đảm bảo các giá trị khớp với thứ tự của các cột trong định nghĩa bảng.

INSERT INTO student VALUES ('111111111', 'Smith', 'John');

Xóa dữ liệu khỏi bảng

Để xóa dữ liệu khỏi bảng, hãy sử dụng DELETE FROM trong SQL tuyên bố. Sử dụng WHERE để chỉ định điều kiện và nếu có nhiều hơn một điều kiện, hãy sử dụng AND mệnh đề cùng với WHERE .

Ví dụ:lệnh sau sẽ xóa một bản ghi khỏi CourseTaken bảng có SSNumber 333333333 CourseId POL101 .

Thận trọng Nếu bạn bỏ qua WHERE , tất cả các bản ghi trong bảng đều bị xóa.
DELETE FROM CourseTaken WHERE SSNumber = '333333333' AND CourseId = 'POL101';

Lệnh SQL để cập nhật dữ liệu trong bảng

Để cập nhật bản ghi hiện có trong bảng, hãy sử dụng UPDATE của SQL yêu cầu. SET mệnh đề được sử dụng để đặt (cập nhật) một giá trị mới cho một cột cụ thể và WHERE mệnh đề được sử dụng để cập nhật các hàng đã chọn.

Ví dụ:lệnh sau cập nhật NumericGrade cột của CourseTaken bảng cho các bản ghi có SSNumber 222222222 CourseId EEE101 .

UPDATE CourseTaken
SET NumericGrade = 95
WHERE SSNumber = '222222222' AND CourseId = 'EEE101';

Lệnh SQL để truy xuất dữ liệu từ bảng

Sức mạnh thực sự của hệ thống cơ sở dữ liệu quan hệ là ở khả năng truy xuất thông tin trong lược đồ nhiều bảng, thông qua SQL SELECT và khả năng nối các bảng thông qua các khóa chung. Mặc dù hướng dẫn giới thiệu này không kiểm tra việc tạo các khóa và chỉ mục bằng cách sử dụng các khóa đó, nhưng nó sử dụng SSNumber cột của mỗi bảng như một phương tiện (chìa khóa) để liên hệ (hoặc nối) các bảng để tạo ra thông tin. Các ví dụ sau cung cấp các trường hợp sử dụng khác nhau của việc sử dụng SELECT trong SQL lệnh từ dòng lệnh.

Ví dụ 1: Để lấy danh sách tất cả học sinh trong trường.

SELECT * from Student;

Đầu ra:

+-----------+----------+-----------+
| SSNumber  | LastName | FirstName |
+-----------+----------+-----------+
| 111111111 | Smith    | John      |
| 222222222 | Jones    | Mary      |
| 333333333 | Hansen   | Robert    |
+-----------+----------+-----------+

Ví dụ 2: Để tìm nạp danh sách tất cả sinh viên và khóa học họ đã tham gia.

SELECT Student.SSNumber, Student.LastName,
       Student.FirstName, CourseTaken.CourseId
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber;

Đầu ra:

+-----------+----------+-----------+----------+
| SSNumber  | LastName | FirstName | CourseId |
+-----------+----------+-----------+----------+
| 111111111 | Smith    | John      | CSC101   |
| 111111111 | Smith    | John      | ENG101   |
| 222222222 | Jones    | Mary      | CSC101   |
+-----------+----------+-----------+----------+
Lưu ý Trong lệnh trên, hai bảng, StudentCourseTaken được tham gia để truy xuất thông tin cần thiết. Tên cột trong SELECTWHERE các mệnh đề được đặt trước tên bảng của chúng cho rõ ràng. Tuy nhiên, trong trường hợp của SSNumber , chúng tôi bắt buộc phải chỉ định tiền tố tên bảng thích hợp, vì cả hai bảng đều dùng chung tên cột. FROM mệnh đề chỉ ra các bảng đang được sử dụng trong truy vấn này.

Ví dụ 3: Truy xuất danh sách sinh viên bằng CourseId CSC101 và năm họ tham gia khóa học này.

SELECT Student.LastName, Student.FirstName,
       CourseTaken.CourseId, CourseTaken.YearTaken
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber
AND CourseTaken.CourseId = 'CSC101';

Đầu ra:

+----------+-----------+----------+-----------+
| LastName | FirstName | CourseId | YearTaken |
+----------+-----------+----------+-----------+
| Smith    | John      | CSC101   |      2021 |
| Jones    | Mary      | CSC101   |      2022 |
+----------+-----------+----------+-----------+

Ví dụ 4: Truy xuất danh sách tên sinh viên, các khóa học đã thực hiện và điểm đã nhận được, đối với những người có điểm khóa học trên 90 .

SELECT Student.LastName, Student.FirstName,
       CourseTaken.CourseId, CourseTaken.NumericGrade
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber
AND CourseTaken.NumericGrade > 90;

Đầu ra:

+----------+-----------+----------+--------------+
| LastName | FirstName | CourseId | NumericGrade |
+----------+-----------+----------+--------------+
| Smith    | John      | ENG101   |           95 |
| Smith    | John      | CSC101   |           98 |
| Jones    | Mary      | CSC101   |          100 |
+----------+-----------+----------+--------------+

Lưu ý AND mệnh đề trong lệnh trên cho phép bạn lọc kết quả bằng một bài kiểm tra điểm có điều kiện.

Kết luận

Hướng dẫn về các lệnh SQL này là tài liệu sơ lược mở đầu về cách tạo các lược đồ cơ sở dữ liệu và thao tác với dữ liệu trong các cơ sở dữ liệu đó. Mặc dù các khái niệm được giới thiệu ở đây chỉ đơn thuần là sơ lược về cách sử dụng của các hệ thống cơ sở dữ liệu quan hệ, nhưng đây là điểm khởi đầu tốt cho các lệnh và khái niệm cơ bản và thiết yếu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. @GeneratedValue siêu lớp trừu tượng đa hình trên MySQL

  2. MySQL lỗi cú pháp 1064 nhưng mọi thứ có vẻ ổn

  3. Tìm mức lương cao thứ 2 theo cách tốt nhất có thể

  4. Nhận hàng gần đây nhất cho ID đã cho

  5. Kết nối Android với MS SQL SERVER 2008