欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL数据库的常用操作记录分享

程序员文章站 2022-03-09 15:14:49
1.复制表结构和数据,但是不复制索引和外键: createtableaselect*fromb; 2.复制表结构和索引和外键,不复制数据: createtablealikeb; 3.只复制数据: i...

1.复制表结构和数据,但是不复制索引和外键:

createtableaselect*fromb;

2.复制表结构和索引和外键,不复制数据:

createtablealikeb;

3.只复制数据:

insertintoaselect*fromb;

4.移动表到另一个库

renametablea.ttob.t;

5.删除重复记录

--新建一个临时表 createtabletmpasselect*fromyoutable group by name; --删除原来的表 droptableyoutable; --重命名表 altertabletmp rename youtable; --新建一个临时表 createtabletmplikeyoutable; --取出不重复的数据 insertintoselect*fromyoutable group by name; --清空原来的表 truncateyoutable; --插入原来的表 insertintoyoutableselect*fromtmp; --重命名表 droptabletmp;

6.重命名

到/var/lib/mysql/

修改对应数据库的文件夹名即可

7.时间格式

selectfrom_unixtime(1249488000,'%y-%m-%d %h:%i:%s'); selectdate_format('1997-10-04 22:23:00','%y-%m-%d %h:%i:%s'); selectunix_timestamp('2009-08-06');

8.mysql日志

--查看日志 showbinarylogs; showmaster logs; --清除日志 purgemaster logsto'mysql-bin.000035'; --手动删除10天前的mysql binlog日志 purgemaster logs before date_sub(current_date,interval 10day);

9.获得更新记录数

selectrow_count();

10.获得找到的记录数

selectfound_rows();

11.获得插入的id

selectlast_insert_id();

12.创建特殊表名

setsql_mode='ansi_quotes'; createtable"a-b"(aint);

13.插入不重复数据

insertintonode(name)select'a'whereno exists(selectidfromnodewhereid=2andname='a')

14.uuid

selectreplace(uuid(),'-','');

15.添加一个远程用户,名为username密码为password

grant all privileges on*.*tousername@"%"identified by'password'with grant option;

16.从文件导入数据

loaddata infile'/tmp/result100.txt'intotableanaly_ip_file2 fields terminated by','enclosed by'"'lines terminated by'\n';

17.添加主键

altertableuserconfig add idint(4)auto_incrementprimary key;

18.查看mysql参数

showvariableslike'%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 *.* totest2@localhostidentified by "abc";

如果你不想test2有密码,可以再打一个命令将密码消掉。 grant select,insert,update,delete on mydb.* totest2@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 命令

进入my控制台,

如mysql -u root -p

mysql>use 数据库

然后使用source命令,后面参数为脚本文件(如这里用到的.sql)

mysql>source d:wcnc_db.sql

1.复制表结构和数据,但是不复制索引和外键:

createtableaselect*fromb;

2.复制表结构和索引和外键,不复制数据:

createtablealikeb;

3.只复制数据:

insertintoaselect*fromb;

4.移动表到另一个库

renametablea.ttob.t;

5.删除重复记录

--新建一个临时表 createtabletmpasselect*fromyoutable group by name; --删除原来的表 droptableyoutable; --重命名表 altertabletmp rename youtable; --新建一个临时表 createtabletmplikeyoutable; --取出不重复的数据 insertintoselect*fromyoutable group by name; --清空原来的表 truncateyoutable; --插入原来的表 insertintoyoutableselect*fromtmp; --重命名表 droptabletmp;

6.重命名数据库

到/var/lib/mysql/

修改对应数据库的文件夹名即可

7.时间格式

selectfrom_unixtime(1249488000,'%y-%m-%d %h:%i:%s'); selectdate_format('1997-10-04 22:23:00','%y-%m-%d %h:%i:%s'); selectunix_timestamp('2009-08-06');

8.mysql日志

--查看日志 showbinarylogs; showmaster logs; --清除日志 purgemaster logsto'mysql-bin.000035'; --手动删除10天前的mysql binlog日志 purgemaster logs before date_sub(current_date,interval 10day);

9.获得更新记录数

selectrow_count();

10.获得找到的记录数

selectfound_rows();

11.获得插入的id

selectlast_insert_id();

12.创建特殊表名

setsql_mode='ansi_quotes'; createtable"a-b"(aint);

13.插入不重复数据

insertintonode(name)select'a'whereno exists(selectidfromnodewhereid=2andname='a')

14.uuid

selectreplace(uuid(),'-','');

15.添加一个远程用户,名为username密码为password

grant all privileges on*.*tousername@"%"identified by'password'with grant option;

16.从文件导入数据

loaddata infile'/tmp/result100.txt'intotableanaly_ip_file2 fields terminated by','enclosed by'"'lines terminated by'\n';

17.添加主键

altertableuserconfig add idint(4)auto_incrementprimary key;

18.查看mysql参数

showvariableslike'%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 *.* totest2@localhostidentified by "abc";

如果你不想test2有密码,可以再打一个命令将密码消掉。 grant select,insert,update,delete on mydb.* totest2@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