MySQL 插入,更新和删除数据

网友投稿 656 2023-04-09

MySQL 插入,更新和删除数据

MySQL 插入,更新和删除数据

在 MySQL 教程的这一部分中,我们将从 MySQL 表中插入,更新和删除数据。 我们将使用INSERT,DELETE和UPDATE语句。 这些语句是 SQL 数据操作语言 _DML_的一部分。

插入数据

INSERT语句用于将数据插入表中。

我们将创建一个新表,并在其中进行示例。

mysql> CREATE TABLE Books(Id INTEGER PRIMARY KEY, Title VARCHAR(100),    -> Author VARCHAR(60));

我们使用Id,Title和Author列创建一个新表Books。

mysql> INSERT INTO Books(Id, Title, Author) VALUES(1, 'War and Peace',     -> 'Leo Tolstoy');

这是经典的INSERT SQL 语句。 我们在表名之后指定了所有列名,并在VALUES关键字之后指定了所有值。 我们将第一行添加到表中。

mysql> SELECT * FROM Books;+----+---------------+-------------+| Id | Title         | Author      |+----+---------------+-------------+|  1 | War and Peace | Leo Tolstoy |+----+---------------+-------------+

我们已经将第一行插入到Books表中。

mysql> INSERT INTO Books(Title, Author) VALUES ('The Brothers Karamazov',    -> 'Fyodor Dostoyevsky');

我们将新标题添加到Books表中。 我们省略了Id列。 Id 列具有AUTO_INCREMENT属性。 这意味着 MySQL 将自动增加 Id 列。 AUTO_INCREMENT列增加的值由auto_increment_increment系统变量控制。 默认为 1。

mysql> SELECT * FROM Books;+----+------------------------+--------------------+| Id | Title                  | Author             |+----+------------------------+--------------------+|  1 | War and Peace          | Leo Tolstoy        ||  2 | The Brothers Karamazov | Fyodor Dostoyevsky |+----+------------------------+--------------------+

这是“书籍”表中的内容。

mysql> INSERT INTO Books VALUES(3, 'Crime and Punishment',    -> 'Fyodor Dostoyevsky');

在此 SQL 语句中,我们没有在表名之后指定任何列名。 在这种情况下,我们必须提供所有值。

mysql> REPLACE INTO Books VALUES(3, 'Paradise Lost', 'John Milton');Query OK, 2 rows affected (0.00 sec)

REPLACE语句是对 SQL 标准的 MySQL 扩展。 如果它与现有行发生冲突,它将插入新行或替换旧行。 在我们的表中,带有Id=3的行。 因此,我们之前的语句将其替换为新行。 有一则消息说两行受到影响。 删除了一行并插入了一行。

mysql> SELECT * FROM Books WHERE Id=3;+----+---------------+-------------+| Id | Title         | Author      |+----+---------------+-------------+|  3 | Paradise Lost | John Milton |+----+---------------+-------------+

这就是我们现在在第三栏中。

我们可以在一个语句中同时使用INSERT和SELECT语句。

mysql> CREATE TABLE Books2(Id INTEGER PRIMARY KEY AUTO_INCREMENT,     -> Title VARCHAR(100), Author VARCHAR(60)) type=MEMORY;

首先,我们在内存中创建一个名为Books2的临时表。

mysql> INSERT INTO Books2 SELECT * FROM Books;Query OK, 3 rows affected (0.00 sec)Records: 3  Duplicates: 0  Warnings: 0

在这里,我们将所有数据插入从Books表中选择的Books2中。

mysql> SELECT * FROM Books2;+----+------------------------+--------------------+| Id | Title                  | Author             |+----+------------------------+--------------------+|  1 | War and Peace          | Leo Tolstoy        ||  2 | The Brothers Karamazov | Fyodor Dostoyevsky ||  3 | Paradise Lost          | John Milton        |+----+------------------------+--------------------+

我们验证。 一切都好。

mysql> INSERT INTO Books(Title, Author) VALUES ('The Insulted and Humiliated',    -> 'Fyodor Dostoyevsky'), ('Cousin Bette', 'Honore de Balzac');Query OK, 2 rows affected (0.00 sec)Records: 2  Duplicates: 0  Warnings: 0

我们可以使用INSERT语句在表中插入多行。 这里我们展示如何。

我们可以从文件系统中的文件插入数据。 首先,我们将Books表中的数据转储到books.csv文件中。

