MySQL - SELECT 語句



MySQL SELECT 語句

SELECT 語句用於從一個或多個(現有)表中檢索行。您可以與該語句一起使用各種子句。

語法

以下是 SELECT 語句的基本語法:

SELECT select_expr FROM table_references WHERE where_condition

其中,select_expr 是指示您需要檢索的列的表示式,table_reference 是您可以從中檢索行的表的名稱或引用。

可以使用 "*" 選擇表中的所有列,只需將表的名稱作為 table_reference 傳遞,即可檢索所有記錄。

示例

假設我們使用 CREATE TABLE 語句在 MySQL 資料庫中建立了一個名為 **Sales** 的表,如下所示:

CREATE TABLE sales(
   ID INT,
   ProductName VARCHAR(255),
   CustomerName VARCHAR(255),
   DispatchDate date,
   DeliveryTime time,
   Price INT,
   Location VARCHAR(255)
);

以下查詢在上面建立的表中插入一行:

INSERT INTO SALES values
(1, 'Key-Board', 'Raja', DATE('2019-09-01'), TIME('11:00:00'), 7000, 
'Hyderabad'),
(2, 'Earphones', 'Roja', DATE('2019-05-01'), TIME('11:00:00'), 2000, 
'Vishakhapatnam'),
(3, 'Mouse', 'Puja', DATE('2019-03-01'), TIME('10:59:59'), 3000, 
'Vijayawada'),
(4, 'Mobile', 'Vanaja', DATE('2019-03-01'), TIME('10:10:52'), 9000, 
'Chennai'),
(5, 'Headset', 'Jalaja', DATE('2019-04-06'), TIME('11:08:59'), 6000, 
'Goa');

以下查詢使用 SELECT 語句檢索價格值大於 6000 的 Sales 表的記錄:

SELECT * FROM SALES WHERE PRICE>6000;

輸出

以下是上述查詢的輸出:

ID ProductName CustomerName DispatchDate DeliveryTime Price Location
1 鍵盤 Raja 2019-09-01 11:00:00 7000 海德拉巴
4 手機 Vanaja 2019-03-01 10:10:52 9000 欽奈

選擇特定列

透過將所需的列名稱指定為 selectexpr,您可以檢索表的記錄的所需列值。以下查詢從 Sales 表中檢索 ID、CustomerName、ProductName、Price 列:

SELECT ID, CustomerName, ProductName, Price FROM SALES;

輸出

上述查詢產生以下輸出:

ID CustomerName ProductName Price
1 Raja 鍵盤 7000
2 Roja 耳機 2000
3 Puja 滑鼠 3000
4 Vanaja 手機 9000
5 Jalaja 耳機 6000

無表選擇

使用 SELECT 語句,您還可以檢索所需的計算結果,而無需提供表引用:

SELECT 1250*2256;

輸出

以下是上述查詢的輸出:

1250*2256
2820000

select_expr 的別名

您可以使用別名列名作為 select 表示式。

假設我們使用 CREATE 語句在 MySQL 資料庫中建立了一個名為 MyPlayers 的表,如下所示

CREATE TABLE Players(
   ID INT,
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Date_Of_Birth date,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255),
   PRIMARY KEY (ID)
);

現在,我們將使用 INSERT 語句在 Players 表中插入 7 條記錄:

Insert into Players values
(1, 'Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India'),
(2, 'Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica'),
(3, 'Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka'),
(4, 'Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India'),
(5, 'Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India'),
(6, 'Ravindra', 'Jadeja', DATE('1988-12-06'), 'Nagpur', 'India'),
(7, 'James', 'Anderson', DATE('1982-06-30'), 'Burnley', 'England');

以下查詢使用 AS 子句將 First_Name、Last_Name 值檢索為 name:

SELECT CONCAT(last_name,' ',first_name) AS name, Country FROM 
Players ORDER BY name;

輸出

上述 mysql 查詢生成以下輸出:

name Country
Anderson James 英格蘭
Dhawan Shikhar 印度
Jadeja Ravindra 印度
Kohli Virat 印度
Sharma Rohit 印度
Trott Jonathan 南非

使用 ORDER BY 子句

ORDER BY 子句用於根據指定的列排列表的記錄,我們可以將此子句與 TABLE 語句一起使用,如下所示:

TABLE table_name ORDER BY column_name;

其中 table_name 是表名,column_name 是您需要根據其排列指定表的列名。

示例

假設我們使用 CREATE 語句建立了一個名為 EMP 的表,如下所示:

CREATE TABLE EMP (
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT
);

現在,讓我們使用 INSERT 語句在上面建立的表中插入值,如下所示:

