黄东旭解析 TiDB 的核心优势
656
2023-04-09
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小时内删除侵权内容。