MySQL Câu lệnh CHỌN kèm ví dụ

⚡ Tóm tắt thông minh

MySQL Câu lệnh SELECT truy xuất các hàng từ một hoặc nhiều bảng, và mọi ví dụ bên dưới đều được chạy trên cơ sở dữ liệu mẫu myflix, từ truy vấn star đơn giản đến các biểu thức, bí danh cột và hàm chuỗi.

  • 🔎 Mục đích cốt lõi: Lệnh SELECT truy xuất các hàng đã lưu trữ khớp với một tiêu chí, từ dấu nhắc lệnh hoặc từ PHP. Pythonvà các ngôn ngữ khác.
  • 🧩 Thứ tự cú pháp: Các mệnh đề SELECT, FROM, WHERE, GROUP BY, HAVING và ORDER BY phải xuất hiện theo một trình tự cố định.
  • Đường tắt sao: Câu lệnh SELECT * FROM `members` trả về tất cả các cột, trong khi việc đặt tên cột một cách rõ ràng giúp giảm kích thước tập kết quả và tăng tốc độ trả về.
  • 🔗 Biểu thức: Hàm Concat() nối các giá trị cột lại với nhau, và hàm LEFT() cắt bớt các ký tự, do đó các trường được tính toán sẽ xuất hiện trực tiếp trong tập kết quả.
  • 🏷️ Tên gọi khác của cột: Từ khóa tùy chọn AS đổi tên bất kỳ biểu thức nào, thay thế các tiêu đề khó đọc như Concat(`title`) bằng các nhãn rõ ràng.
  • 🖱️ So sánh các loại bàn làm việc: MySQL Workbench tạo các truy vấn trực quan, tuy nhiên, việc viết tay các câu lệnh SELECT vẫn cần thiết cho việc truy xuất phức tạp và chính xác.

Truy vấn SELECT là gì? MySQL?

Truy vấn SELECT được sử dụng để lấy dữ liệu từ MySQL cơ sở dữ liệu. Cơ sở dữ liệu lưu trữ dữ liệu để truy xuất sau này. Mục đích của MySQL Câu lệnh SELECT dùng để trả về một hoặc nhiều hàng từ các bảng trong cơ sở dữ liệu khớp với một tiêu chí nhất định. Bạn có thể sử dụng câu lệnh SELECT trong các ngôn ngữ lập trình kịch bản như PHP hoặc Ruby, hoặc thực thi nó từ dấu nhắc lệnh.

truy vấn CHỌN trong MySQL

Vì SELECT là lệnh bạn sẽ chạy thường xuyên nhất, nên việc học cú pháp của nó trước khi làm việc với dữ liệu mẫu là rất hữu ích.

Cú pháp câu lệnh SQL SELECT

Lệnh SELECT là lệnh SQL được sử dụng thường xuyên nhất, và nó có cú pháp chung như sau:

SELECT [DISTINCT|ALL] { * | [fieldExpression [AS newName]} FROM tableName [alias] [WHERE condition] [GROUP BY fieldName(s)] [HAVING condition] [ORDER BY fieldName(s)];

tại ĐÂY

  • CHỌN là từ khóa SQL cho phép cơ sở dữ liệu biết rằng bạn muốn truy xuất dữ liệu.
  • [RÁC BIỆT | TẤT CẢ] là các từ khóa tùy chọn giúp tinh chỉnh kết quả trả về từ câu lệnh SQL SELECT. Nếu không có từ khóa nào được chỉ định, thì ALL sẽ được mặc định.
  • {*| [fieldExpression [AS newName]} Ít nhất một phần phải được chỉ định. "*" chọn tất cả các trường từ tên bảng được chỉ định; fieldExpression thực hiện các phép tính trên các trường được chỉ định, chẳng hạn như cộng các số hoặc nối hai trường chuỗi thành một.
  • TỪ tableName là trường bắt buộc và phải chứa ít nhất một bảng. Nhiều bảng phải được phân tách bằng dấu phẩy hoặc được nối bằng từ khóa JOIN.
  • Ở ĐÂU Tham số `condition` là tùy chọn. Nó chỉ định các tiêu chí trong tập kết quả được trả về từ truy vấn.
  • NHÓM THEO được sử dụng để tập hợp các bản ghi có cùng giá trị trường.
  • ĐANG CÓ Từ khóa `condition` được sử dụng để chỉ định tiêu chí khi làm việc với từ khóa `GROUP BY`.
  • ĐẶT BỞI được sử dụng để chỉ định thứ tự sắp xếp của tập kết quả.

*

Ký hiệu dấu sao (*) chọn tất cả các cột trong một bảng. Một câu lệnh SELECT đơn giản trông giống như câu lệnh được hiển thị bên dưới.

SELECT * FROM `members`;

Câu lệnh trên chọn tất cả các trường từ bảng members. Dấu chấm phẩy là dấu kết thúc câu lệnh. Nó không bắt buộc, nhưng kết thúc câu lệnh theo cách này được coi là một thực hành tốt.

SELECT DISTINCT và LIMIT trong MySQL

Hai từ khóa tùy chọn trong cú pháp đáng được xem xét kỹ hơn, bởi vì người mới bắt đầu sẽ gặp chúng ngay khi bảng biểu trở nên phức tạp hơn.

DISTINCT Loại bỏ các hàng trùng lặp khỏi tập kết quả. Bảng phim lưu trữ một số phim được phát hành năm 2007, vì vậy một truy vấn thông thường sẽ lặp lại năm đó. DISTINCT trả về mỗi giá trị một lần.

SELECT DISTINCT `year_released` FROM `movies`;

LIMIT Giới hạn số lượng hàng được trả về, điều này giúp bảo vệ máy khách khỏi các truy vấn có thể lấy ra hàng triệu bản ghi.

SELECT * FROM `movies` LIMIT 5;
Từ khóa Những gì nó Khi nào sử dụng nó
TẤT CẢ (mặc định) Trả về tất cả các hàng khớp, bao gồm cả các hàng trùng lặp. Đếm hoặc liệt kê các bản ghi thô
DISTINCT Gộp các hàng trùng lặp thành một hàng duy nhất Xây dựng danh sách các giá trị độc đáo
LIMIT Chỉ trả về N hàng đầu tiên Xem trước dữ liệu hoặc phân trang kết quả

Sau khi thống nhất cú pháp, cơ sở dữ liệu mẫu sẽ giúp hiện thực hóa các mệnh đề này.

Ví dụ thực tế về câu lệnh SELECT

Nhấp để tải xuống Cơ sở dữ liệu MyFlix được sử dụng cho các ví dụ thực tế.

Bạn có thể tìm hiểu cách nhập tệp .sql vào MySQL Workbench.

Các ví dụ được thực hiện trên hai bảng sau.

Bảng 1: thành viên bàn

số thành viên_ tên đầy đủ giới ngày sinh địa chỉ vật lý địa chỉ bưu điện số liên lạc_ e-mail
1 Janet Jones Nữ 21-07-1980 Lô đất đường số 4 số XNUMX Túi riêng 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Nữ 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Nam 12-07-1989 Đường số 3 34 NULL 12345 rm@tstreet.com
4 Gloria Williams Nữ 14-02-1984 Đường số 2 23 NULL NULL NULL

Bảng 2: phim bàn

id phim tiêu đề Giám đốc năm_phát hành Thể loại ID
1 Cướp biển vùng Caribe 4 Rob Marshall 2011 1
2 Quên Sarah Marshal Xe đẩy Nicholas 2008 2
3 X-Men NULL 2008 NULL
4 Code Tên Black Edgar Jimz 2010 NULL
5 Những cô gái nhỏ của bố NULL 2007 8
6 Thiên thần và ác quỷ NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8
16 67% Có Tội NULL 2012 NULL

Đăng ký thành viên

Giả sử chúng ta muốn có danh sách tất cả các thành viên đã đăng ký thư viện từ cơ sở dữ liệu của mình. Chúng ta sẽ sử dụng đoạn mã bên dưới để thực hiện điều đó.

SELECT * FROM `members`;

Thực thi kịch bản trong MySQL Workbench tạo ra các kết quả sau.

số thành viên_ tên đầy đủ giới ngày sinh địa chỉ vật lý địa chỉ bưu điện số liên lạc_ e-mail
1 Janet Jones Nữ 21-07-1980 Lô đất đường số 4 số XNUMX Túi riêng 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Nữ 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Nam 12-07-1989 Đường số 3 34 NULL 12345 rm@tstreet.com
4 Gloria Williams Nữ 14-02-1984 Đường số 2 23 NULL NULL NULL

Truy vấn đã trả về tất cả các hàng và cột từ bảng thành viên.

Chọn các cột cụ thể

Giả sử chúng ta chỉ quan tâm đến các trường full_names, gender, physical_address và email. Đoạn mã sau đây sẽ thực hiện điều đó.

SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;

Thực thi kịch bản trong MySQL Workbench tạo ra các kết quả sau.

tên đầy đủ giới địa chỉ vật lý e-mail
Janet Jones Nữ Lô đất đường số 4 số XNUMX janetjones@yagoo.cm
Janet Smith Jones Nữ Melrose 123 jj@fstreet.com
Robert Phil Nam Đường số 3 34 rm@tstreet.com
Gloria Williams Nữ Đường số 2 23 NULL

Lấy danh sách phim bằng các biểu thức

Biểu thức cũng có thể được sử dụng trong câu lệnh SELECT. Giả sử chúng ta muốn một danh sách phim với tiêu đề và tên đạo diễn trong cùng một trường, tên đạo diễn trong ngoặc đơn, cộng thêm năm phát hành phim. Đoạn mã sau đây thực hiện điều đó.

SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;

tại ĐÂY

  • Hàm Concat() MySQL Hàm này kết hợp các giá trị cột lại với nhau.
  • Dòng lệnh “Concat(`title`, ' (', `director`, ')')” lấy tiêu đề, thêm dấu ngoặc mở, tiếp theo là tên đạo diễn, rồi thêm dấu ngoặc đóng.
  • Các phần của chuỗi được phân tách bằng dấu phẩy bên trong hàm Concat().

Thực thi kịch bản trong MySQL Workbench tạo ra tập kết quả sau.

Concat(`tiêu đề`, ' (', `đạo diễn`, ')') năm_phát hành
Cướp biển vùng Caribe 4 (Rob Marshall) 2011
Lãng quên Sarah Marshal (Nicholas Stoller) 2008
NULL 2008
Code Tên Black (Edgar Jimz) 2010
NULL 2007
NULL 2007
NULL 2007
Honey mooners (John Schultz) 2005
NULL 2012

Lưu ý: Hàm Concat() trả về NULL khi bất kỳ đối số nào là NULL, đó là lý do tại sao các bộ phim không có đạo diễn lại hiển thị NULL ở trên.

Tên bí danh của trường

Ví dụ trên đã trả về mã nối chuỗi dưới dạng tên trường. Để sử dụng tên trường mô tả rõ hơn trong tập kết quả, hãy áp dụng bí danh cột. Cú pháp cơ bản như sau.

SELECT `column_name|value|expression` [AS] `alias_name`;

tại ĐÂY

  • “SELECT `column_name|value|expression`” là câu lệnh SELECT thông thường, có thể là tên cột, giá trị hoặc biểu thức.
  • "[BẰNG]" là từ khóa tùy chọn đứng trước tên bí danh.
  • “`bí danh_name`” Đây là bí danh được trả về trong tập kết quả dưới dạng tên trường.

Cùng một truy vấn nhưng với tên cột có ý nghĩa hơn:

SELECT Concat(`title`, ' (', `director`, ')') AS `Concat`, `year_released` FROM `movies`;

Chúng ta thu được kết quả sau.

concat năm_phát hành
Cướp biển vùng Caribe 4 (Rob Marshall) 2011
Lãng quên Sarah Marshal (Nicholas Stoller) 2008
NULL 2008
Code Tên Black (Edgar Jimz) 2010
NULL 2007
NULL 2007
NULL 2007
Honey mooners (John Schultz) 2005
NULL 2012

Lấy danh sách thành viên hiển thị năm sinh

Giả sử chúng ta muốn có một danh sách tất cả các thành viên hiển thị số thành viên, họ tên đầy đủ và năm sinh. Chúng ta có thể sử dụng hàm chuỗi LEFT để thực hiện điều này.tracNhập năm sinh từ trường ngày sinh.

SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;

tại ĐÂY

  • “TRÁI(`ngày_sinh`,4)” các Hàm chuỗi TRÁI Hàm này nhận ngày sinh làm tham số và chỉ trả về 4 ký tự từ bên trái.
  • “NHƯ `năm_sinh`”tên bí danh cột đã được trả về trong kết quả của chúng tôi. Từ khóa AS là tùy chọnBạn có thể bỏ qua phần đó và truy vấn vẫn hoạt động.

Thực thi truy vấn trong MySQL Việc chạy lệnh Workbench so với cơ sở dữ liệu myflixdb cho ra kết quả như hình bên dưới.

số_thành_viên tên đầy đủ năm sinh
1 Janet Jones 1980
2 Janet Smith Jones 1980
3 Robert Phil 1989
4 Gloria Williams 1984

Việc viết truy vấn thủ công chỉ là một trong những cách để có được tập kết quả. Workbench cũng có thể tự động xây dựng câu lệnh cho bạn.

Sử dụng SQL MySQL Workbench

Bây giờ chúng ta sẽ sử dụng MySQL Công cụ Workbench dùng để tạo kịch bản hiển thị tất cả tên trường từ bảng danh mục của chúng ta.

1. Nhấp chuột phải vào bảng Danh mục. Nhấp vào “Chọn hàng – Giới hạn 1000”.

2. MySQL Workbench tự động tạo một truy vấn SQL và dán nó vào trình soạn thảo.

3. Kết quả truy vấn được hiển thị trong lưới bên dưới trình chỉnh sửa.

sử dụng SQL MySQL Workbench

Như ảnh chụp màn hình cho thấy, chúng tôi không tự viết câu lệnh SELECT. MySQL Workbench đã tạo ra nó cho chúng ta.

Tại sao lại sử dụng lệnh SELECT trong SQL khi chúng ta đã có MySQL Bàn làm việc?

Bạn có thể tự hỏi tại sao bạn cần học lệnh SQL SELECT khi đã có một công cụ như... MySQL Workbench trả về kết quả tương tự mà không cần bất kỳ kiến ​​thức nào về ngôn ngữ SQL. Cách làm tắt đó là khả thi, nhưng... học lệnh SELECT mang lại cho bạn nhiều hơn linh hoạtđiều khiển trên của bạn Câu lệnh CHỌN SQL.

MySQL Bàn làm việc thuộc loại “Truy vấn bằng ví dụCông cụ (QBE) này nhằm mục đích tạo ra các câu lệnh SQL nhanh hơn và tăng năng suất của người dùng.

Việc học lệnh SQL SELECT cho phép bạn tạo ra... truy vấn phức tạp những thứ không thể dễ dàng tạo ra bằng các tiện ích Truy vấn theo Ví dụ như MySQL Bàn làm việc.

Để nâng cao năng suất, bạn có thể tạo mã trong MySQL Workbenchthì tùy chỉnh nó để đáp ứng yêu cầu của bạnĐiều đó chỉ có thể thực hiện được khi bạn hiểu cách thức hoạt động của các câu lệnh SQL.

Hiểu biết về MySQL Câu lệnh SELECT

Câu Hỏi Thường Gặp

Thông thường là đúng. Câu lệnh SELECT * đọc mọi cột, bao gồm cả các trường văn bản và dữ liệu nhị phân lớn mà bạn có thể không cần, và nó chặn việc bao phủ các chỉ mục. Việc đặt tên cho các cột giúp tập kết quả nhỏ hơn và truy vấn nhanh hơn.

Các từ khóa như SELECT và FROM không phân biệt chữ hoa chữ thường. So sánh chuỗi tuân theo bảng mã của cột, vì vậy một bảng mã không phân biệt chữ hoa chữ thường như utf8mb4_0900_ai_ci coi “Janet” và “janet” là bằng nhau.

Thông thường nguyên nhân là do thiếu chỉ mục. Hãy chạy lệnh EXPLAIN trước khi thực hiện truy vấn để xem liệu có vấn đề gì không. MySQL Thực hiện quét toàn bộ bảng, sau đó lập chỉ mục các cột đã lọc hoặc đã kết hợp và chỉ trả về các hàng bạn cần.

Đúng vậy. Các công cụ chuyển đổi văn bản thành SQL sẽ chuyển đổi một yêu cầu thông thường thành câu lệnh SELECT sau khi chúng biết được lược đồ của bạn. RevHãy xem xét các phép nối và bộ lọc được tạo ra, vì mô hình AI có thể tạo ra các tên cột không tồn tại.

Không. AI soạn thảo truy vấn nhanh chóng, nhưng bạn vẫn cần kiểm tra logic, các phép nối và hiệu năng. MySQL WorkbenchViệc nắm vững câu lệnh SELECT giúp bạn phát hiện kết quả sai trước khi nó được đưa vào sản xuất.

Tóm tắt bài viết này với: