【MySQL】DML数据操作
DML解释
DML
: 数据操作语言(Data Manipulation Language)
。
主要操作有:
-
插入数据
-
修改数据
-
删除数据
插入数据
1. 语法
-
插入单行
1
INSERT INTO 表名(字段名1,字段名2,......) VALUES(值1,值2,......);
-
插入多行
1
INSERT INTO 表名(字段名1,字段名2,......) VALUES(值1,值2,......),(值1,值2,......)...;
2. 说明
-
字段名列表和字段值列表一一对应。
-
数值型值不用引号,非数值型值必须使用引号。
-
字段名列表可以省略不写,此时字段列表的顺序和定义时一样。
3. 示例
|
|
修改数据
1. 语法
- 修改单表:
|
|
- 修改多表,sql92语法:
|
|
- 修改多表,sql99语法:
|
|
删除数据
1. 语法
- DELETE语句:
|
|
- TRUNCATE语句:
|
|
2. DELETE 和 TRUNCATE 的比较
-
DELETE
可以添加WHERE
条件,TRUNCATE
不能添加WHERE
条件,一次性清除所有数据。 -
TRUNCATE
的效率较高。 -
对于带自增长列的表,使用
DELETE
删除后,重新插入数据时,记录从断点处开始。使用TRUNCATE
删除后,重新插入数据时,记录从1开始。 -
DELETE
删除数据时,会返回受影响的行数,TRUNCATE
删除数据时,不会返回受影响的行数。 -
DELETE
删除数据时,可以支持事务回滚,TRUNCATE
删除数据时,不支持事务回滚。
导入数据
1. 命令行导入
|
|
data.sql
是包含表结构的备份文件。
2. source
在MySQL
客户端中使用source
,也可以导入数据:
|
|
data.sql
是包含表结构的数据文件。
3. LOAD DATA
在MySQL
客户端,可以使用LOAD DATA
语句插入数据:
|
|
LOCAL
表示从客户端主机读取文件,如果省略该关键字,表示从服务器读取文件。
默认情况下,数据文件列的顺序和表字段的顺序是一一对应的,如果想指定字段的顺序,则语法为:
|
|
4. mysqlimport
在命令行使用mysqlimport
工具,也可以将数据插入数据库。
|
|
注意,表名必须和文件名保持一致。
mysqlimport
选项的含义与LOAD DATA
语句类似。
导出数据
1. SELECT … INRO OUTFILE
|
|
说明:
-
FIELDS TERMINATED BY
:指定生成的字段分隔符。 -
ENCLOSED BY
:将每个字段用指定符号包围。 -
LINES TERMINATED BY
:指定生成的行分隔符。
执行上述语句时,需要注意MySQL
的secure_file_priv
变量,该变量有三个值:
-
NULL
:不允许生成文件。 -
具体的路径:生成的文件只能放在该路径下。
-
空值:对文件的生成不做限制。
2. mysqldump
在命令行下使用mysqldump
,可以实现数据导出备份。用法为:
|
|
连接选项:
-
-u
:用户名。 -
-p
:密码。 -
-h
:数据库IP。 -
-P
:连接端口。
输出内容选项:
-
--add-drop-database
:在数据库的创建语句前,添加DROP DATABASE
语句。 -
--add-drop-table
:在表的创建语句前,添加DROP TABLE
语句,默认开启。 -
--skip-add-drop-table
:表的创建语句前,不添加DROP TABLE
语句。 -
-n
:不包含数据库的创建语句。 -
-t
:不包含数据表的创建语句。 -
-d
:不包含数据。