在数据库中创建表,只是建立了表结构,里面还没有数据。用户可以使用加载数据语句或插入元组操作来录入数据。数据录入后就可以对表中的数据进行查询、修改、删除等操作了。
①掌握各种录入数据至表的方法。
②掌握修改表中数据的方法。
③掌握复制数据表(包含结构和数据)的方法。
④掌握删除表中行的方法。
LOAD DATA
[ LOW_PRIORITY | CONCURRENT ] [ LOCAL ]
INFILE 'file_name'
[ REPLACE | IGNORE ]
INTO TABLE tbl_name
[ PARTITION ( partition_name [, partition_name ] ... )]
[ CHARACTER SET charset_name ]
[ { FIELDS | COLUMNS }
[ TERMINATED BY 'string' ]
[[ OPTIONALLY ] ENCLOSED BY 'char' ]
[ ESCAPED BY 'char' ]
]
[ LINES
[ STARTING BY 'string' ]
[ TERMINATED BY 'string' ]
]
[ IGNORE number{ LINES | ROWS } ]
[ (col_name_or_user_var
[, col_name_or_user_var ] ... ) ]
[ SET col_name={expr| DEFAULT }
[, col_name={expr| DEFAULT } ] ... ]
LOADDATA语句会以非常高的速度将文本文件中的行读入表中。如果要将表中的数据写入文件,请使用SELECT...INTOOUTFILE。
LOADDATA语句中关键字解释如下:
[LOW_PRIORITY|CONCURRENT][LOCAL]:如果指定关键词LOW_PRIORITY,LOADDATA会在其他线程完成之后再操作,但只对那些采用了表级别锁的引擎(如MyISAM)有影响,因为InnoDB使用的是行锁,所以不受影响。若指定关键词CONCURRENT,LOADDATA会和其他线程同时进行操作,这个对性能是有一些影响。LOCAL是个非常重要的关键字,指明了文件的位置,也会影响到LOADDATA命令对错误数据的处理方式。如果指定了LOCAL,则表示文件位于客户端,数据从客户端读取,会在服务端的临时目录下创建一份文件的拷贝,建议使用绝对路径,又因为涉及数据传输,所以这种方式会相对慢一些。当某条数据处理有误时,系统把这个错误记录为一个警告,不会影响下一条数据的处理;如果没有指定,则表示文件在服务器端,倘若文件名使用的是相对路径,那么又可以分为两种情况:一种是文件名前没有相对目录,则直接在默认数据库的data目录下查找;另一种是指定了相对目录,则从服务器的data目录下寻找。在处理过程中,如果遇到错误就不会继续执行。
[REPLACE|IGNORE]:当前的数据跟表中的数据有唯一性冲突的时候,如果指定了REPLACE,则替换已有值,如果指定了IGNORE,则忽略当前值。当这两种方式都未指定时,如果数据来自客户端,则重复的数据会被忽略;如果数据来源服务端,则命令会终止执行。
PARTITION:指定具体的分区。
CHARACTERSET:指定字符集。
FIELDS关键字指定了文件字段的分割格式,如果用到这个关键字,则至少有下面的一个选项:
·TERMINATEDBY描述字段的分隔符,默认情况下是tab字符(\t)。
·ENCLOSEDBY描述的是字段的括起字符。
·ESCAPEDBY描述的转义字符,默认的是反斜杠(backslash:\)。
LINES关键字指定了每条记录的分隔符默认为'\n'即为换行符。
IGNOREnumberLINES:忽略特定行数,文本文件则可以忽略掉第一行标题。
INSERT [ LOW_PRIORITY | DELAYED | HIGH_PRIORITY ] [ IGNORE ]
[ INTO ] tbl_name
[ PARTITION ( partition_name [, partition_name ] ... )]
[( col_name [, col_name ] ... )]
{{ VALUES | VALUE } ( value_list ) [, ( value_list )] ...}
[ AS row_alias [( col_alias [, col_alias ] ... ) ] ]
[ ON DUPLICATE KEY UPDATE assignment_list ]
INSERT [ LOW_PRIORITY | DELAYED | HIGH_PRIORITY ] [ IGNORE ]
[ INTO ] tbl_name
[ PARTITION ( partition_name [, partition_name ] ... )]
SET assignment_list
[ AS row_alias [( col_alias [, col_alias ] ... ) ] ]
[ ON DUPLICATE KEY UPDATE assignment_list ]
INSERT [ LOW_PRIORITY | HIGH_PRIORITY ] [ IGNORE ]
[ INTO ] tbl_name
[ PARTITION ( partition_name [, partition_name ] ... )]
[( col_name [, col_name ] ... )]
{ SELECT ...
| TABLE table_name
| VALUES row_constructor_list
}
[ ON DUPLICATE KEY UPDATE assignment_list ]
value:
{expr| DEFAULT }
value_list:
value [, value ] ...
row_constructor_list:
ROW ( value_list )[, ROW ( value_list )][ ,... ]
assignment:
col_name=
value
| [ row_alias .] col_name
| [ tbl_name .] col_name
| [ row_alias .] col_alias
assignment_list:
assignment [, assignment ] ...
UPDATE [ LOW_PRIORITY ] [ IGNORE ] table_reference
SET assignment_list
[ WHERE where_condition ]
[ ORDER BY ... ]
[ LIMIT row_count ]
value:
{expr| DEFAULT }
assignment:
col_name=value
assignment_list:
assignment [, assignment ] ...
DELETE [ LOW_PRIORITY ] [ QUICK ] [ IGNORE ] FROM tbl_name [[ AS ]tbl_alias ]
[ PARTITION ( partition_name [, partition_name ] ... )]
[ WHERE where_condition ]
[ ORDER BY ... ]
[ LIMIT row_count ]
TRUNCATE [ TABLE ] tbl_name