13 lệnh SQL quan trọng nhất mà bất kỳ lập trình viên nào cũng nên biết

13 lệnh SQL quan trọng nhất mà bất kỳ lập trình viên nào cũng nên biết

Cơ sở dữ liệu thúc đẩy web hiện đại. Mọi trang web lớn hoặc động đều sử dụng cơ sở dữ liệu theo một cách nào đó và khi kết hợp với Ngôn ngữ truy vấn có cấu trúc (SQL) , khả năng thao tác dữ liệu thực sự là vô tận. Nếu bạn đã biết SQL, hãy đảm bảo rằng bạn kiểm tra các kỹ năng lập trình này mà tất cả các nhà phát triển trang web nên biết.





Hôm nay tôi sẽ chỉ cho bạn một số các lệnh SQL cốt lõi bạn cần biết với tư cách là một lập trình viên.





Có nhiều tên cho dữ liệu được trả về từ một bảng cơ sở dữ liệu. Dữ liệu thường được gọi là Hàng , Hồ sơ , hoặc Tuples . Tôi sẽ sử dụng các thuật ngữ này thay thế cho nhau trong suốt bài viết này.





Lời nói đầu

Tất cả các ví dụ hôm nay sẽ dựa trên bốn bảng giả tưởng. Các khách hàng bảng chứa tên và tuổi của khách hàng:

Các chiều cao bảng chứa tên và chiều cao của bất kỳ người nào:



Các Nhân Viên bảng chứa tên và tuổi của nhân viên - giống hệt như bảng khách hàng:

Bàn cuối cùng được gọi là Mọi người chứa tên và tuổi của mọi người, giống như bảng khách hàng và nhân viên:





1. Chọn

Các lựa chọn câu lệnh là đơn giản nhất và điều cần thiết là bạn phải hiểu nó vì nó làm nền tảng cho gần như tất cả các lệnh khác. Đây được coi là phương pháp hay nhất để viết các từ SQL dành riêng của bạn bằng chữ hoa, vì nó làm cho lệnh dễ đọc và dễ hiểu hơn.

Như tên của nó, select được sử dụng để lựa chọn dữ liệu từ cơ sở dữ liệu. Đây là cách sử dụng đơn giản nhất:





SELECT * FROM table;

Có hai phần cho điều này. Phần đầu tiên ( LỰA CHỌN * ) chỉ định cột bạn muốn chọn. Dấu hoa thị cho biết bạn muốn chọn tất cả các cột trong bảng. Phần thứ hai ( Bảng TỪ ) cho công cụ cơ sở dữ liệu của bạn biết nơi bạn muốn truy xuất dữ liệu này. Thay thế 'bảng' bằng tên của bảng cơ sở dữ liệu của bạn.

Lựa chọn này được gọi là 'chọn sao.' Sử dụng dấu hoa thị là một cách hay để tìm ra dữ liệu nào trong bảng, nhưng tôi không khuyên bạn nên sử dụng nó cho bất kỳ mã sản xuất nào. Khi sử dụng dấu sao được chọn, công cụ cơ sở dữ liệu sẽ hiển thị cho bạn dữ liệu bạn muốn. Bạn không có bất kỳ quyền kiểm soát nào đối với thứ tự dữ liệu được trả về, vì vậy nếu ai đó thêm cột mới vào bảng, bạn có thể thấy các biến trong ngôn ngữ lập trình của mình không còn đại diện cho dữ liệu chính xác. May mắn thay, có một giải pháp.

Bạn có thể nêu rõ ràng những cột nào bạn muốn truy xuất, như sau:

SELECT age, name FROM people;

Truy vấn này truy xuất các cột 'tuổi' và 'tên' từ bảng 'mọi người'. Rõ ràng như vậy có thể hơi tẻ nhạt nếu bạn có nhiều dữ liệu, nhưng làm như vậy sẽ giảm bớt các vấn đề trong tương lai, đồng thời làm cho SQL của bạn dễ hiểu hơn đối với bất kỳ lập trình viên nào trong tương lai.

Nếu bạn muốn chọn một phần dữ liệu bổ sung, nhưng nó không được lưu trữ trong bất kỳ bảng nào của bạn, bạn có thể làm như sau:

SELECT age, '1234' FROM people;

