PS:MySql常用命令总结
-
连接MYSQL
-
连接到本机上的MYSQL
#提示输入密码模式: [root@localhost ~]/usr/local/mysql/bin/mysql -P 3306 -uroot -p Enter password: 或者(直接输入密码模式:) [root@localhost ~]/usr/local/mysql/bin/mysql -P 3306 -uroot -proot #进入mysql数据库控制台 mysql>***;
-
连接到远程主机上的MYSQL
#提示输入密码模式: [root@localhost ~]/usr/local/mysql/bin/mysql -h8.8.8.8 -P 3306 -uroot -p Enter password: 或者(直接输入密码模式:) [root@localhost ~]/usr/local/mysql/bin/mysql -h8.8.8.8 -P 3306 -uroot -proot #进入mysql数据库控制台 mysql>***;
-
修改密码
[root@localhost ~]/usr/local/mysql/bin/mysqladmin -uroot -p(oldpassword) password newpassword
-
常用命令
#显示当前存在的数据库 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ #进入test数据库# mysql> use test; Database changed mysql> select database();#显示"test"当前选择的数据库 +------------+ | database() | +------------+ | test | +------------+ mysql> show tables; #显示"test"数据库中存在的表 #表名和表的别名是区分大小写的。如果lower_case_table_names为1,MySQL将在存储与查找时将所有的表名转换为小写字母。(从 MySQL 4.0.2 开始,这个选项同样适用于数据库名。) #列名与列的别名在所有的情况下均是忽略大小写的。 +----------------+ | Tables_in_test | +----------------+ | test1 | | test2 | +----------------+ mysql> describe test1;#显示"test1"表的结构(或:show columns from test1;) +-------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+------------------+------+-----+---------+----------------+ | id | int(11) unsigned | NO | PRI | NULL | auto_increment | | value | tinyint(1) | NO | | NULL | | +-------+------------------+------+-----+---------+----------------+ mysql> exit;#退出mysql命令 Bye #进入mysql数据库控制台 mysql> select version(); #查看MySQL的版本号 +-----------+ | version() | +-----------+ | 5.5.19 | +-----------+ #查看MySQL的当前日期 mysql> select current_date(); +----------------+ | current_date() | +----------------+ | 2014-03-22 | +----------------+ #同时查看MySQL的版本号和当前日期 mysql> select version(),current_date(); +-----------+----------------+ | version() | current_date() | +-----------+----------------+ | 5.5.19 | 2014-03-22 | +-----------+----------------+
-
-
数据的备份与恢复:
-
导出表
#导出整个test数据库中的所有表 [root@localhost ~]/usr/local/mysql/bin/mysqldump -uroot -proot --opt test > /home/test/test.sql #导出整个test数据库中的test1表 [root@localhost ~]/usr/local/mysql/bin/mysqldump -uroot -proot --opt test test1 > /home/test/test1.sql #导出整个test数据库中的test1,test2表 [root@localhost ~]/usr/local/mysql/bin/mysqldump -uroot -proot --opt test test1 test2 > /home/test/test1_test2.sql
-
复制表
完整复制一个表
#完整复制表结构 CREATE TABLE new_table LIKE old_table #完整复制表结构+表数据 CREATE TABLE new_table LIKE old_table; INSERT INTO new_table SELECT * FROM old_table; #不同数据库表之间复制 CREATE TABLE db2.new_table LIKE db1.old_table; INSERT INTO db2.new_table SELECT * FROM db1.old_table;
不完整复制表
注意:本方案其实只是把select语句的结果建一个表。所以new_table这个表不会有主键、索引
#复制整个表 CREATE TABLE new_table SELECT * FROM old_table; #复制结构,不复制数据 CREATE TABLE new_table SELECT * FROM old_table where 0; #拷贝表中部分字段 CREATE TABLE new_table SELECT field1,field2 FROM old_table #拷贝表中部分字段改名 CREATE TABLE new_table SELECT id,field1 AS field11, field2 AS field22 FROM old_table #拷贝表中一部分数据(WHERE 条件) CREATE TABLE new_table SELECT * FROM old_table WHERE LEFT(field1,1) = 's' #创建表的同时定义表中的字段信息 CREATE TABLE new_table(id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)AS(SELECT * FROM old_table)
-
导出数据库
#导出整个test数据库 [root@localhost ~]/usr/local/mysql/bin/mysqldump -uroot -proot --databases test > test.sql #导出整个test,mysql数据库到test.mysql.sql文件 [root@localhost ~]/usr/local/mysql/bin/mysqldump -uroot -proot --databases test mysql > test.mysql.sql #将所有数据库备份到all-databases.sql文件 [root@localhost ~]/usr/local/mysql/bin/mysqldump -uroot -proot --all-databases > all-databases.sql
-
导入数据库
#导入上例中通过mysqldump导出的test数据库 [root@localhost ~]/usr/local/mysql/bin/mysql -uroot -proot < test.sql
-
导入单个数据库或单个数据中某张表
mysql>use test; mysql>source test.sql;
-
-
全局使用命令:mysql或mysqldump
安装好MySQL程序的时候,直接输入命令mysql或mysqldump会发现提示命令不存在,这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令。
解决方法;ln -fs /usr/local/mysql/bin/mysql /usr/bin ln -fs /usr/local/mysql/bin/mysqldump /usr/bin
-
时间戳转换为时间;
SELECT *,FROM_UNIXTIME(`create_time`,'%Y%m%d %H:%i:%s') FROM `user0`