INSERT INTO EMP VALUES
('Krishna', 'Sharma', 19, 'M', 2000),
('Raj', 'Kandukuri', 20, 'M', 7000),
('Ramya', 'Ramapriya', 25, 'F', 5000),
('Alexandra', 'Botez', 26, 'F', 2000);

以下查詢根據 FIRST_NAME 列排列並檢索 EMP 表的內容:

SELECT * FROM EMP ORDER BY FIRST_NAME;

輸出

以下是上述 mysql 查詢的輸出:

FIRST_NAME LAST_NAME AGE SEX INCOME
Alexandra Botez 26 F 2000
Krishna Sharma 19 M 2000
Raj Kandukuri 20 M 7000
Ramya Ramapriya 25 F 5000

使用 LIMIT 子句

在獲取記錄時,如果想限制特定數量的記錄,可以使用MySQL的LIMIT子句。此子句也可以與TABLE語句一起使用,如下所示:

SELECT * FROM table_name LIMIT lt_number OFFSET off_number;

其中,table_name是表名,lt_number是要檢索的記錄數,off_number是偏移量。

如果需要從第n條記錄(非第一條)開始限制記錄,可以使用OFFSET與LIMIT一起使用。

示例

以下查詢根據INCOME列對EMP表的記錄進行排序,並檢索前兩條記錄:

SELECT * FROM EMP ORDER BY INCOME LIMIT 2;

輸出

上述MySQL查詢將生成如下所示的輸出:

FIRST_NAME LAST_NAME AGE SEX INCOME
Krishna Sharma 19 M 2000
Alexandra Botez 26 F 2000

使用 UNION 子句

MySQL UNION子句用於組合兩個或多個SELECT/TABLE語句的結果,但不返回任何重複的行。

要使用UNION子句,每個SELECT語句必須:

  • 選擇相同數量的列。
  • 具有相同數量的列表達式。
  • 具有相同的資料型別,並且
  • 順序相同

以下是使用UNION子句(與TABLE語句一起使用)的語法:

TABLE table_name1 UNION TABLE table_name2;

示例

假設我們使用如下所示的CREATE語句建立了一個名為Student的表:

CREATE TABLE Student (
   Name VARCHAR(20), 
   age INT
);

現在,讓我們向Student表中插入三條記錄:

INSERT INTO Student VALUES 
('Krishna', 22),
('Raju', 20),
('Rahman', 21);

您可以如下所示驗證student表的內容:

SELECT * FROM Student;

輸出

以下是上述查詢的輸出:

姓名 年齡
Krishna 22
Raju 20
Rahman 21

假設我們有另一個表,行數相同(以及資料型別):

CREATE TABLE Staff (
   Name VARCHAR(20), 
   age INT
);

現在,讓我們向Staff表中插入幾條記錄:

INSERT INTO Staff VALUES 
('Amit', 35),
('Nanda', 33),
('Swathi', 39);

您可以如下所示驗證student表的內容:

SELECT * FROM Staff;

輸出

以下是上述查詢的輸出:

姓名 年齡
Amit 35
Nanda 33
Swathi 39

以下查詢使用JOIN子句組合上述兩個表:

SELECT * FROM STUDENT UNION SELECT * FROM STAFF;

輸出

上述 mysql 查詢生成以下輸出:

姓名 年齡
Krishna 22
Raju 20
Rahman 21
Amit 35
Nanda 33
Swathi 39

UNION 中的 ORDER BY 和 LIMIT

您也可以對兩個SELECT語句使用ORDER BY或LIMIT子句,並使用UNION將它們連線起來。為此,請將兩個SELECT語句放在括號中,然後使用UNION連線它們。

示例

(SELECT * FROM Staff ORDER BY age LIMIT 2) UNION 
(SELECT * FROM Student ORDER BY age LIMIT 2);

輸出

上述查詢將生成如下所示的輸出:

姓名 年齡
Nanda 33
Amit 35
Raju 20
Rahman 21

JOIN 子句

當您將資料分成兩個表時,您可以使用連線從這兩個表中獲取組合的記錄。

語法

以下是MySQL JOIN子句的語法:

escaped_table_reference: {
   table_reference
   | { JOIN table_reference }
}

示例

假設我們使用以下CREATE語句建立了一個名為EMPLOYEE的表:

CREATE TABLE EMPLOYEE(
   ID INT NOT NULL,
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT,
   CONTACT INT
);

現在,讓我們向EMPLOYEE表中插入幾條記錄:

