SQL CRUD操作
众所周知,CRUD操作是任何计算机编程语言或技术的基础。因此,在深入了解任何编程语言或技术之前,必须熟练掌握其CRUD操作。这个规则同样适用于数据库。
让我们通过示例来了解SQL中的CRUD操作。我们将在支持的示例中使用MySQL数据库编写所有查询。
1. 创建:
在CRUD操作中,“C”是一个表示创建(create)的首字母缩写,表示将数据添加或插入到SQL表中。 因此,首先我们将使用CREATE命令创建一个表,然后使用INSERT INTO命令将行插入到创建的表中。
表创建的语法:
CREATE TABLE Table_Name (ColumnName1 Datatype, ColumnName2 Datatype,..., ColumnNameN Datatype);
其中,where,
- Table_Name是我们要为表分配的名称。
- Column_Name是我们希望在表中存储数据的属性。
- Datatype分配给每个列。Datatype决定将存储在相应列中的数据类型。
表中插入数据的语法:
INSERT INTO Table_Name (ColumnName1,...., ColumnNameN) VALUES (Value 1,....,Value N),....., (Value 1,....,Value N);
在SQL中创建表之前,我们需要创建一个数据库或选择一个已存在的数据库。由于我们已经有了一个数据库,我们将使用USE命令来选择该数据库。
mysql> USE dbe;
现在,我们将编写一个查询来在名为 employee 的数据库中创建一个名为 dbe 的表。
mysql> CREATE TABLE employee(ID INT PRIMARY KEY, First_Name VARCHAR(20), Last_Name VARCHAR(20), Salary INT, Email_Id VARCHAR(40));
为了确保表按照我们在表创建过程中指定的列名、数据类型和大小创建,我们将执行以下查询:
mysql> DESC employee;
您将获得以下输出:
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
ID | int(11) | NO | PRI | NULL | |
First_Name | varchar(20) | YES | NULL | ||
Last_Name | varchar(20) | YES | NULL | ||
Salary | int(11) | YES | NULL | ||
Email_Id | varchar(40) | YES | NULL |
上述结果验证了根据要求成功创建了表。
我们将执行以下查询,将多条记录插入到员工表中:
INSERT INTO employee(ID, First_Name, Last_Name, Salary, Email_Id) VALUES(1, "Neeta", "Korade", 59000, "neetak12@gmail.com"), (2, "Sushma", "Singh", 62000, "sushsingh67@gmail.com"), (3, "Kavita", "Rathod", 27000, "kavitar09@gmail.com"), (4, "Mrunalini", "Deshmukh", 88000, "mrunald78@gmail.com"), (5, "Swati", "Patel", 34000, "swatip67@gmail.com"), (6, "Laxmi", "Kadam", 44000, "laxmik14@gmail.com"), (7, "Lalita", "Shah", 66000, "lalita45@gmail.com"), (8, "Savita", "Kulkarni", 31000, "savitak56@gmail.com"), (9, "Shravani", "Jaiswal", 38000, "shravanij39@gmail.com"), (10, "Shweta", "Wagh", 20000, "shwetaw03@gmail.com");
2. 读取:
在CRUD操作中,“R”代表的是“读取”(read),意味着从SQL表中检索或获取数据。因此,我们将使用SELECT命令从SQL表中获取插入的记录。可以使用SELECT查询中的星号(*)从表中检索所有记录。还可以使用SELECT查询中的WHERE子句,仅检索满足特定条件的记录。
获取所有记录的语法:
SELECT *FROM TableName;
根据条件获取记录的语法:
SELECT *FROM TableName WHERE CONDITION;
示例1:
编写一个查询以获取存储在员工表中的所有记录。
查询:
mysql> SELECT *FROM employee;
在这里,通过使用SELECT查询中的星号,意味着将检索每个记录的所有列值。
执行上述查询后,您将获得以下输出:
ID | First_Name | Last_Name | Salary | Email_Id |
---|---|---|---|---|
1 | Neeta | Korade | 59000 | stash |
2 | Sushma | Singh | 62000 | stash |
3 | Kavita | Rathod | 27000 | stash |
4 | Mrunalini | Deshmukh | 88000 | stash |
5 | Swati | Patel | 34000 | stash |
6 | Laxmi | Kadam | 44000 | stash |
7 | Lalita | Shah | 66000 | stash |
8 | Savita | Kulkarni | 31000 | stash |
9 | Shravani | Jaiswal | 38000 | stash |
10 | Shweta | Wagh | 20000 | stash |
从员工表成功检索到所有记录。
例2:
编写查询以仅检索员工表中薪水高于35000的记录。
查询:
mysql> SELECT *FROM employee WHERE Salary > 35000;
这里,在SELECT查询中使用了一个星号。这意味着将检索每个记录的所有列的值。我们已经在薪水上应用了WHERE子句,这意味着记录将根据薪水进行过滤。
你将得到如下输出:
ID | First_Name | Last_Name | Salary | Email_Id |
---|---|---|---|---|
1 | Neeta | Korade | 59000 | stash |
2 | Sushma | Rathod | 62000 | stash |
4 | Mrunalini | Deshmukh | 88000 | stash |
6 | Laxmi | Kadam | 44000 | stash |
7 | Lalita | Shah | 66000 | stash |
9 | Shravani | Jaiswal | 38000 | stash |
在员工表中,有六条记录的工资超过35000。
3. 更新:
在CRUD操作中,“U”是对“更新”的缩写,表示对SQL表中的记录进行更新。 因此,我们将使用UPDATE命令对表中的数据进行更改。
语法:
UPDATE Table_Name SET ColumnName = Value WHERE CONDITION;
示例1:
编写一个查询语句,将员工ID为6的员工的姓氏更新为“Bose”。
查询语句:
mysql> UPDATE employee SET Last_Name = "Bose" WHERE ID = 6;
在这个SELECT查询中,我们使用了SET关键字来将一个员工的姓氏更新为“Bose”。我们只想为id为6的员工更新姓氏,所以我们使用WHERE子句指定了这个条件。
为了确保id为6的员工的姓氏成功更新,我们将执行SELECT查询。
mysql> SELECT *FROM employee;
ID | First_Name | Last_Name | Salary | Email_Id |
---|---|---|---|---|
1 | Neeta | Korade | 59000 | stash |
2 | Sushma | Singh | 62000 | stash |
3 | Kavita | Rathod | 27000 | stash |
4 | Mrunalini | Deshmukh | 88000 | stash |
5 | Swati | Patel | 34000 | stash |
6 | Laxmi | Bose | 44000 | stash |
7 | Lalita | Shah | 66000 | stash |
8 | Savita | Kulkarni | 31000 | stash |
9 | Shravani | Jaiswal | 38000 | stash |
10 | Shweta | Wagh | 20000 | stash |
以上的结果验证了员工ID为6的员工的姓氏已更改为’Bose’。
示例2:
编写一个查询语句,将员工ID为10的员工的工资和电子邮件ID分别更新为’35000’和’stash’。
查询:
mysql> UPDATE employee SET Salary = "35000", Email_Id= "shwetawagh03@gmail.com" WHERE ID = 10;
在 UPDATE 查询中,我们使用 SET 关键字将员工的薪水更新为 ‘35000’,将电子邮件 ID 更新为 ‘stash’。我们只想更新员工 ID 为 10 的员工的薪水和电子邮件 ID,所以我们使用 WHERE 子句指定了这个条件。
为了确保员工 ID 为 10 的员工的薪水和电子邮件 ID 能成功更新,我们将执行 SELECT 查询。
mysql> SELECT *FROM employee;
ID | First_Name | Last_Name | Salary | Email_Id |
---|---|---|---|---|
1 | Neeta | Korade | 59000 | stash |
2 | Sushma | Singh | 62000 | stash |
3 | Kavita | Rathod | 27000 | stash |
4 | Mrunalini | Deshmukh | 88000 | stash |
5 | Swati | Patel | 34000 | stash |
6 | Laxmi | Bose | 44000 | stash |
7 | Lalita | Shah | 66000 | stash |
8 | Savita | Kulkarni | 31000 | stash |
9 | Shravani | Jaiswal | 38000 | stash |
10 | Shweta | Wagh | 35000 | stash |
以上结果验证了员工ID为10的员工的工资和电子邮件已更改为“35000”和“stash”。
4. 删除:
在CRUD操作中,“D”是“删除”的首字母缩写,意味着从SQL表中删除记录。 我们可以使用DELETE查询从SQL表中删除所有行。还可以使用DELETE查询中的WHERE子句删除仅满足特定条件的特定记录。
删除所有记录的语法:
DELETE FROM TableName;
根据条件删除记录的语法:
DELETE FROM TableName WHERE CONDITION;
示例1:
编写一个查询,从员工表中删除薪水高于34000的员工记录。
查询:
mysql> DELETE FROM employee WHERE Salary = 34000;
在这里,我们对雇员表应用了DELETE查询。我们只想删除工资为34000的雇员记录,所以我们使用WHERE子句指定了这个条件。
我们将执行SELECT查询以确保工资为34000的雇员记录已成功删除。
mysql> SELECT *FROM employee;
ID | First_Name | Last_Name | Salary | Email_Id |
---|---|---|---|---|
1 | Neeta | Korade | 59000 | stash |
2 | Sushma | Singh | 62000 | stash |
3 | Kavita | Rathod | 27000 | stash |
4 | Mrunalini | Deshmukh | 88000 | stash |
6 | Laxmi | Bose | 44000 | stash |
7 | Lalita | Shah | 66000 | stash |
8 | Savita | Kulkarni | 31000 | stash |
9 | Shravani | Jaiswal | 38000 | stash |
10 | Shweta | Wagh | 35000 | stash |
以上结果证明工资为34000的员工不再存在于员工表中。
示例2:
编写一个查询来删除员工表中的所有记录。
首先,让我们看看当前可用的员工表。
mysql> SELECT *FROM employee;
从员工表中删除所有记录,我们将在员工表上执行DELETE查询。
mysql> DELETE FROM employee;
我们将执行SELECT查询来确保从员工表中成功删除所有记录。
mysql> SELECT *FROM employee;
以上结果证实了员工表目前不包含任何记录。