1.复制表结构和数据,但是不复制索引和外键:
- create table a select * from b;
2.复制表结构和索引和外键,不复制数据:
- create table a like b;
3.只复制数据:
- insert into a select * from b;
4.移动表到另一个库
- rename table a.t to b.t;
5.删除重复记录
- --新建一个临时表
- create table tmp as select * from youtable group by name ;
- --删除原来的表
- drop table youtable ;
- --重命名表
- alter table tmp rename youtable;
- --新建一个临时表
- create table tmp like youtable;
- --取出不重复的数据
- insert into select * from youtable group by name;
- --清空原来的表
- truncate youtable;
- --插入原来的表
- insert into youtable select * from tmp;
- --重命名表
- drop table tmp;
6.重命名数据库
到/var/lib/mysql/
修改对应数据库的文件夹名即可
7.时间格式
- SELECT FROM_UNIXTIME( 1249488000,'%Y-%m-%d %H:%i:%s') ;
- SELECT DATE_FORMAT('1997-10-04 22:23:00', '%Y-%m-%d %H:%i:%s');
- SELECT UNIX_TIMESTAMP('2009-08-06') ;
8.mysql日志
- --查看日志
- show binary logs;
- show master logs;
- --清除日志
- PURGE MASTER LOGS TO 'mysql-bin.000035';
- --手动删除10天前的mysql binlog日志
- PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY);
9.获得更新记录数
- select ROW_COUNT();
10.获得找到的记录数
- select FOUND_ROWS();
11.获得插入的id
- select LAST_INSERT_ID();
12.创建特殊表名
- SET sql_mode='ANSI_QUOTES';
- create table "a-b" (a int);
13.插入不重复数据
- insert into node (name) select 'a' where no exists(select id from node where id=2 and name='a')
14.uuid
- select replace(uuid(), '-', '');
15.添加一个远程用户,名为username密码为password
- GRANT ALL PRIVILEGES ON *.* TO username@"%" IDENTIFIED BY 'password' WITH GRANT OPTION;
16.从文件导入数据
- LOAD DATA INFILE '/tmp/result100.txt' INTO TABLE analy_ip_file2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
17.添加主键
- alter table userconfig add id int(4) auto_increment primary key;
18.查看mysql参数
- show variables like '%max%';
- MYSQL忘记密码解决办法
在windows下:
打开命令行窗口,停止mysql服务:Net stop mysql
到mysql的安装路径启动mysql,在bin目录下使用mysqld-nt.exe启动,在命令行窗口执行:mysqld-nt --skip-grant-tables
然后另外打开一个命入令行窗口,执行mysql,此时无需输入密码即可进入。
>use mysql
>update user set password=password("new_pass") where user="root";
>flush privileges;
>exit
使用任务管理器,找到mysqld-nt的进程,结束进程!
在重新启动mysql-nt服务,就可以用新密码登录了。
在linux下:
如果 MySQL 正在运行,首先杀之: killall -TERM mysqld。
启动 MySQL :bin/safe_mysqld --skip-grant-tables &
就可以不需要密码就进入 MySQL 了。
然后就是
>use mysql
>update user set password=password("new_pass") where user="root";
>flush privileges;
重新杀 MySQL ,用正常方法启动 MySQL 。
5. 更改MYSQL的默认字符集
法1、 用 SET 语法来指定,不加 "GLOBAL" 的话就只对本次会话有效
SET [GLOBAL] character_set_client = utf8;
SET [GLOBAL] character_set_connection = utf8;
SET [GLOBAL] character_set_database = utf8;
SET [GLOBAL] character_set_results = utf8;
SET [GLOBAL] character_set_server = utf8;
方法2、 也用SET语法,只对本次会话有效
SET NAMES 'utf8';
方法3、) 直接修改 my.cnf,增加一行内容,然后重启 MySQL,使之全局生效
default-character-set = utf8
6.MYSQL慢查询分析工具:mysqldumpslow
mysql> source d:/myprogram/database/db.sql;
另附mysql常用命令:
一) 连接MYSQL:
格式: mysql -h主机地址 -u用户名 -p用户密码
1、例1:连接到本机上的MYSQL
首先在打开DOS窗口,然后进入mysql安装目录下的bin目录下,例如: D:/mysql/bin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符 是:mysql>
2、例2:连接到远程主机上的MYSQL (远程:IP地址)
假设远程主机的IP为:10.0.0.1,用户名为root,密码为123。则键入以下命令:
mysql -h10.0.0.1 -uroot -p123
(注:u与root可以不用加空格,其它也一样)
3、退出MYSQL命令
exit (回车)
(二) 修改密码:
格式:mysqladmin -u用户名 -p旧密码 password 新密码
1、例1:给root加个密码123。首先在DOS下进入目录C:/mysql/bin,然后键入以下命令:
mysqladmin -uroot -password 123
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
2、例2:再将root的密码改为456
mysqladmin -uroot -pab12 password 456
(三) 增加新用户:(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)
格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"
例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入 MYSQL,然后键入以下命令: grant select,insert,update,delete on *.* to test2@localhost identified by "abc";
如果你不想test2有密码,可以再打一个命令将密码消掉。 grant select,insert,update,delete on mydb.* to test2@localhostidentified by "";
(四) 显示命令
1、显示数据库列表:
show databases; 刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
2、显示库中的数据表:
use mysql; //打开库 show tables;
3、显示数据表的结构:
describe 表名;
4、建库:
create database 库名;
5、建表:
use 库名; create table 表名 (字段设定列表);
6、删库和删表:
drop database 库名; drop table 表名;
7、将表中记录清空:
delete from 表名;
8、显示表中的记录:
select * from 表名;
导出sql脚本
mysqldump -u 用户名 -p 数据库名 > 存放位置
mysqldump -u root -p test > c:/a.sql
导入sql脚本
mysql -u 用户名 -p 数据库名 < 存放位置
mysqljump -u root -p test < c:/a.sql
注意,test数据库必须已经存在
MySQL导出导入命令的用例
1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名表名> 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
3.导出一个数据库结构
mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:wcnc_db.sql
-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table
4.导入数据库
常用source 命令
进入mysql数据库控制台,
如mysql -u root -p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:wcnc_db.sql
1.复制表结构和数据,但是不复制索引和外键:
- create table a select * from b;
2.复制表结构和索引和外键,不复制数据:
- create table a like b;
3.只复制数据:
- insert into a select * from b;
4.移动表到另一个库
- rename table a.t to b.t;
5.删除重复记录
- --新建一个临时表
- create table tmp as select * from youtable group by name ;
- --删除原来的表
- drop table youtable ;
- --重命名表
- alter table tmp rename youtable;
- --新建一个临时表
- create table tmp like youtable;
- --取出不重复的数据
- insert into select * from youtable group by name;
- --清空原来的表
- truncate youtable;
- --插入原来的表
- insert into youtable select * from tmp;
- --重命名表
- drop table tmp;
6.重命名数据库
到/var/lib/mysql/
修改对应数据库的文件夹名即可
7.时间格式
- SELECT FROM_UNIXTIME( 1249488000,'%Y-%m-%d %H:%i:%s') ;
- SELECT DATE_FORMAT('1997-10-04 22:23:00', '%Y-%m-%d %H:%i:%s');
- SELECT UNIX_TIMESTAMP('2009-08-06') ;
8.mysql日志
- --查看日志
- show binary logs;
- show master logs;
- --清除日志
- PURGE MASTER LOGS TO 'mysql-bin.000035';
- --手动删除10天前的mysql binlog日志
- PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY);
9.获得更新记录数
- select ROW_COUNT();
10.获得找到的记录数
- select FOUND_ROWS();
11.获得插入的id
- select LAST_INSERT_ID();
12.创建特殊表名
- SET sql_mode='ANSI_QUOTES';
- create table "a-b" (a int);
13.插入不重复数据
- insert into node (name) select 'a' where no exists(select id from node where id=2 and name='a')
14.uuid
- select replace(uuid(), '-', '');
15.添加一个远程用户,名为username密码为password
- GRANT ALL PRIVILEGES ON *.* TO username@"%" IDENTIFIED BY 'password' WITH GRANT OPTION;
16.从文件导入数据
- LOAD DATA INFILE '/tmp/result100.txt' INTO TABLE analy_ip_file2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
17.添加主键
- alter table userconfig add id int(4) auto_increment primary key;
18.查看mysql参数
- show variables like '%max%';
- MYSQL忘记密码解决办法
在windows下:
打开命令行窗口,停止mysql服务:Net stop mysql
到mysql的安装路径启动mysql,在bin目录下使用mysqld-nt.exe启动,在命令行窗口执行:mysqld-nt --skip-grant-tables
然后另外打开一个命入令行窗口,执行mysql,此时无需输入密码即可进入。
>use mysql
>update user set password=password("new_pass") where user="root";
>flush privileges;
>exit
使用任务管理器,找到mysqld-nt的进程,结束进程!
在重新启动mysql-nt服务,就可以用新密码登录了。
在linux下:
如果 MySQL 正在运行,首先杀之: killall -TERM mysqld。
启动 MySQL :bin/safe_mysqld --skip-grant-tables &
就可以不需要密码就进入 MySQL 了。
然后就是
>use mysql
>update user set password=password("new_pass") where user="root";
>flush privileges;
重新杀 MySQL ,用正常方法启动 MySQL 。
5. 更改MYSQL的默认字符集
法1、 用 SET 语法来指定,不加 "GLOBAL" 的话就只对本次会话有效
SET [GLOBAL] character_set_client = utf8;
SET [GLOBAL] character_set_connection = utf8;
SET [GLOBAL] character_set_database = utf8;
SET [GLOBAL] character_set_results = utf8;
SET [GLOBAL] character_set_server = utf8;
方法2、 也用SET语法,只对本次会话有效
SET NAMES 'utf8';
方法3、) 直接修改 my.cnf,增加一行内容,然后重启 MySQL,使之全局生效
default-character-set = utf8
6.MYSQL慢查询分析工具:mysqldumpslow
mysql> source d:/myprogram/database/db.sql;
另附mysql常用命令:
一) 连接MYSQL:
格式: mysql -h主机地址 -u用户名 -p用户密码
1、例1:连接到本机上的MYSQL
首先在打开DOS窗口,然后进入mysql安装目录下的bin目录下,例如: D:/mysql/bin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符 是:mysql>
2、例2:连接到远程主机上的MYSQL (远程:IP地址)
假设远程主机的IP为:10.0.0.1,用户名为root,密码为123。则键入以下命令:
mysql -h10.0.0.1 -uroot -p123
(注:u与root可以不用加空格,其它也一样)
3、退出MYSQL命令
exit (回车)
(二) 修改密码:
格式:mysqladmin -u用户名 -p旧密码 password 新密码
1、例1:给root加个密码123。首先在DOS下进入目录C:/mysql/bin,然后键入以下命令:
mysqladmin -uroot -password 123
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
2、例2:再将root的密码改为456
mysqladmin -uroot -pab12 password 456
(三) 增加新用户:(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)
格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"
例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入 MYSQL,然后键入以下命令: grant select,insert,update,delete on *.* to test2@localhost identified by "abc";
如果你不想test2有密码,可以再打一个命令将密码消掉。 grant select,insert,update,delete on mydb.* to test2@localhostidentified by "";
(四) 显示命令
1、显示数据库列表:
show databases; 刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
2、显示库中的数据表:
use mysql; //打开库 show tables;
3、显示数据表的结构:
describe 表名;
4、建库:
create database 库名;
5、建表:
use 库名; create table 表名 (字段设定列表);
6、删库和删表:
drop database 库名; drop table 表名;
7、将表中记录清空:
delete from 表名;
8、显示表中的记录:
select * from 表名;
导出sql脚本
mysqldump -u 用户名 -p 数据库名 > 存放位置
mysqldump -u root -p test > c:/a.sql
导入sql脚本
mysql -u 用户名 -p 数据库名 < 存放位置
mysqljump -u root -p test < c:/a.sql
注意,test数据库必须已经存在
MySQL导出导入命令的用例
1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名表名> 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
3.导出一个数据库结构
mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:wcnc_db.sql
-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table
4.导入数据库
常用source 命令
进入mysql数据库控制台,
如mysql -u root -p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:wcnc_db.sql