Hướng dẫn how to do query in mysql - làm thế nào để thực hiện truy vấn trong mysql

Dưới đây là các ví dụ về cách giải quyết một số vấn đề phổ biến với MySQL.

Một số ví dụ sử dụng bảng

CREATE TABLE shop (
    article INT UNSIGNED  DEFAULT '0000' NOT NULL,
    dealer  CHAR(20)      DEFAULT ''     NOT NULL,
    price   DECIMAL(16,2) DEFAULT '0.00' NOT NULL,
    PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
    (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
    (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
3 để giữ giá của mỗi bài viết (số mặt hàng) cho một số nhà giao dịch (đại lý) nhất định. Giả sử rằng mỗi nhà giao dịch có một giá cố định duy nhất cho mỗi bài viết, sau đó (
CREATE TABLE shop (
    article INT UNSIGNED  DEFAULT '0000' NOT NULL,
    dealer  CHAR(20)      DEFAULT ''     NOT NULL,
    price   DECIMAL(16,2) DEFAULT '0.00' NOT NULL,
    PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
    (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
    (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
4,
CREATE TABLE shop (
    article INT UNSIGNED  DEFAULT '0000' NOT NULL,
    dealer  CHAR(20)      DEFAULT ''     NOT NULL,
    price   DECIMAL(16,2) DEFAULT '0.00' NOT NULL,
    PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
    (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
    (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
5) là chìa khóa chính cho các hồ sơ.

Bắt đầu công cụ dòng lệnh MySQL và chọn cơ sở dữ liệu:mysql and select a database:

$> mysql your-database-name

Để tạo và điền vào bảng ví dụ, hãy sử dụng các câu sau:

CREATE TABLE shop (
    article INT UNSIGNED  DEFAULT '0000' NOT NULL,
    dealer  CHAR(20)      DEFAULT ''     NOT NULL,
    price   DECIMAL(16,2) DEFAULT '0.00' NOT NULL,
    PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
    (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
    (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);

Sau khi đưa ra các câu lệnh, bảng nên có nội dung sau:

SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+

Chương 3 Nhập truy vấn

Đảm bảo rằng bạn được kết nối với máy chủ, như đã thảo luận trong phần trước. Làm như vậy không tự nó chọn bất kỳ cơ sở dữ liệu nào để làm việc, nhưng điều đó là ổn. Tại thời điểm này, điều quan trọng hơn là tìm hiểu một chút về cách phát hành truy vấn hơn là nhảy ngay trong việc tạo bảng, tải dữ liệu vào chúng và lấy dữ liệu từ chúng. Phần này mô tả các nguyên tắc cơ bản của việc nhập truy vấn, sử dụng một số truy vấn bạn có thể thử để làm quen với cách hoạt động của MySQL.mysql works.

Dưới đây là một truy vấn đơn giản yêu cầu máy chủ cho bạn biết số phiên bản và ngày hiện tại. Nhập nó vào như được hiển thị ở đây sau lời nhắc

CREATE TABLE shop (
    article INT UNSIGNED  DEFAULT '0000' NOT NULL,
    dealer  CHAR(20)      DEFAULT ''     NOT NULL,
    price   DECIMAL(16,2) DEFAULT '0.00' NOT NULL,
    PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
    (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
    (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
6 và nhấn Enter:

mysql> SELECT VERSION(), CURRENT_DATE;
+--------------+--------------+
| VERSION()    | CURRENT_DATE |
+--------------+--------------+
| 5.7.1-m4-log | 2012-12-25   |
+--------------+--------------+
1 row in set (0.01 sec)
mysql>

Truy vấn này minh họa một số điều về MySQL:mysql:

  • Một truy vấn thường bao gồm một câu lệnh SQL theo sau là dấu chấm phẩy. (Có một số trường hợp ngoại lệ trong đó một dấu chấm phẩy có thể bị bỏ qua.

  • Khi bạn phát hành truy vấn, MySQL sẽ gửi nó đến máy chủ để thực thi và hiển thị kết quả, sau đó in một dấu nhắc

    CREATE TABLE shop (
        article INT UNSIGNED  DEFAULT '0000' NOT NULL,
        dealer  CHAR(20)      DEFAULT ''     NOT NULL,
        price   DECIMAL(16,2) DEFAULT '0.00' NOT NULL,
        PRIMARY KEY(article, dealer));
    INSERT INTO shop VALUES
        (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
        (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
    6 khác để cho biết rằng nó đã sẵn sàng cho một truy vấn khác.mysql sends it to the server for execution and displays the results, then prints another
    CREATE TABLE shop (
        article INT UNSIGNED  DEFAULT '0000' NOT NULL,
        dealer  CHAR(20)      DEFAULT ''     NOT NULL,
        price   DECIMAL(16,2) DEFAULT '0.00' NOT NULL,
        PRIMARY KEY(article, dealer));
    INSERT INTO shop VALUES
        (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
        (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
    6 prompt to indicate that it is ready for another query.

  • MySQL hiển thị đầu ra truy vấn ở dạng bảng (hàng và cột). Hàng đầu tiên chứa nhãn cho các cột. Các hàng sau đây là kết quả truy vấn. Thông thường, nhãn cột là tên của các cột bạn tìm nạp từ các bảng cơ sở dữ liệu. Nếu bạn đang truy xuất giá trị của một biểu thức chứ không phải là một cột bảng (như trong ví dụ vừa hiển thị), MySQL sẽ gắn nhãn cho cột bằng cách sử dụng chính biểu thức. displays query output in tabular form (rows and columns). The first row contains labels for the columns. The rows following are the query results. Normally, column labels are the names of the columns you fetch from database tables. If you're retrieving the value of an expression rather than a table column (as in the example just shown), mysql labels the column using the expression itself.

  • MySQL cho thấy có bao nhiêu hàng đã được trả lại và thời gian truy vấn mất bao lâu để thực thi, điều này mang lại cho bạn một ý tưởng sơ bộ về hiệu suất máy chủ. Các giá trị này không chính xác vì chúng đại diện cho thời gian đồng hồ tường (không phải CPU hoặc thời gian máy) và vì chúng bị ảnh hưởng bởi các yếu tố như tải máy chủ và độ trễ mạng. . shows how many rows were returned and how long the query took to execute, which gives you a rough idea of server performance. These values are imprecise because they represent wall clock time (not CPU or machine time), and because they are affected by factors such as server load and network latency. (For brevity, the rows in set line is sometimes not shown in the remaining examples in this chapter.)

Từ khóa có thể được nhập trong bất kỳ trường hợp thư nào. Các truy vấn sau đây tương đương:

mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;

Đây là một truy vấn khác. Nó chứng minh rằng bạn có thể sử dụng MySQL làm máy tính đơn giản:mysql as a simple calculator:

mysql> SELECT SIN(PI()/4), (4+1)*5;
+------------------+---------+
| SIN(PI()/4)      | (4+1)*5 |
+------------------+---------+
| 0.70710678118655 |      25 |
+------------------+---------+
1 row in set (0.02 sec)

Các truy vấn được hiển thị cho đến nay là các câu lệnh tương đối ngắn, một dòng. Bạn thậm chí có thể nhập nhiều câu lệnh trên một dòng. Chỉ cần kết thúc từng người bằng một dấu chấm phẩy:

mysql> SELECT VERSION(); SELECT NOW();
+------------------+
| VERSION()        |
+------------------+
| 5.7.10-ndb-7.5.1 |
+------------------+
1 row in set (0.00 sec)
+---------------------+
| NOW()               |
+---------------------+
| 2016-01-29 18:02:55 |
+---------------------+
1 row in set (0.00 sec)

Một truy vấn không cần phải được cung cấp tất cả trên một dòng, vì vậy các truy vấn dài yêu cầu một số dòng không phải là vấn đề. MySQL xác định nơi câu lệnh của bạn kết thúc bằng cách tìm kiếm dấu chấm phẩy chấm dứt, không phải bằng cách tìm kiếm kết thúc của dòng đầu vào. .mysql determines where your statement ends by looking for the terminating semicolon, not by looking for the end of the input line. (In other words, mysql accepts free-format input: it collects input lines but does not execute them until it sees the semicolon.)

Dưới đây là một câu lệnh nhiều dòng đơn giản:

mysql> SELECT
    -> USER()
    -> ,
    -> CURRENT_DATE;
+---------------+--------------+
| USER()        | CURRENT_DATE |
+---------------+--------------+
| jon@localhost | 2010-08-06   |
+---------------+--------------+

Trong ví dụ này, hãy chú ý cách lời nhắc thay đổi từ

CREATE TABLE shop (
    article INT UNSIGNED  DEFAULT '0000' NOT NULL,
    dealer  CHAR(20)      DEFAULT ''     NOT NULL,
    price   DECIMAL(16,2) DEFAULT '0.00' NOT NULL,
    PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
    (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
    (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
6 thành
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
0 sau khi bạn nhập dòng đầu tiên của truy vấn nhiều dòng. Đây là cách MySQL chỉ ra rằng nó chưa thấy một tuyên bố hoàn chỉnh và đang chờ phần còn lại. Lời nhắc là bạn của bạn, bởi vì nó cung cấp phản hồi có giá trị. Nếu bạn sử dụng phản hồi đó, bạn luôn có thể nhận thức được những gì MySQL đang chờ đợi.mysql indicates that it has not yet seen a complete statement and is waiting for the rest. The prompt is your friend, because it provides valuable feedback. If you use that feedback, you can always be aware of what mysql is waiting for.

Nếu bạn quyết định bạn không muốn thực hiện một truy vấn mà bạn đang trong quá trình nhập, hãy hủy nó bằng cách nhập

SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
1:

mysql> SELECT
    -> USER()
    -> \c
mysql>

Ở đây cũng vậy, hãy chú ý lời nhắc. Nó chuyển trở lại

CREATE TABLE shop (
    article INT UNSIGNED  DEFAULT '0000' NOT NULL,
    dealer  CHAR(20)      DEFAULT ''     NOT NULL,
    price   DECIMAL(16,2) DEFAULT '0.00' NOT NULL,
    PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
    (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
    (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
6 sau khi bạn nhập
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
1, cung cấp phản hồi để cho biết MySQL đã sẵn sàng cho một truy vấn mới.mysql is ready for a new query.

Bảng sau đây cho thấy mỗi lời nhắc bạn có thể thấy và tóm tắt ý nghĩa của chúng về trạng thái mà MySQL đang ở.mysql is in.

Lời nhắcNghĩa
CREATE TABLE shop (
    article INT UNSIGNED  DEFAULT '0000' NOT NULL,
    dealer  CHAR(20)      DEFAULT ''     NOT NULL,
    price   DECIMAL(16,2) DEFAULT '0.00' NOT NULL,
    PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
    (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
    (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
6
Sẵn sàng cho truy vấn mới
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
0
Chờ dòng truy vấn đa dòng tiếp theo
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
6
Chờ dòng tiếp theo, chờ hoàn thành một chuỗi bắt đầu bằng một trích dẫn duy nhất (
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
7)
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
8
Chờ dòng tiếp theo, chờ hoàn thành một chuỗi bắt đầu bằng một trích dẫn kép (
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
9)
mysql> SELECT VERSION(), CURRENT_DATE;
+--------------+--------------+
| VERSION()    | CURRENT_DATE |
+--------------+--------------+
| 5.7.1-m4-log | 2012-12-25   |
+--------------+--------------+
1 row in set (0.01 sec)
mysql>
0
Đang chờ dòng tiếp theo, chờ hoàn thành một số nhận dạng bắt đầu bằng Backtick (
mysql> SELECT VERSION(), CURRENT_DATE;
+--------------+--------------+
| VERSION()    | CURRENT_DATE |
+--------------+--------------+
| 5.7.1-m4-log | 2012-12-25   |
+--------------+--------------+
1 row in set (0.01 sec)
mysql>
1)
mysql> SELECT VERSION(), CURRENT_DATE;
+--------------+--------------+
| VERSION()    | CURRENT_DATE |
+--------------+--------------+
| 5.7.1-m4-log | 2012-12-25   |
+--------------+--------------+
1 row in set (0.01 sec)
mysql>
2
Chờ dòng tiếp theo, chờ hoàn thành một bình luận bắt đầu với
mysql> SELECT VERSION(), CURRENT_DATE;
+--------------+--------------+
| VERSION()    | CURRENT_DATE |
+--------------+--------------+
| 5.7.1-m4-log | 2012-12-25   |
+--------------+--------------+
1 row in set (0.01 sec)
mysql>
3

Các tuyên bố nhiều dòng thường xảy ra một cách tình cờ khi bạn có ý định phát hành truy vấn trên một dòng, nhưng quên dấu chấm phẩy chấm dứt. Trong trường hợp này, MySQL chờ thêm đầu vào:mysql waits for more input:

mysql> SELECT USER()
    ->

Nếu điều này xảy ra với bạn (bạn nghĩ rằng bạn đã nhập một câu lệnh nhưng phản hồi duy nhất là lời nhắc

SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
0), rất có thể MySQL đang chờ dấu chấm phẩy. Nếu bạn không nhận thấy những gì lời nhắc đang nói với bạn, bạn có thể ngồi đó một lúc trước khi nhận ra những gì bạn cần làm. Nhập dấu chấm phẩy để hoàn thành câu lệnh và MySQL thực thi nó:mysql is waiting for the semicolon. If you don't notice what the prompt is telling you, you might sit there for a while before realizing what you need to do. Enter a semicolon to complete the statement, and mysql executes it:

CREATE TABLE shop (
    article INT UNSIGNED  DEFAULT '0000' NOT NULL,
    dealer  CHAR(20)      DEFAULT ''     NOT NULL,
    price   DECIMAL(16,2) DEFAULT '0.00' NOT NULL,
    PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
    (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
    (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
0

Lời nhắc

SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
6 và
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
8 xảy ra trong quá trình thu thập chuỗi (một cách khác để nói rằng MySQL đang chờ hoàn thành chuỗi). Trong MySQL, bạn có thể viết các chuỗi được bao quanh bởi các ký tự
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
7 hoặc
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
9 (ví dụ:
mysql> SELECT VERSION(), CURRENT_DATE;
+--------------+--------------+
| VERSION()    | CURRENT_DATE |
+--------------+--------------+
| 5.7.1-m4-log | 2012-12-25   |
+--------------+--------------+
1 row in set (0.01 sec)
mysql>
9 hoặc
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;
0) và MySQL cho phép bạn nhập các chuỗi trải dài nhiều dòng. Khi bạn thấy dấu nhắc
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
6 hoặc
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
8, điều đó có nghĩa là bạn đã nhập một dòng chứa một chuỗi bắt đầu bằng ký tự trích dẫn
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
7 hoặc
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
9, nhưng vẫn chưa nhập trích dẫn phù hợp kết thúc chuỗi. Điều này thường chỉ ra rằng bạn đã vô tình bỏ qua một ký tự trích dẫn. Ví dụ:mysql lets you enter strings that span multiple lines. When you see a
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
6 or
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
8 prompt, it means that you have entered a line containing a string that begins with a
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
7 or
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
9 quote character, but have not yet entered the matching quote that terminates the string. This often indicates that you have inadvertently left out a quote character. For example:

CREATE TABLE shop (
    article INT UNSIGNED  DEFAULT '0000' NOT NULL,
    dealer  CHAR(20)      DEFAULT ''     NOT NULL,
    price   DECIMAL(16,2) DEFAULT '0.00' NOT NULL,
    PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
    (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
    (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
1

Nếu bạn nhập câu lệnh

mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;
5 này, sau đó nhấn Enter và chờ kết quả, không có gì xảy ra. Thay vì tự hỏi tại sao truy vấn này mất quá nhiều thời gian, hãy chú ý đến manh mối được cung cấp bởi lời nhắc
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
6. Nó cho bạn biết rằng MySQL hy vọng sẽ thấy phần còn lại của một chuỗi chưa kết thúc. (Bạn có thấy lỗi trong câu lệnh không? Chuỗi
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;
7 bị thiếu dấu ngoặc đơn thứ hai.)Enter and wait for the result, nothing happens. Instead of wondering why this query takes so long, notice the clue provided by the
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
6 prompt. It tells you that mysql expects to see the rest of an unterminated string. (Do you see the error in the statement? The string
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;
7 is missing the second single quotation mark.)

Tại thời điểm này, bạn làm gì? Điều đơn giản nhất là hủy truy vấn. Tuy nhiên, bạn không thể gõ

SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
1 trong trường hợp này, bởi vì MySQL diễn giải nó như là một phần của chuỗi mà nó đang thu thập. Thay vào đó, hãy nhập ký tự trích dẫn đóng (để MySQL biết bạn đã hoàn thành chuỗi), sau đó nhập
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
1:mysql interprets it as part of the string that it is collecting. Instead, enter the closing quote character (so mysql knows you've finished the string), then type
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
1:

CREATE TABLE shop (
    article INT UNSIGNED  DEFAULT '0000' NOT NULL,
    dealer  CHAR(20)      DEFAULT ''     NOT NULL,
    price   DECIMAL(16,2) DEFAULT '0.00' NOT NULL,
    PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
    (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
    (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
2

Lời nhắc thay đổi trở lại

CREATE TABLE shop (
    article INT UNSIGNED  DEFAULT '0000' NOT NULL,
    dealer  CHAR(20)      DEFAULT ''     NOT NULL,
    price   DECIMAL(16,2) DEFAULT '0.00' NOT NULL,
    PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
    (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
    (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
6, chỉ ra rằng MySQL đã sẵn sàng cho một truy vấn mới.mysql is ready for a new query.

Lời nhắc

mysql> SELECT VERSION(), CURRENT_DATE;
+--------------+--------------+
| VERSION()    | CURRENT_DATE |
+--------------+--------------+
| 5.7.1-m4-log | 2012-12-25   |
+--------------+--------------+
1 row in set (0.01 sec)
mysql>
0 tương tự như lời nhắc
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
6 và
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
8, nhưng cho thấy rằng bạn đã bắt đầu nhưng chưa hoàn thành một mã định danh được trích xuất BackTick.

Điều quan trọng là phải biết những gì

SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
6,
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
8 và
mysql> SELECT VERSION(), CURRENT_DATE;
+--------------+--------------+
| VERSION()    | CURRENT_DATE |
+--------------+--------------+
| 5.7.1-m4-log | 2012-12-25   |
+--------------+--------------+
1 row in set (0.01 sec)
mysql>
0 nhắc nhở biểu thị, bởi vì nếu bạn nhập nhầm một chuỗi chưa kết thúc, bất kỳ dòng nào nữa bạn nhập dường như bị bỏ qua bởi MySQL, bao gồm một dòng chứa
CREATE TABLE shop (
    article INT UNSIGNED  DEFAULT '0000' NOT NULL,
    dealer  CHAR(20)      DEFAULT ''     NOT NULL,
    price   DECIMAL(16,2) DEFAULT '0.00' NOT NULL,
    PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
    (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
    (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
7. Điều này có thể khá khó hiểu, đặc biệt nếu bạn không biết rằng bạn cần cung cấp báo giá chấm dứt trước khi bạn có thể hủy truy vấn hiện tại.mysql—including a line containing
CREATE TABLE shop (
    article INT UNSIGNED  DEFAULT '0000' NOT NULL,
    dealer  CHAR(20)      DEFAULT ''     NOT NULL,
    price   DECIMAL(16,2) DEFAULT '0.00' NOT NULL,
    PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
    (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
    (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
7. This can be quite confusing, especially if you do not know that you need to supply the terminating quote before you can cancel the current query.

Ghi chú

Các câu lệnh Multiline từ thời điểm này được viết mà không có lời nhắc thứ cấp (

SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
|       1 | A      |  3.45 |
|       1 | B      |  3.99 |
|       2 | A      | 10.99 |
|       3 | B      |  1.45 |
|       3 | C      |  1.69 |
|       3 | D      |  1.25 |
|       4 | D      | 19.95 |
+---------+--------+-------+
0 hoặc khác), để giúp bản sao và dán các câu lệnh để tự thử dễ dàng hơn.

Làm cách nào để bắt đầu truy vấn MySQL?

Mở MySQL Workbench và kết nối với cơ sở dữ liệu và đặt cơ sở dữ liệu mặc định. Sau đó, mở trình chỉnh sửa SQL bằng cách nhấp vào Tệp menu> Tab Truy vấn mới hoặc bằng cách nhấn phím Ctrl+T. Sau đó, trong SQL Editor nhập truy vấn của bạn, ví dụ, chọn * từ khách hàng, sau đó nhấn Ctrl+Enter để chạy truy vấn hiện tại trong MySQL Workbench.select * from customer, then press Ctrl+Enter to run the current query in MySQL Workbench.

Làm thế nào để một truy vấn hoạt động trong mysql?

Khi bạn phát hành truy vấn, MySQL sẽ gửi nó đến máy chủ để thực thi và hiển thị kết quả, sau đó in một lời nhắc MySQL> khác để cho biết rằng nó đã sẵn sàng cho một truy vấn khác.MySQL hiển thị đầu ra truy vấn ở dạng bảng (hàng và cột).Hàng đầu tiên chứa nhãn cho các cột.mysql sends it to the server for execution and displays the results, then prints another mysql> prompt to indicate that it is ready for another query. mysql displays query output in tabular form (rows and columns). The first row contains labels for the columns.

Làm cách nào để viết một truy vấn SQL?

Làm thế nào để tạo một câu lệnh SQL..
Bắt đầu truy vấn của bạn với câu lệnh CHỌN.Chọn [Tất cả |riêng biệt] ... .
Thêm tên trường bạn muốn hiển thị.Field1 [, Field2, 3, 4, v.v.] ....
Thêm (các) điều khoản tuyên bố của bạn hoặc tiêu chí lựa chọn.Yêu cầu: ... .
Xem lại câu lệnh Chọn của bạn.Đây là một tuyên bố mẫu:.

Truy vấn trong MySQL với ví dụ là gì?

Truy vấn MySQL là bất kỳ lệnh nào được sử dụng để truy xuất dữ liệu từ bảng.MySQL có thể được sử dụng để truy vấn dữ liệu, lọc dữ liệu, sắp xếp dữ liệu, tham gia các bảng, nhóm dữ liệu, sửa đổi dữ liệu.any command that used to retrieve the data from a table. MySQL can be used for querying the data, filtering data, sorting data, joining the tables, grouping data, modifying the data.