1、基本命令
1、 连接数据库 mysql –u用户名 –p密码 –h主机IP
2、 创建数据库 mysql> create database 数据库名
3、 创建表 mysql> create table 表名(列名 类型 primary key(定义主键) auto_increment )
4、 查看所有数据库 mysql> show databases;
5、 选择数据库 mysql> use 数据库名;
6、 查看数据库所有的表 mysql> show tables;
7、 查看表结构 mysql> desc 表名;
8、 删库和删表 mysql> drop database 数据库名;
mysql> drop table 表名;
9、 执行sql文件 mysql> source D:/文件名.sql;
2、高级命令
1.1.1 mysql
mysql是一个简单的SQL外壳。
命令模式:
shell> mysql db_name 或: shell> mysql --user=user_name --password=your_password db_name 或: shell> mysql -uuser_name -pyour_password db_name 或: shell> mysql < filename 或: shell> mysql dbname < filename(可用于数据库恢复) |
1.1.2 mysqladmin
mysqladmin是一个执行管理操作的客户程序。可以用它来检查服务器的配置和当前的状态,创建并删除数据库等等。
mysqladmin [options] command [command-options] [command [command-options]] ...
支持命令:
命令 |
说明 |
create db_name |
创建一个名为db_name的新数据库 |
drop db_name |
删除名为db_nam的数据库和所有表 |
extended-status |
显示服务器状态变量及其值 |
flush-hosts |
刷新主机缓存中的所有信息 |
flush-privileges |
重载授权表(类似reload) |
flush-tables |
刷新所有表 |
old-password new-password |
修改密码, 如:mysqladmin –uroot –poldpwd password newpwd |
ping |
检查服务器是否仍活动。如果服务器在运行mysqladmin返回状态0,如果不运行返回1。 如:mysqladmin –uroot –ppwd ping |
shutdown |
停止服务器 |
version |
显示服务器的版本信息 |
1.1.3 mysqldump
用于导出数据,或备份数据库。
命令模式:
有3种方式来调用mysqldump: shell> mysqldump [options] db_name [tables] shell> mysqldump [options] ---database DB1 [DB2 DB3...] shell> mysqldump [options] --all--database |
备份数据库:
shell> mysqldump –uname –ppwd dbname > db.sql
备份数据库并压缩
shell> mysqldump –uname –ppwd dbname | gzip > db.sql.gz
恢复数据库:
shell> mysql –uname –ppwd dbname < db.sql
直接从压缩文件恢复:
shell> gzip –d < db.sql.gz | mysql –uname –ppwd dbname
选项说明:
参数 |
说明 |
--opt |
此选项将打开所有会提高文件导出速度和创造一个可以更快导入的文件的选项。 |
-q or -quick |
这个选项使得MySQL不会把整个导出的内容读入内存再执行导出,而是在读到的时候就写入导文件中。 |
--add-drop-table |
这个选项将会在每一个表的前面加上DROP TABLE IF EXISTS语句,不添加该选项也是有的。 |
--add-locks |
这个选项会在INSERT语句中捆上一个LOCK TABLE和UNLOCK TABLE语句。这就防止在这些记录被再次导入数据库时其他用户对表进行的操作 |
--all-database |
转储所有数据库中的所有表 |
--create-option |
在CREATE TABLE语句中包括所有MySQL表选项 |
-c or -complete_insert |
这个选项使得mysqldump命令给每一个产生INSERT语句加上列(field)的名字。当把数据导出到另外一个数据库时这个选项很有用。 |
-F or -flush-logs |
使用这个选项,在执行导出之前将会刷新MySQL服务器的log |
-f or -force |
使用这个选项,即使有错误发生,仍然继续导出 |
-l or -lock-tables |
使用这个选项,导出表的时候服务器将会给表加锁 |
-t or -no-create-info |
这个选项使的mysqldump命令不创建CREATE TABLE语句,这个选项在您只需要数据而不需要DDL(数据库定义语句)时很方便。 |
-d or -no-data |
这个选项使mysqldump命令不创建INSERT语句。在您只需要DDL语句时,可以使用这个选项。 |
--skip-comments |
可以去掉导出文件中的注释语句 |
--compact |
选项可以只输出最重要的语句,而不输出注释及删除表语句等等 |
1.1.4 mysqlimport
mysqlimport客户端提供了LOAD DATA INFILEQL语句的一个命令行接口。mysqlimport的大多数选项直接对应LOAD DATA INFILE子句。
命令模式:mysqlimport [options] db_name textfile1 [textfile2 ...]
命令选项:
参数 |
说明 |
--help |
显示帮助消息并退出 |
--columns=column_list, -c column_list |
该选项采用用逗号分隔的列名作为其值。列名的顺序指示如何匹配数据文件列和表列 |
--compress |
压缩在客户端和服务器之间发送的所有信息 |
--delete |
导入文本文件前清空表 |
--force |
忽视错误。例如,如果某个文本文件的表不存在,继续处理其它文件。不使用--force,如果表不存在则mysqlimport退出。 |
-h host_name |
将数据导入给定主机上的MySQL服务器。默认主机是localhost |
--ignore-lines=n |
忽视数据文件的前n行 |
--local |
从本地客户端读入输入文件 |
--lock-tables |
处理文本文件前锁定所有表以便写入。这样可以确保所有表在服务器上保持同步。 |
-p[password] |
当连接服务器时使用的密码。 |
-u user_name |
当连接服务器时MySQL使用的用户名 |
FIELDS TERMINATED BY ‘string‘ |
1、FIELDS 子句必须出现在LINES 子句之前 2、字段值之间以什么字符分割,如:abc de |
FIELDS [OPTIONALLY] ENCLOSED BY ‘char‘ |
每个字段值两边以什么包围,如:”abc” |
FIELDS ESCAPED BY ‘char‘ |
以什么字符作为转义字符 |
LINES STARTING BY ‘string‘ |
每行以什么开头 |
LINES TERMINATED BY ‘string‘ |
每行以什么结尾,或各行之间以什么分割 |
--version |
显示版本信息并退出 |
1.1.1 load data infile
命令模式:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE ‘file_name.txt‘ [REPLACE | IGNORE] INTO TABLE tbl_name [FIELDS [TERMINATED BY ‘string‘] [[OPTIONALLY] ENCLOSED BY ‘char‘] [ESCAPED BY ‘char‘ ] ] [LINES [STARTING BY ‘string‘] [TERMINATED BY ‘string‘] ] [IGNORE number LINES] [(col_name_or_user_var,...)] [SET col_name = expr,...)] |
命令参数:
参数 |
说明 |
LOW_PRIORITY | CONCURRENT |
1、如果用户指定关键词LOW_PRIORITY,LOAD DATA 语句的执行将会被延迟,直到没有其它的客户端正在读取表 2、如指定了CONCURRENT,则当LOAD DATA 正在执行时,其它线程会从表中重新获取数据。即使没有其它线程在同时使用本表格,使用本选项也会略微影响LOAD DATA 的性能。 |
LOCAL |
1、如果指定了LOCAL,则文件会被客户主机上的客户端读取,并被发送到服务器。文件会被给予一个完整的路径名称,以指定确切的位置。如果给定的是一个相对的路径名称,则此名称会被理解为相对于启动客户端时所在的目录。 2、如果LOCAL没有被指定,则文件必须位于服务器主机上,并且被服务器直接读取。 |
INFILE [path] |
指定源文件路径。指定Windows 路径名时,使用的是斜线而不是反斜线。如果要用反斜线,必须双写。 |
REPLACE | IGNORE |
1、如果指定了REPLACE,输入行将会代替已存在的行 2、如果指定了IGNORE,与已存在行主键值重复的输入行将被跳过。 3、如果不指定二者中的任一个,则操作行为将依赖是否指定了LOCAL 关键字。没有指定LOCAL,则如果发现有重复的键值,将产生一个错误,并忽略文本文件的其余部分。如果指定了LOCAL,则缺省的操作行为将与指定了IGNORE 的相同;这是因为,在操作过程中,服务器没有办法终止文件的传送。 |
FIELDS TERMINATED BY ‘string‘ |
1、FIELDS 子句必须出现在LINES 子句之前 2、字段值之间以什么字符分割,如:abc de |
FIELDS [OPTIONALLY] ENCLOSED BY ‘char‘ |
每个字段值两边以什么包围,如:”abc” |
FIELDS ESCAPED BY ‘char‘ |
以什么字符作为转义字符 |
LINES STARTING BY ‘string‘ |
每行以什么开头 |
LINES TERMINATED BY ‘string‘ |
每行以什么结尾,或各行之间以什么分割 |
IGNORE number LINES |
用户忽略前number行 |
(col_name_or_user_var,...) |
指定导入表中的字段名 |
SET col_name = expr,...) |
用于给指导导入表中的字段赋值,该值不在文件中或需要经过计算,如下: LOAD DATA INFILE ‘file.txt‘ INTO TABLE t1 (column1, column2) SET column3 = CURRENT_TIMESTAMP; |
LOAD DATA INFILE语句从一个文本文件中以很高的速度读入一个表中。如果指定LOCAL关键词,从客户主机读文件。如果LOCAL没指定,文件必须位于服务器上。如果你使用LOCAL关键词从一个本地文件装载数据,服务器没有办法在操作的当中停止文件的传输,因此缺省的行为好像IGNORE被指定一样。
为了安全原因,当读取位于服务器上的文本文件时,文件必须处于数据库目录或可被所有人读取。另外,为了对服务器上文件使用LOAD DATA INFILE,在服务器主机上你必须有file的权限。
REPLACE和IGNORE关键词控制对现有的唯一键记录的重复的处理。如果你指定REPLACE,新行将代替有相同的唯一键值的现有行。如果你指定IGNORE,跳过有唯一键的现有行的重复行的输入。如果你不指定任何一个选项,当找到重复键键时,出现一个错误,并且文本文件的余下部分被忽略时。
例子:
LOAD DATA INFILE ‘data.txt‘ INTO TABLE db2.my_table;