Bất kỳ chuỗi nào bên trong dấu ngoặc kép sẽ được trả về thay vì khớp với tên cột.

2. Ở đâu

Lệnh select rất tuyệt vời để truy xuất dữ liệu, nhưng nếu bạn muốn lọc kết quả nhiều hơn một chút thì sao? Còn về việc chỉ truy xuất những người có đôi mắt xanh? Những người sinh tháng Giêng làm nghề cơ khí thì sao? Đây là nơi ở đâu lệnh đi kèm. Điều này cho phép bạn áp dụng các điều kiện cho vùng chọn và bạn chỉ cần thêm nó vào cuối câu lệnh:

SELECT age, name FROM people WHERE age > 10;

Truy vấn này hiện được giới hạn cho những người trên 10 tuổi. Bạn có thể kết hợp nhiều điều kiện bằng cách sử dụng nhà điều hành:

SELECT age, name FROM people WHERE age > 10 AND age <20;

Các lệnh hoạt động giống như trong ngôn ngữ tiếng Anh: nó áp dụng một điều kiện khác cho câu lệnh. Trong ví dụ này, dữ liệu trả về sẽ là bất kỳ bản ghi nào có độ tuổi từ 10 đến 20. Vì không có kết quả phù hợp nên không có dữ liệu nào được trả về.

nhắn tin trực tuyến miễn phí gửi và nhận tin nhắn văn bản

Một lệnh khác có thể được sử dụng cùng với lệnh này là HOẶC . Đây là một ví dụ:

SELECT age, name FROM people WHERE age > 10 OR name = 'Joe';

Truy vấn này trả về các bản ghi có tuổi lớn hơn 10 hoặc tên bằng 'Joe'. Chú ý làm thế nào chỉ có một dấu bằng? Hầu hết các ngôn ngữ lập trình sử dụng dấu bằng kép (==) để kiểm tra tính tương đương. Điều này không cần thiết cho đại đa số các công cụ cơ sở dữ liệu (nhưng nó có thể rất phù hợp với từng môi trường, vì vậy hãy kiểm tra kỹ trước).

3. Đặt hàng

Các đặt hàng lệnh được sử dụng để sắp xếp các kết quả trả về. Đó là một cái khác dễ sử dụng. Chỉ cần thêm nó vào cuối bản sao kê của bạn:

SELECT name, age FROM people ORDER BY age DESC;

Bạn cần chỉ định cột và thứ tự, có thể là TĂNG DẦN tăng dần hoặc DESC để giảm dần. Bạn có thể sắp xếp theo nhiều cột như sau:

SELECT name, age FROM people ORDER BY name ASC, age DESC

ĐẶT BỞI có lẽ hữu ích nhất khi kết hợp với các lệnh khác. Không phải tất cả các truy vấn sẽ trả về dữ liệu theo cách logic hoặc theo thứ tự - lệnh này cho phép bạn thay đổi điều đó.

4. Tham gia

Các tham gia lệnh được sử dụng để tham gia dữ liệu liên quan được lưu trữ trong một hoặc nhiều bảng. Bạn tham gia bảng thứ hai với bảng đầu tiên và chỉ định cách dữ liệu được kết nối. Đây là một ví dụ cơ bản:

iphone không kết nối được với máy tính nhưng đang sạc
SELECT age, name, height FROM people LEFT JOIN heights USING (name);

Có một vài điều đang xảy ra ở đây. Bạn phải bắt đầu với cú pháp 'LEFT JOIN', cú pháp này chỉ định rằng bạn muốn tham gia một bảng bằng cách sử dụng một kiểu nối bên trái. Tiếp theo, chỉ định bảng bạn muốn tham gia (chiều cao). Các SỬ DỤNG (tên) cú pháp tuyên bố rằng cột 'tên' có thể được tìm thấy trong cả hai bảng và điều này nên được sử dụng làm khóa để nối các bảng lại với nhau.

Đừng lo lắng nếu các cột của bạn có các tên khác nhau trong mỗi bảng. Bạn có thể sử dụng 'ON' thay vì 'USING':

SELECT age, name, height FROM people LEFT JOIN heights ON (namea = nameb);