mysql> SELECT * INTO OUTFILE '/tmp/books.csv'    -> FIELDS TERMINATED BY ','    -> LINES TERMINATED BY '\n'    -> FROM Books;

我们将Books表中的数据写入books.csv文件。 数据将为 CSV 格式。

$ cat /tmp/books.csv 1,War and Peace,Leo Tolstoy2,The Brothers Karamazov,Fyodor Dostoyevsky3,Paradise Lost,John Milton4,The Insulted and Humiliated,Fyodor Dostoyevsky5,Cousin Bette,Honore de Balzac

我们显示books.csv文件的内容。

mysql> TRUNCATE Books;Query OK, 0 rows affected (0.00 sec)mysql> SELECT * FROM Books;Empty set (0.00 sec)

我们从表中删除所有数据。

mysql> LOAD DATA INFILE '/tmp/books.csv'        -> INTO TABLE Books        -> FIELDS TERMINATED BY ','        -> LINES TERMINATED BY '\n';

我们使用LOAD DATA INFILE语法从books.csv文件填充 Books 表。

mysql> SELECT * FROM Books;+----+-----------------------------+--------------------+| Id | Title                       | Author             |+----+-----------------------------+--------------------+|  1 | War and Peace               | Leo Tolstoy        ||  2 | The Brothers Karamazov      | Fyodor Dostoyevsky ||  3 | Paradise Lost               | John Milton        ||  4 | The Insulted and Humiliated | Fyodor Dostoyevsky ||  5 | Cousin Bette                | Honore de Balzac   |+----+-----------------------------+--------------------+

一切都好。

我们也可以从 XML 文件加载数据。 首先,我们将 Books 表中的数据写入 XML 文件。

$ mysql -uroot -p --xml -e 'SELECT * FROM mydb.Books' > books.xml

mysql监视器具有--xml选项,使我们能够以 XML 格式转储数据。 -e选项执行一条语句并退出监视器。

这是我们的 XML 文件。

mysql> LOAD XML INFILE '/home/vronskij/programming/mysql/books.xml' INTO TABLE Books;

我们从 XML 文件加载数据。 请注意,LOAD XML语句可用于 MySQL 5.5 及更高版本。

删除数据

在 MySQL 中,我们可以使用DELETE和TRUNCATE语句删除数据。 TRUNCATE语句是 SQL 规范的 MySQL 扩展。 首先,我们将从表中删除一行。 我们将使用之前创建的Books2表。

mysql> DELETE FROM Books2 WHERE Id=1;

我们用Id=1删除一行。

mysql> SELECT * FROM Books2;+----+------------------------+--------------------+| Id | Title                  | Author             |+----+------------------------+--------------------+|  2 | The Brothers Karamazov | Fyodor Dostoyevsky ||  3 | Paradise Lost          | John Milton        |+----+------------------------+--------------------+

我们验证数据。

mysql> DELETE FROM Books2;mysql> TRUNCATE Books2;

这两个 SQL 语句删除表中的所有数据。

更新数据

UPDATE语句用于更改表的选定行中的列的值。

mysql> SELECT * FROM Books;+----+-----------------------------+--------------------+| Id | Title                       | Author             |+----+-----------------------------+--------------------+|  1 | War and Peace               | Leo Tolstoy        ||  2 | The Brothers Karamazov      | Fyodor Dostoyevsky ||  3 | Paradise Lost               | John Milton        ||  4 | The Insulted and Humiliated | Fyodor Dostoyevsky ||  5 | Cousin Bette                | Honore de Balzac   |+----+-----------------------------+--------------------+

我们重新创建表Books。 这些是行。

假设我们想将“列夫·托尔斯泰”更改为“列夫·尼古拉耶维奇·托尔斯泰”表。 以下语句显示了如何完成此操作。

mysql> UPDATE Books SET Author='Lev Nikolayevich Tolstoy'    -> WHERE Id=1;

SQL 语句将Id=1列的 author 列设置为’Lev Nikolayevich Tolstoy’。

mysql> SELECT * FROM Books WHERE Id=1;+----+---------------+--------------------------+| Id | Title         | Author                   |+----+---------------+--------------------------+|  1 | War and Peace | Lev Nikolayevich Tolstoy |+----+---------------+--------------------------+

该行已正确更新。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MySQL 中的SELECT语句
下一篇:MySQL 表达式
相关文章