Mysql 笔记(二)
来源:互联网 发布:网络教育金融牌照 编辑:程序博客网 时间:2024/06/04 19:24
Mysql 笔记(二)
本文仅是作为学习过程中记录笔记(Mysql菜鸟教程学习的整理):
UPDATE 修改表格数据语法
UPDATE table_name SET field=field_name1, field2=f_val2[WHERE clause]
- 可以同时更新一个或多个字段
- 可以在WHERE子句中指定任何条件
- 可以在单独表中同时更新数据
+-----------+--------------+---------------+-----------------+| runoob_id | runoob_title | runoob_author | submission_date |+-----------+--------------+---------------+-----------------+| 1 | find a job | q_fight | NULL |+-----------+--------------+---------------+-----------------+1 row in set (0.00 sec)mysql> UPDATE runoob_tbl SET submission_date='2017-09-11';mysql> select * from runoob_tbl;+-----------+--------------+---------------+-----------------+| runoob_id | runoob_title | runoob_author | submission_date |+-----------+--------------+---------------+-----------------+| 1 | find a job | q_fight | 2017-09-11 |+-----------+--------------+---------------+-----------------+1 row in set (0.00 sec)
DELECT删除数据语法
DELECT FROM table_name [WHERE clause]
- 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
- 可以在 WHERE 子句中指定任何条件
- 可以在单个表中一次性删除记录。
mysql> DELETE FROM runoob_tbl WHERE runoob_id=1;Query OK, 1 row affected (0.00 sec)mysql> select * from runoob_tbl;Empty set (0.00 sec)
LIKE 语法
我们知道在 MySQL
中使用 SQL SELECT
命令来读取数据, 同时我们可以在 SELECT 语句中使用 WHERE
子句来获取指定的记录。 WHERE
子句中可以使用等号 = 来设定获取数据的条件,如 "runoob_author = 'RUNOOB.COM'"
但是有时候我们需要获取 runoob_author
字段含有 "COM"
字符的所有记录,这时我们就需要在 WHERE 子句中使用 SQL LIKE 子句。 SQL LIKE
子句中使用百分号 %
字符来表示任意字符,类似于UNIX或正则表达式中的星号 *
。
如果没有使用百分号 %, LIKE
子句与等号 =
的效果是一样的。
SELECT field1, field2,...fieldN FROM table_nameWHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
- where指定任何条件,用like代替=号,LIKE通常与%一同使用,类似于一个元字符的搜索功能。AND/OR指定多个条件,LIKE可以和update delete等结合。
mysql> select runoob_author from runoob_tbl where runoob_title like 'just ';Empty set (0.00 sec)mysql> select runoob_author from runoob_tbl where runoob_title like 'just%';+---------------+| runoob_author |+---------------+| q_fight || justin |+---------------+2 rows in set (0.00 sec)
UNION语法
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
SELECT expression1, expression2, ... expression_nFROM tables[WHERE conditions]UNION [ALL | DISTINCT]SELECT expression1, expression2, ... expression_nFROM tables[WHERE conditions];
- expression1, expression2, … expression_n: 要检索的列。
- tables要检索的数据表
- DISTINCT:可选,删除结果中的重复数据,默认是删除的,ALL返回所有的结果数据,包括重复数据。
测试表格+-----------+-------------+| kabble_id | kabble_time |+-----------+-------------+| 1 | 2017-09-11 || 2 | 2008-10-11 |+-----------+-------------+mysql> select * from runoob_tbl;+-----------+------------------+---------------+-----------------+| runoob_id | runoob_title | runoob_author | submission_date |+-----------+------------------+---------------+-----------------+| 2 | just learn | q_fight | 2017-09-11 || 3 | just test | justin | 2017-09-11 || 4 | andy story | doublek | 2016-10-05 || 5 | machine learning | NG | 2013-10-05 |+-----------+------------------+---------------+-----------------+
mysql> select submission_date from runoob_tbl union ALL select kabble_time from kabble;+-----------------+| submission_date |+-----------------+| 2017-09-11 || 2017-09-11 || 2016-10-05 || 2013-10-05 || 2017-09-11 || 2008-10-11 |+-----------------+
Mysql排序语句
SELECT field1, field2,...fieldN table_name1, table_name2...ORDER BY field1, [field2...] [ASC [DESC]]
mysql> select * from runoob_tbl ORDER BY submission_date DESC;+-----------+------------------+---------------+-----------------+| runoob_id | runoob_title | runoob_author | submission_date |+-----------+------------------+---------------+-----------------+| 2 | just learn | q_fight | 2017-09-11 || 3 | just test | justin | 2017-09-11 || 4 | andy story | doublek | 2016-10-05 || 5 | machine learning | NG | 2013-10-05 |+-----------+------------------+---------------+-----------------+
GROUP BY 语句
根据一列或者多列进行分组,在每组可以进行COUNT、SUM 、AVG等函数
SELECT column_name, function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_name;
mysql> SELECT * FROM employee_tbl;+----+--------+---------------------+--------+| id | name | date | singin |+----+--------+---------------------+--------+| 1 | 小明 | 2016-04-22 15:25:33 | 1 || 2 | 小王 | 2016-04-20 15:25:47 | 3 || 3 | 小丽 | 2016-04-19 15:26:02 | 2 || 4 | 小王 | 2016-04-07 15:26:14 | 4 || 5 | 小明 | 2016-04-11 15:26:40 | 4 || 6 | 小明 | 2016-04-04 15:26:54 | 2 |+----+--------+---------------------+--------+mysql> SELECT name, count(*) FROM employee_tbl GROUP BY name;+--------+----------+| name | count(*) |+--------+----------+| 小丽 | 1 || 小明 | 3 || 小王 | 2 |+--------+----------+mysql> SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name;+--------+--------------+| name | singin_count |+--------+--------------+| 小丽 | 2 || 小明 | 7 || 小王 | 7 |+--------+--------------+mysql> SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;+--------+--------------+| name | singin_count |+--------+--------------+| 小丽 | 2 || 小明 | 7 || 小王 | 7 || NULL | 16 |+--------+--------------+
- 使用WITH ROLLUP 实现在分组统计的基础上,再进行相同的统计(SUM,AVG,COUNT…)
Mysql连接使用
使用 MySQL 的 JOIN 在两个或多个表中查询数据。
可以在 SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 JOIN 来联合多表查询。
- INNER JOIN :获得两个表中字段匹配关系的记录
- LEFT JOIN:左表中所有记录+右表中匹配的
- RIGHT JOIN:右表中所有记录+左表中匹配的
mysql> SELECT * FROM tcount_tbl;+---------------+--------------+| runoob_author | runoob_count |+---------------+--------------+| 菜鸟教程 | 10 || RUNOOB.COM | 20 || Google | 22 |+---------------+--------------+3 rows in set (0.00 sec)mysql> SELECT * from runoob_tbl;+-----------+---------------+---------------+-----------------+| runoob_id | runoob_title | runoob_author | submission_date |+-----------+---------------+---------------+-----------------+| 1 | 学习 PHP | 菜鸟教程 | 2017-04-12 || 2 | 学习 MySQL | 菜鸟教程 | 2017-04-12 || 3 | 学习 Java | RUNOOB.COM | 2015-05-01 || 4 | 学习 Python | RUNOOB.COM | 2016-03-06 || 5 | 学习 C | FK | 2017-04-05 |+-----------+---------------+---------------+-----------------+
mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;+-----------+---------------+--------------+| runoob_id | runoob_author | runoob_count |+-----------+---------------+--------------+| 1 | 菜鸟教程 | 10 || 2 | 菜鸟教程 | 10 || 3 | RUNOOB.COM | 20 || 4 | RUNOOB.COM | 20 |+-----------+---------------+--------------+等价于:SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a, tcount_tbl b WHERE a.runoob_author = b.runoob_author;mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a LEFT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;+-----------+---------------+--------------+| runoob_id | runoob_author | runoob_count |+-----------+---------------+--------------+| 1 | 菜鸟教程 | 10 || 2 | 菜鸟教程 | 10 || 3 | RUNOOB.COM | 20 || 4 | RUNOOB.COM | 20 || 5 | FK | NULL |+-----------+---------------+--------------+mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a RIGHT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;+-----------+---------------+--------------+| runoob_id | runoob_author | runoob_count |+-----------+---------------+--------------+| 1 | 菜鸟教程 | 10 || 2 | 菜鸟教程 | 10 || 3 | RUNOOB.COM | 20 || 4 | RUNOOB.COM | 20 || NULL | NULL | 22 |+-----------+---------------+--------------+
NULL值处理
- IS NULL: 当前列是NULL 返回true
- IS NOT NULL: 当列的值不为 NULL, 运算符返回 true
- <=>: 比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true
- 关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 ,在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 false,即 NULL = NULL 返回false 。MySQL 中处理 NULL 使用 IS NULL 和 IS NOT NULL 运算符。
事务
MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!
- 只使用了Innodb数据库引擎的数据库或者表才支持事务
- 事务处理用来维护数据库的完整性,保证成批的语句要么全部执行,要么全部不执行
- 事务用来管理insert,update,delete语句
事务的四要素:
Atomicity(原子性):要么成功,要么失败
consistency(持久性):有非法数据,事务撤回
isolation(隔离性):事务独立运行,一个事务处理后的结果,影响了其他事物,那么其他事物撤回,事务100%隔离需要牺牲速度。
durability(可靠性):软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit 选项 决定什么时候把事务保存到日志里。
事务控制语句
- BEGIN/START TRANSACTION: 显示开启一个事务
- COMMIT:提交事务,使对数据的修改永久性
- ROLLBACK:回滚,会结束用户的事务,撤销所有正在进行未提交的修改。
- SAVEPOINT identifier:SAVEPOINT允许在事务中创建一个保存点,一个事务中可以有多个SAVEPOINT
- RELEASE SAVEPOINT identifie:删除事务结点
- ROLLBACK TO identifier:回滚到标记结点
- SET TRANSACTION:设置事务的隔离性
事务处理两种方法:
1、BEGIN、ROLLBACK、COMMIT实现:
- BEGIN : 开始一个事务
- ROLLBACK: 事务回滚
- COMMIT: 事务确认
2直接用SET改变事务自动提交的模式
- SET AUTOCOMMIT=0/1 禁止/开始
mysql> select * from runoob_transaction_test;Empty set (0.00 sec)mysql> begin; Query OK, 0 rows affected (0.00 sec)mysql> insert into runoob_transaction_test value(5);Query OK, 1 row affected (0.00 sec)mysql> insert into runoob_transaction_test value(6);Query OK, 1 row affected (0.00 sec)mysql> commit;Query OK, 0 rows affected (0.00 sec)mysql> select * from runoob_transaction_test;+------+| id |+------+| 5 || 6 |+------+2 rows in set (0.00 sec)mysql> begin;Query OK, 0 rows affected (0.00 sec)mysql> insert into runoob_transaction_test values(7);Query OK, 1 row affected (0.00 sec)mysql> rollback; Query OK, 0 rows affected (0.00 sec)mysql> select * from runoob_transaction_test;+------+| id |+------+| 5 || 6 |+------+2 rows in set (0.00 sec)
ALTER 命令
用来修改表名,数据字段等;
1、删除、增加表字段
select * from runoob_tbl;+-----------+---------------+---------------+-----------------+| runoob_id | runoob_title | runoob_author | submission_date |+-----------+---------------+---------------+-----------------+| 1 | 学习 PHP | 菜鸟教程 | 2017-04-12 || 2 | 学习 MySQL | 菜鸟教程 | 2017-04-12 || 3 | 学习 Java | RUNOOB.COM | 2015-05-01 || 4 | 学习 Python | RUNOOB.COM | 2016-03-06 || 5 | 学习 C | FK | 2017-04-05 |+-----------+---------------+---------------+-----------------+mysql> ALTER TABLE runoob_tbl DROP runoob_author;mysql> select * from runoob_tbl;+-----------+---------------+-----------------+| runoob_id | runoob_title | submission_date |+-----------+---------------+-----------------+| 1 | 学习 PHP | 2017-04-12 || 2 | 学习 MySQL | 2017-04-12 || 3 | 学习 Java | 2015-05-01 || 4 | 学习 Python | 2016-03-06 || 5 | 学习 C | 2017-04-05 |+-----------+---------------+-----------------+mysql> ALTER TABLE runoob_tbl ADD runoob_author char;mysql> show columns from runoob_tbl;+-----------------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-----------------+--------------+------+-----+---------+----------------+| runoob_id | int(11) | NO | PRI | NULL | auto_increment || runoob_title | varchar(100) | NO | | NULL | || submission_date | date | YES | | NULL | || runoob_author | char(1) | YES | | NULL | |+-----------------+--------------+------+-----+---------+----------------+mysql> ALTER TABLE runoob_tbl ADD i INT FIRST;mysql> show columns from runoob_tbl;+-----------------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-----------------+--------------+------+-----+---------+----------------+| i | int(11) | YES | | NULL | || runoob_id | int(11) | NO | PRI | NULL | auto_increment || runoob_title | varchar(100) | NO | | NULL | || submission_date | date | YES | | NULL | || runoob_author | char(1) | YES | | NULL | |+-----------------+--------------+------+-----+---------+----------------+mysql> ALTER TABLE runoob_tbl ADD j INT AFTER runoob_id;Query OK, 0 rows affected (0.03 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> show columns from runoob_tbl;+-----------------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-----------------+--------------+------+-----+---------+----------------+| i | int(11) | YES | | NULL | || runoob_id | int(11) | NO | PRI | NULL | auto_increment || j | int(11) | YES | | NULL | || runoob_title | varchar(100) | NO | | NULL | || submission_date | date | YES | | NULL | || runoob_author | char(1) | YES | | NULL | |+-----------------+--------------+------+-----+---------+----------------+
2、修改字段类型及名称
在ALTER命令中使用MODIFY或CHANGE 子句。
mysql> ALTER TABLE runoob_tbl MODIFY runoob_author INT(10);Query OK, 5 rows affected (0.02 sec)Records: 5 Duplicates: 0 Warnings: 0mysql> show columns from runoob_tbl;+-----------------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-----------------+--------------+------+-----+---------+----------------+| i | int(11) | YES | | NULL | || runoob_id | int(11) | NO | PRI | NULL | auto_increment || j | int(11) | YES | | NULL | || runoob_title | varchar(100) | NO | | NULL | || submission_date | date | YES | | NULL | || runoob_author | int(10) | YES | | NULL | |+-----------------+--------------+------+-----+---------+----------------+mysql> ALTER TABLE runoob_tbl CHANGE runoob_author KK INT(10);Query OK, 0 rows affected (0.00 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> show columns from runoob_tbl;+-----------------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-----------------+--------------+------+-----+---------+----------------+| i | int(11) | YES | | NULL | || runoob_id | int(11) | NO | PRI | NULL | auto_increment || j | int(11) | YES | | NULL | || runoob_title | varchar(100) | NO | | NULL | || submission_date | date | YES | | NULL | || KK | int(10) | YES | | NULL | |+-----------------+--------------+------+-----+---------+----------------+修改字段时,可设置默认值,不设置则为NULLmysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;+-----------------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-----------------+--------------+------+-----+---------+----------------+| i | int(11) | YES | | 1000 | || runoob_id | int(11) | NO | PRI | NULL | auto_increment || j | int(11) | YES | | NULL | || runoob_title | varchar(100) | NO | | NULL | || submission_date | date | YES | | NULL | || KK | int(10) | YES | | NULL | |+-----------------+--------------+------+-----+---------+----------------+#删除字段的默认值:mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
修改表名
ALTER TABLE 语句中使用RENAME子句来实现。
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
索引
索引可以大大提高检索速度。
- 普通索引
创建CREATE INDEX indexName ON mytable(username(length)); 删除DROP INDEX [indexName] ON mytable; 修改表结构增加索引ALTER table tableName ADD INDEX indexName(columnName)创建表时直接指定CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );
- 普通索引
索引列的值必须是唯一的,如果是组合索引,则列值得组合必须是唯一的。
创建索引CREATE UNIQUE INDEX indexName ON mytable(username(length)) 修改表结构ALTER TABLE table_name ADD UNIQUE [indexName](username(length))
有四种方式来添加数据表的索引:
ALTER TABLE tbl_name ADD PRIMARY KEY (column_list):
该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULLALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。
- ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现多次。
- ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。
实例
mysql> ALTER TABLE testalter_tbl ADD INDEX (c);ALTER添加删除主键添加时确保该主键不为空mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;
临时表
临时表只在当前连接是可见,当关闭连接后,Mysql会自动删除表并释放所有空间。
创建临时表CREATE TEMPORARY TABLE table_name (column1 type1,...,);手动删除临时表DROP TABLE table_name;
复制表
单纯的CREATE TABLE …. SELECT 命令无法实现完整复制。
完整复制步骤:
- 使用SHOW CREATE TABLE 命令获取创建数据表语句,该语句包含了原始表的结构,索引等。
- 复制以下命令显示的SQL语句,修改数据表名
- 使用INSERT INTO … SELECT 实现。
步骤一:mysql> SHOW CREATE TABLE runoob_tbl \G;*************************** 1. row *************************** Table: runoob_tblCreate Table: CREATE TABLE `runoob_tbl` ( `runoob_id` int(11) NOT NULL auto_increment, `runoob_title` varchar(100) NOT NULL default '', `runoob_author` varchar(40) NOT NULL default '', `submission_date` date default NULL, PRIMARY KEY (`runoob_id`), UNIQUE KEY `AUTHOR_INDEX` (`runoob_author`)) ENGINE=InnoDB 1 row in set (0.00 sec)步骤二:mysql> CREATE TABLE `clone_tbl` ( -> `runoob_id` int(11) NOT NULL auto_increment, -> `runoob_title` varchar(100) NOT NULL default '', -> `runoob_author` varchar(40) NOT NULL default '', -> `submission_date` date default NULL, -> PRIMARY KEY (`runoob_id`), -> UNIQUE KEY `AUTHOR_INDEX` (`runoob_author`)-> ) ENGINE=InnoDB;步骤三:mysql> INSERT INTO clone_tbl (runoob_id, -> runoob_title, -> runoob_author, -> submission_date) -> SELECT runoob_id,runoob_title, -> runoob_author,submission_date -> FROM runoob_tbl;Query OK, 3 rows affected (0.07 sec)Records: 3 Duplicates: 0 Warnings: 0
Mysql序列使用
mysql序列是一组整数:1,2,3…,一张数据表只能有一个字段自增主键,如果想实现其他字段也实现自动增加,可以使用mysql序列实现。
- 使用 MySQL AUTO_INCREMENT 来定义列。
- 获取AUTO_INCREMWNT的值:在MySQL的客户端中你可以使用 SQL中的LAST_INSERT_ID( ) 函数来获取最后的插入表中的自增列的值。
- 重置序列,可通过删除自增列,然后重新添加实现。
mysql> ALTER TABLE table_name DROP id;mysql> ALTER TABLE table_name -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, -> ADD PRIMARY KEY (id);
设置序列开始值:
默认情况下从1开始,可以指定创建表时指定mysql> CREATE TABLE insect -> ( -> id INT UNSIGNED NOT NULL AUTO_INCREMENT, -> PRIMARY KEY (id), -> name VARCHAR(30) NOT NULL, -> date DATE NOT NULL, -> origin VARCHAR(30) NOT NULL)engine=innodb auto_increment=100 charset=utf8;创建表完成后设置:mysql> ALTER TABLE t AUTO_INCREMENT = 100;
重复值处理
1、防止出现重复值
指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。
CREATE TABLE person_tbl( first_name CHAR(20), last_name CHAR(20), sex CHAR(10)); #这种情况下不指定索引和主键,因此可能可以多条重复记录CREATE TABLE person_tbl( first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sex CHAR(10), PRIMARY KEY (last_name, first_name)); #这里将first_name、last_name设置双主键,设置了数据的唯一性,主键必须为NOT NULL#如果我们设置了唯一索引,那么在插入重复数据时,SQL语句将无法执行成功,并抛出错。可用 INSERT IGNORE INTO与INSERT INTO 插入,前者执行后不会抛出错误。mysql> INSERT IGNORE INTO person_tbl (last_name, first_name) -> VALUES( 'Jay', 'Thomas');Query OK, 1 row affected (0.00 sec)
2、添加一个UNIQUE索引
CREATE TABLE person_tbl( first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sex CHAR(10) UNIQUE (last_name, first_name));
统计重复数据
mysql> SELECT COUNT(*) as repetitions, last_name, first_name -> FROM person_tbl -> GROUP BY last_name, first_name -> HAVING repetitions > 1; #确定那一列有重复 #在列选择上用COUNT(*)列出那些列 #GROUP BY子句中列出的列。 #HAVING子句设置重复数大于1。#过滤重复数据mysql> SELECT DISTINCT last_name, first_name -> FROM person_tbl;
Mysql导出、导入数据
mysql> SELECT * FROM table_name -> INTO OUTFILE 'path';输出指定格式,用‘,’隔开。SELECT a,b,a+b INTO OUTFILE '/tmp/result.text'FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'LINES TERMINATED BY '\n'FROM test_table;
- LOAD DATA INFILE是SELECT … INTO OUTFILE的逆操作,SELECT句法。为了将一个数据库的数据写入一个文件,使用SELECT … INTO OUTFILE,为了将文件读回数据库,使用LOAD DATA INFILE。
- SELECT…INTO OUTFILE ‘file_name’形式的SELECT可以把被选择的行写入一个文件中。该文件被创建到服务器主机上,因此必须拥有FILE权限,才能使用此语法。
- 输出不能是一个已存在的文件。防止文件数据被篡改。
- 在UNIX中,该文件被创建后是可读的,权限由MySQL服务器所拥有。这意味着,虽然你就可以读取该文件,但可能无法将其删除。
导入数据
mysql> LOAD DATA LOCAL INFILE 'file_name' INTO TABLE mytbl;#如果指定LOCAL关键词,则表明从客户主机上按路径读取文件。如果没有指定,则文件在服务器上按路径读取文件。#可以明确地在LOAD DATA语句中指出列值的分隔符和行尾标记,但是默认标记是定位符和换行符。两个子句都是可选的,但是如果两个同时被指定,FIELDS 子句必须出现在 LINES 子句之前。
- mysql笔记(二)
- MySQL笔记(二)
- Mysql 笔记(二)
- MySQL学习笔记(二)
- 《mysql必知必会》笔记(二)
- mysql学习笔记(二)
- Mysql学习笔记(二)
- MySQL学习笔记(二)
- mysql学习笔记(二)
- Mysql学习笔记(二)
- MySQL学习笔记(二)
- MySQL学习笔记(二)
- mysql高级笔记(二)
- MySql学习笔记(二)
- 深入浅出MySQL笔记(二)
- MySQL数据库学习笔记(二)
- MySQL学习笔记(二)架构组成
- Linux学习笔记(二):MYSQL
- mysql 分析各个使用技巧
- 安全框架shiro
- Activity调用finish方法,会回调哪些生命周期方法?
- 移动端web性能——动画
- 行人检测之Faster-RCNN
- Mysql 笔记(二)
- 集群与负载均衡
- c++ 四种类型转化方式
- Android studio中极光推送的快速集成
- 安全的广播LocalBroadcastManager
- cordova 状态栏颜色的变换
- git原理简介
- JAVA 线程优化及线程池管理
- 《深入理解Java虚拟机》笔记1