Câu lệnh on nêu rõ những cột nào cần khóa. Có nhiều kiểu nối và sẽ mất nhiều thời gian để đi vào chi tiết cho từng kiểu, vì vậy đây là tóm tắt nhanh về cách sử dụng của chúng:

  • (BÊN TRONG) THAM GIA - Trả về các hàng có kết quả phù hợp trong cả hai bảng.
  • THAM GIA TRÁI (OUTER) - Trả về tất cả các hàng từ bảng bên trái, với bất kỳ hàng nào phù hợp từ bảng bên phải. Nếu không có kết quả phù hợp, các bản ghi bảng bên trái vẫn được trả về.
  • THAM GIA QUYỀN (NGOÀI) - Điều này ngược lại với phép nối bên trái: tất cả các hàng từ bảng bên phải được trả về, cùng với bất kỳ kết quả phù hợp nào trong bảng bên trái.
  • THAM GIA ĐẦY ĐỦ (NGOÀI) - Trả về bất kỳ bản ghi nào có kết quả khớp trong một trong hai bảng.

Cú pháp 'INNER' hoặc 'OUTER' là tùy chọn. Nó có thể làm cho mọi thứ dễ hiểu hơn, nhưng bạn không phải chỉ định nó trong phần lớn thời gian.

5. Bí danh

Bây giờ bạn đã biết những điều cơ bản, hãy xem bí danh chỉ huy. Điều này được sử dụng để tạm thời đổi tên một bảng - giống biệt hiệu hơn bất kỳ thứ gì khác, vì tên mới này chỉ tồn tại bên trong giao dịch cá nhân mà bạn đang chạy. Đây là cách bạn sử dụng nó:

SELECT A.age FROM people A;

Bạn có thể sử dụng bất kỳ tên hợp lệ nào mà bạn thích, nhưng tôi thích sử dụng các chữ cái trong bảng chữ cái. Trước mỗi tên cột, bí danh được đặt trước. Bí danh này được gán cho bảng ngay sau khi nó được khai báo. Điều này giống hệt như làm điều này:

SELECT people.age FROM people;

Thay vì phải gõ một tên bảng dài, bạn có thể gõ một chữ cái đơn giản và dễ nhớ - nhưng vấn đề là gì? Chà, nếu bạn đang chọn từ nhiều bảng, bạn sẽ dễ bị nhầm lẫn không biết cột nào thuộc bảng nào. Nếu cả hai bảng của bạn tình cờ có các cột có cùng tên, truy vấn cơ sở dữ liệu của bạn thậm chí có thể không chạy mà không tham chiếu rõ ràng đến tên hoặc bí danh của bảng. Đây là một ví dụ với hai bảng:

SELECT staff.age, staff.name, customers.age, customers.name FROM staff, customers;

Và đây là cùng một truy vấn với bí danh:

SELECT A.age, A.name, B.age, B.name FROM staff A, customers B;

Bàn nhân viên có bí danh là 'A' và bàn khách hàng có bí danh là 'B'. Các bảng ký hiệu thực sự giúp làm cho mã của bạn dễ hiểu hơn và giảm số lượng bạn phải nhập.

Bạn cũng có thể đổi tên cột bằng bí danh bằng lệnh 'AS':

SELECT age AS person_age FROM people;

Khi truy vấn này được chạy, cột bây giờ sẽ được gọi là 'person_age' thay vì 'age'.

6. Công đoàn

liên hiệp là một mệnh lệnh tuyệt vời. Nó cho phép bạn nối các hàng với nhau. Không giống như phép nối mà nối các cột phù hợp, liên hợp có thể nối thêm các hàng không liên quan với điều kiện chúng có cùng số lượng và tên cột. Đây là cách bạn sử dụng nó:

SELECT age, name FROM customers
UNION
SELECT age, name FROM staff;

Bạn có thể nghĩ về union như một cách kết hợp các kết quả của hai truy vấn. Một liên hợp sẽ chỉ trả về kết quả khi có một hàng duy nhất giữa hai truy vấn. Bạn có thể sử dụng cú pháp 'UNION ALL' để trả về tất cả dữ liệu, bất kể dữ liệu trùng lặp:

SELECT age, name FROM customers
UNION ALL
SELECT age, name FROM staff;

Chú ý thứ tự của các hàng thay đổi như thế nào? Union hoạt động theo cách hiệu quả nhất, vì vậy dữ liệu trả về có thể thay đổi theo thứ tự.

Một trường hợp sử dụng có thể có cho liên hợp là tổng phụ: bạn có thể kết hợp một truy vấn của tổng vào một truy vấn của các tổng riêng lẻ cho một kịch bản cụ thể.

7. Chèn

Bây giờ bạn đã biết tất cả về cách lấy dữ liệu từ cơ sở dữ liệu, nhưng còn việc chèn nó vào thì sao? Đây là nơi chèn lệnh xuất hiện. Đây là một ví dụ:

INSERT INTO people(name, age) VALUES('Joe', 102);

Bạn phải chỉ định tên bảng (người) và các cột bạn muốn sử dụng (tên và tuổi). Cú pháp 'VALUES' sau đó được sử dụng để cung cấp các giá trị cần chèn. Chúng phải theo thứ tự giống như các cột đã được chỉ định trước đó.

Bạn không thể chỉ định mệnh đề where cho các lần chèn và bạn cần đảm bảo tuân theo mọi ràng buộc bảng cần thiết hiện có.

8. Cập nhật

Sau khi chèn một số dữ liệu, việc thay đổi các hàng cụ thể là điều hiển nhiên. Đây là cập nhật cú pháp lệnh:

UPDATE people SET name = 'Joe', age = 101;

Bạn phải chỉ định bảng mà bạn muốn thay đổi, sau đó sử dụng cú pháp 'SET' để chỉ định các cột và giá trị mới của chúng. Ví dụ này rất hay, nhưng nó sẽ cập nhật từng bản ghi - điều không phải lúc nào cũng mong muốn!

Để cụ thể hơn, bạn có thể sử dụng mệnh đề 'WHERE' giống như khi thực hiện một lựa chọn:

UPDATE people SET name = 'Joe', age = 101 WHERE name = 'James';

Bạn thậm chí có thể chỉ định nhiều điều kiện bằng cách sử dụng 'VÀ' và 'HOẶC':

UPDATE people SET name = 'Joe', age = 101 WHERE (name = 'James' AND age = 100) OR name = 'Ryan';

Lưu ý cách sử dụng dấu ngoặc để ràng buộc các điều kiện.

cách giảm độ sáng trên windows 10

9. Nâng cấp

Giáo sư là một từ nghe có vẻ lạ, nhưng nó là một lệnh cực kỳ hữu ích. Giả sử bạn có một ràng buộc đối với bảng của mình và bạn đã chỉ định rằng bạn chỉ muốn các bản ghi có tên duy nhất - ví dụ: bạn không muốn lưu trữ hai hàng có cùng tên. Nếu bạn cố gắng chèn nhiều giá trị của 'Joe', công cụ cơ sở dữ liệu của bạn sẽ gặp lỗi và từ chối thực hiện (hoàn toàn đúng). UPSERT cho phép bạn cập nhật một bản ghi nếu nó đã tồn tại. Điều này là vô cùng hữu ích! Nếu không có lệnh này, bạn sẽ phải viết rất nhiều logic để trước tiên kiểm tra xem bản ghi có tồn tại hay không, chèn nếu bản ghi không tồn tại, nếu không, hãy truy xuất khóa chính chính xác và sau đó cập nhật.

Thật không may, các cảnh báo được thực hiện khác nhau trong các công cụ cơ sở dữ liệu khác nhau. PostgreSQL gần đây mới đạt được khả năng này, trong khi MySQL đã có nó khá lâu. Đây là cú pháp MySQL để tham khảo:

INSERT INTO people(name, age)
VALUES('Joe', 101)
ON DUPLICATE KEY UPDATE age = 101;

Lưu ý rằng đây thực chất là một bản cập nhật và một câu lệnh chèn, có thể được tóm tắt là 'cập nhật nếu chèn không thành công.'

10. Xóa

Xóa bỏ được sử dụng để xóa toàn bộ hồ sơ - nó có thể khá nguy hại nếu bị lạm dụng! Cú pháp cơ bản rất dễ sử dụng:

DELETE FROM people;

Giống như hầu hết các lệnh khác, điều này sẽ xóa mọi điều ! Bạn cần sử dụng nơi để giới hạn nó ở một số hàng lành mạnh hơn một chút - lý tưởng nhất là:

DELETE FROM people WHERE name = 'Joe';

Nếu bạn đang phát triển một hệ thống, thường là khôn ngoan khi thực hiện 'xóa mềm'. Bạn không bao giờ thực sự chạy lệnh xóa, thay vì bạn tạo một cột đã xóa, và sau đó kiểm tra cột đó trong lựa chọn của bạn - điều này có thể tránh được rất nhiều sự bối rối tiềm ẩn nếu bạn có thể nhanh chóng và dễ dàng truy xuất các bản ghi được cho là đã xóa. Tuy nhiên, điều này không thể thay thế cho các bản sao lưu thích hợp.

11. Tạo bảng

Các tạo bảng lệnh được sử dụng để tạo bảng. Đó là một cái rất đơn giản khác:

CREATE TABLE people (
name TEXT,
age, INTEGER,
PRIMARY KEY(name)
);

Chú ý cách tên cột và các ràng buộc bên trong dấu ngoặc và các cột được cung cấp một kiểu dữ liệu thích hợp. Một khóa chính được chỉ định, như được yêu cầu trong bất kỳ thiết kế cơ sở dữ liệu tốt nào.

12. Bảng thay đổi

Các bảng thay đổi lệnh được sử dụng để sửa đổi cấu trúc của một bảng. Điều này hơi hạn chế, vì cơ sở dữ liệu của bạn sẽ không cho phép bạn thay đổi bảng nếu dữ liệu hiện có sẽ gây ra xung đột - ví dụ: thay đổi một chuỗi thành một số nguyên. Trong những trường hợp đó, hãy sửa dữ liệu trước, sau đó sửa đổi bảng. Đây là một ví dụ:

ALTER TABLE people ADD height integer;

Ví dụ này thêm một cột có tên là 'chiều cao' của kiểu số nguyên vào bảng mọi người. Không thực sự có giới hạn về những gì bạn có thể thay đổi.

13. Bảng thả

Lệnh cuối cùng là thả bàn . Hãy coi đây là thao tác xóa, nhưng thay vì xóa một bản ghi, nó sẽ xóa mọi bản ghi cùng với bảng! Đây là cách bạn sử dụng nó:

DROP TABLE people;

Đó là một lệnh khá quyết liệt và không có lý do gì nó cần được lập trình vào hệ thống của bạn. Nó chỉ nên được thực hiện theo cách thủ công trong phần lớn các trường hợp và nó có thể hết sức phá hoại.

Đó là tất cả cho ngày hôm nay. Tôi hy vọng bạn đã học được một số thủ thuật hữu ích! Bạn có thể học cách tạo một trang web , và sau đó sử dụng các kỹ năng mới tìm thấy của bạn để làm cho nó năng động - chỉ cần đảm bảo rằng bạn không mắc phải những lỗi này hoặc để nó dễ bị SQL injection. Nếu bạn không chắc mình cần học SQL, bạn đã xem xét một trình tạo trang web tĩnh chưa?

Tại sao không để lại bình luận bên dưới với các mẹo và thủ thuật SQL yêu thích của bạn?

Tín dụng hình ảnh: HYS_NP / Shutterstock

Đăng lại Đăng lại tiếng riu ríu E-mail Nâng cấp lên Windows 11 có đáng không?

Windows đã được thiết kế lại. Nhưng điều đó có đủ thuyết phục bạn chuyển từ Windows 10 sang Windows 11?

Đọc tiếp
Chủ đề liên quan
  • Lập trình
  • Lập trình
  • SQL
Giới thiệu về tác giả Joe Coburn(136 bài báo đã xuất bản)

Joe tốt nghiệp ngành Khoa học Máy tính tại Đại học Lincoln, Vương quốc Anh. Anh ấy là một nhà phát triển phần mềm chuyên nghiệp và khi anh ấy không lái máy bay không người lái hay viết nhạc, anh ấy thường có thể bị bắt gặp chụp ảnh hoặc sản xuất video.

Xem thêm từ Joe Coburn

Theo dõi bản tin của chúng tôi

Tham gia bản tin của chúng tôi để biết các mẹo công nghệ, đánh giá, sách điện tử miễn phí và các ưu đãi độc quyền!

Bấm vào đây để đăng ký