INSERT INTO Employee VALUES
(101, 'Ramya', 'Rama Priya', 27, 'F', 9000, 101),
(102, 'Vinay', 'Bhattacharya', 20, 'M', 6000, 102),
(103, 'Sharukh', 'Sheik', 25, 'M', 8300, 103),
(104, 'Sarmista', 'Sharma', 26, 'F', 10000, 104);

假設我們使用以下CREATE語句建立了另一個名為CONTACT的表:

CREATE TABLE CONTACT(
   ID INT NOT NULL,
   EMAIL CHAR(20) NOT NULL,
   PHONE LONG,
   CITY CHAR(20)
);

現在,讓我們向CONTACT表中插入四條記錄:

INSERT INTO CONTACT (ID, EMAIL, CITY) VALUES
(101, 'ramya@mymail.com', 'Hyderabad'),
(102, 'vinay@mymail.com', 'Vishakhapatnam'),
(103, 'sharukha@mymail.com', 'Pune'),
(104, 'sarmista@mymail.com', 'Mumbai');

以下語句檢索組合這兩個表中的值的資料:

SELECT * from EMPLOYEE JOIN CONTACT ON EMPLOYEE.CONTACT = CONTACT.ID;

注意: 對於以下格式的輸出,您可以在上述查詢的末尾使用“\G”。

輸出

以下是上述查詢的輸出:

************* 1. row *************
        ID: 101
FIRST_NAME: Ramya
 LAST_NAME: Rama Priya
       AGE: 27
       SEX: F
    INCOME: 9000
   CONTACT: 101
        ID: 101
     EMAIL: ramya@mymail.com
     PHONE: NULL
      CITY: Hyderabad
************* 2. row *************
        ID: 102
FIRST_NAME: Vinay
 LAST_NAME: Bhattacharya
       AGE: 20
       SEX: M
    INCOME: 6000
   CONTACT: 102
        ID: 102
     EMAIL: vinay@mymail.com
     PHONE: NULL
      CITY: Vishakhapatnam
************* 3. row *************
        ID: 103
FIRST_NAME: Sharukh
 LAST_NAME: Sheik
       AGE: 25
       SEX: M
    INCOME: 8300
   CONTACT: 103
        ID: 103
     EMAIL: sharukha@mymail.com
     PHONE: NULL
      CITY: Pune
************* 4. row *************
        ID: 104
FIRST_NAME: Sarmista
 LAST_NAME: Sharma
       AGE: 26
       SEX: F
    INCOME: 10000
   CONTACT: 104
        ID: 104
     EMAIL: sarmista@mymail.com
     PHONE: NULL
      CITY: Mumbai

連線兩個查詢時,您可以使用AS子句在查詢中使用表的別名,如下所示:

SELECT t1.FIRST_NAME, t2.email FROM employee AS t1 INNER JOIN 
contact AS t2 ON t1.id = t2.id;

輸出

上述MySQL查詢產生以下輸出:

FIRST_NAME 郵箱
Ramya ramya@mymail.com
Vinay vinay@mymail.com
Sharukh sharukha@mymail.com
Sarmista sarmista@mymail.com

SELECT ... INTO 語句

使用SELECT ..... INTO語句,您可以儲存語句的結果。您可以將結果儲存到變數(或多個變數)、輸出檔案和轉儲檔案中,其中儲存單行。以下是此語句的語法:

SELECT select_expression INTO variable_list
Or,
SELECT select_expression INTO OUTFILE output_file
Or,
SELECT select_expression INTO DUMPFILE dump_file

示例

假設我們建立了一個名為emp的表,並使用以下查詢填充它:

CREATE TABLE Emp (
   ID INT, 
   Name VARCHAR(255), 
   Salary INT, 
   Location VARCHAR(255)
);

現在,讓我們向Emp表中插入幾條記錄:

INSERT INTO Emp VALUES
(101, 'Raju', 35000, 'Bangalore'),
(102, 'Raman', 45000, 'Vishakhapatnam'),
(103, 'Rahman', 55000, 'Hyderabad');

以下查詢從上面建立的表中檢索員工的姓名和位置,並將其儲存在變數中:

SELECT Name, Location INTO @name, @loc FROM Emp where ID =101;

您可以驗證變數的值,如下所示:

SELECT @name, @loc;

輸出

以下是上述 mysql 查詢的輸出:

@name @loc
Raju Bangalore

以下查詢檢索emp表的內容並將其儲存在本地文字檔案中:

SELECT Name, Location INTO OUTFILE 'Folder_Location/sample.txt' FROM Emp;

如果您驗證sample.txt檔案,您可以看到emp表的記錄,如下所示:

Sample.txt

Raju Bangalore
Raman Vishakhapatnam
Rahman Hyderabad
廣告
© . All rights reserved.