SQL Select语句

SELECT 语句是SQL语言中最常用的命令。它用于访问来自一个或多个数据库表和视图的记录。它还检索符合我们想要的条件的选定数据。

通过使用此命令,我们还可以从表的特定列访问特定记录。存储 SELECT 语句返回的记录的表称为结果集表。

SQL中SELECT语句的语法

SELECT Column_Name_1, Column_Name_2, ....., Column_Name_N FROM Table_Name; 

在这个 SELECT 语法中,Column_Name_1, Column_Name_2, ....., Column_Name_N是我们要读取其数据的表中那些列的名称。

如果要访问表的所有字段中的所有行,请使用以下带有 * 星号的 SQL SELECT 语法:

SELECT * FROM table_name;  

SQL 中的 SELECT 语句示例

在这里,我们采用了以下两个不同的 SQL 示例,它们将帮助您执行 SELECT 语句以检索记录:

示例:

首先,我们必须创建新表,然后在其中插入一些虚拟记录。

使用以下查询在 SQL 中创建Student_Records表:

CREATE TABLE Student_Records   
(  
Student_Id Int PRIMARY KEY,    
First_Name VARCHAR (20),    
Address VARCHAR (20),    
Age Int NOT NULL,  
Percentage Int NOT NULL,  
Grade VARCHAR (10)   
) ;  

以下SQL将学生的记录插入到Student_Records表中:

INSERT INTO Student VALUES (201, Akash, Delhi, 18, 89, A2),   
(202, Bhavesh, Kanpur, 19, 93, A1),  
(203, Yash, Delhi, 20, 89, A2),    
(204, Bhavna, Delhi, 19, 78, B1),  
(05, Yatin, Lucknow, 20, 75, B1),  
(206, Ishika, Ghaziabad, 19, 51, C1),  
(207, Vivek, Goa, 20, 62, B2);  

以下 SQL 查询显示上述 Student_records 表中每一列的所有值:

SELECT * FROM Student_Records;  

上述查询的输出是:

Student_ID First_Name Address Age Percentage Grade
201 Akash Delhi 18 89 A2
202 Bhavesh Kanpur 19 93 A1
203 Yash Delhi 20 89 A2
204 Bhavna Delhi 19 78 B1
205 Yatin Lucknow 20 75 B1
206 Ishika Ghaziabad 19 91 C1
207 Vivek Goa 20 80 B2

带有 WHERE 子句的 SELECT 语句

WHERE 子句与 SELECT 语句一起使用,仅返回表中满足查询中指定条件的那些行。

在 SQL 中,WHERE 子句不仅与 SELECT 一起使用,而且还与其他 SQL 语句(如 UPDATE、ALTER 和 DELETE 语句)一起使用。

带有 WHERE 子句的 SELECT 语句的语法

SELECT * FROM Name_of_Table WHERE [condition];  

在语法中,我们使用 SQL 逻辑或比较运算符在 WHERE 子句中指定条件。

带有 WHERE 子句的 SELECT 语句示例

首先,我们必须创建新表,然后在其中插入一些虚拟记录。

使用以下SQL用于创建Employee_Details表:

CREATE TABLE Employee_Details  
(  
Employee_ID INT AUTO_INCREMENT PRIMARY KEY,  
Emp_Name VARCHAR (50),  
Emp_City VARCHAR (20),  
Emp_Salary INT NOT NULL,   
Emp_Panelty INT NOT NULL  
) ;  

以下 INSERT 语句将员工记录插入到 Employee_Details 表中:

INSERT INTO Employee_Details (Employee_ID, Emp_Name, Emp_City, Emp_Salary, Emp_Panelty) VALUES (101, Anuj, Ghaziabad, 25000, 500),  
(102, Tushar, Lucknow, 29000, 1000),   
(103, Vivek, Kolkata, 35000, 500),  
(104, Shivam, Goa, 22000, 500);  

以下 SELECT 查询显示Employee_Details表的数据:

SELECT * FROM Employee_Details;  
Employee_Id Emp_Name Emp_City Emp_Salary Emp_Panelty
101 Anuj Ghaziabad 25000 500
102 Tushar Lucknow 29000 1000
103 Vivek Kolkata 35000 500
104 Shivam Goa 22000 500

以下查询显示了上表中 Emp_Panelty 为 500 的员工的记录: 

SELECT * FROM Employee_Details WHERE Emp_Panelty = 500;  

此 SELECT 查询在结果中显示下表:

Employee_Id Emp_Name Emp_City Emp_Salary Emp_Panelty
101 Anuj Ghaziabad 25000 500
103 Vivek Kolkata 35000 500
104 Shivam Goa 22000 500

带有 GROUP BY 子句的 SQL SELECT 语句

GROUP BY 子句与 SELECT 语句一起使用,以显示表中列的公共数据:

带有 GROUP BY 子句的 SELECT 语句的语法

SELECT column_Name_1, column_Name_2, ....., column_Name_N aggregate_function_name(column_Name2) FROM table_name GROUP BY column_Name1;

带有 GROUP BY 子句的 SELECT 语句示例

使用以下SQL用于创建Cars_Details表:

CREATE TABLE Cars_Details  
(  
Car_Number INT PRIMARY KEY,  
Car_Name VARCHAR (50),  
Car_Price INT NOT NULL,  
Car_AmountINT NOT NULL  
) ;  

以下 INSERT 语句将汽车记录插入Cars_Details表:

INSERT INTO Cars_Details (Car_Number, Car_Name, Car_Amount, Car_Price)   
VALUES (2578, Creta, 3, 1500000),  
(9258, Audi, 2, 3000000),   
(8233, Venue, 6, 900000),  
(6214, Nexon, 7, 1000000);  

以下 SELECT 查询显示输出中的值:

SELECT * FROM Cars_Details; 
Car_Number Car_Name Car_Amount Car_Price
2578 Creta 3 1000000
9258 Audi 2 900000
8233 Venue 6 900000
6214 Nexon 7 1000000

以下带有 GROUP BY 查询的 SELECT 列出了相同价格的汽车数量: 

SELECT COUNT (Car_Name), Car_Price FROM Cars_Details GROUP BY Car_Price;  

上述 GROUP BY 查询的输出如下所示:

Count (Car_Name) Car_Price
2 1000000
2 900000

带有 HAVING 子句的 SQL SELECT 语句

SELECT 语句中的 HAVING 子句在 GROUP BY 子句定义的那些组中创建一个选择。

带有 HAVING 子句的 SELECT 语句的语法

SELECT column_Name_1, column_Name_2, ....., column_Name_N aggregate_function_name(column_Name_2) FROM table_name GROUP BY column_Name1 HAVING ;

带有 HAVING 子句的 SELECT 语句示例

让我们使用以下 CREATE 命令在 SQL 中创建Employee_Having表:

CREATE TABLE Employee_Having  
(  
Employee_Id INT PRIMARY KEY,  
Employee_Name VARCHAR (50),  
Employee_Salary INT NOT NULL,  
Employee_City VARCHAR (50)  
) ;  

以下 INSERT 语句将员工记录插入到 Employee_Having 表中:

INSERT INTO Employee_Having (Employee_Id, Employee_Name, Employee_Salary, Employee_City)   
VALUES (201, Jone, 20000, Goa),  
(202, Basant, 40000, Delhi),   
(203, Rashet, 80000,Jaipur),  
(204, Aunj, 20000, Goa),  
(205, Sumit, 50000, Delhi);  

以下 SELECT 查询在输出中显示 Employee_Having 表的值:

SELECT * FROM Employee_Having;  
Employee_Id Employee_Name Employee_Salary Employee_City
201 Jone 20000 Goa
202 Basant 40000 Delhi
203 Rashet 80000 Jaipur
204 Anuj 20000 Goa
205 Sumit 50000 Delhi

以下查询显示了上述 Employee_Having 表中超过 5000 的员工的总工资: 

SELECT SUM (Employee_Salary), Employee_City FROM Employee_Having GROUP BY Employee_City HAVING SUM(Employee_Salary)>5000;  

这个带有 SELECT 语句的 HAVING 查询显示了下表:

SUM (Employee_Salary) Employee_City
90000 Delhi
80000 Jaipur

带有 ORDER BY 子句的 SELECT 语句

带有 SQL SELECT 语句的 ORDER BY 子句以排序方式显示记录或行。

ORDER BY 子句按升序和降序排列值。很少有数据库系统默认按升序排列列的值。

带有 ORDER BY 子句的 SELECT 语句的语法

SELECT Column_Name_1, Column_Name_2, ....., column_Name_N FROM table_name WHERE [Condition] ORDER BY[column_Name_1, column_Name_2, ....., column_Name_N asc | desc ];  

带有 ORDER BY 子句的 SELECT 语句示例

CREATE TABLE Employee_Order  
(  
Id INT NOT NULL,  
FirstName VARCHAR (50),  
Salary INT,  
City VARCHAR (50)  
) ;  

以下 INSERT 语句将员工记录插入到 Employee_Having 表中:

INSERT INTO Employee_Order (Id, FirstName, Salary, City)   
VALUES (201, Jone, 20000, Goa),  
(202, Basant, 15000, Delhi),   
(203, Rashet, 80000,Jaipur),  
(204, Aunj, 90000, Goa),  
(205, Sumit, 50000, Delhi); 

以下 SELECT 查询在输出中显示表的值:

SELECT * FROM Employee_Order;  
Id FirstName Salary City
201 Jone 20000 Goa
202 Basant 15000 Delhi
203 Rashet 80000 Jaipur
204 Anuj 90000 Goa
205 Sumit 50000 Delhi

以下查询从上述 Employee_Order 表中按降序对员工的薪水进行排序:

SELECT * FROM Employee_Order ORDER BY Emp_Salary DESC;

此 SQL 查询在结果中显示下表:

Emp_Id Emp_Name Emp_Salary Emp_City
204 Anuj 90000 Goa
203 Rashet 80000 Jaipur
205 Sumit 50000 Delhi
201 Jone 20000 Goa
202 Basant 15000 Delhi

热门文章

优秀文章