**
MySQL命令大全
**
一、登录 mysql
1、连接到本机上的 mysql
命令: mysql -u用户名 -p用户密码
首先需要进入到 mysql\bin目录下,再键入命令
例: mysql -uroot -proot
注:用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。
如果刚安装好 mysql,超级用户root是没有密码的,直接回车即可进入到mysql中了,mysql的提示符是: mysql>
2、连接到远程主机上的mysql
假设远程主机的IP为:192.168.78.128,用户名为root,密码为abcd123。
命令: mysql -hIP地址 -u用户名 -p用户密码
例: mysql -h192.168.78.128 -uroot -p123;
注:-u与root之间可以不用加空格
3、退出mysql命令: exit/quit
二、修改密码
格式:mysqladmin -u用户名 -p旧密码 password 新密码
1、给root加个密码12345:
首先在dos下进入目录mysql\bin,然后键入以下命令
mysqladmin -u root -password 12345;
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
2、再将root的密码改为abc12345:
mysqladmin -uroot -p12345 password abc12345;
三、增加新用户
注意:和上面不同,下面的因为是mysql环境中的命令,所以后面都带一个分号作为命令结束符;
格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”
1、增加一个用户jack密码为abc,可以在任何主机上登录,并对所有数据库有新增、删除、修改、查询的权限。首先用root用户连入mysql,然后键入以下命令:
grant select,insert,update,delete on *.* to jack@”%” Identified by “abc”;
但增加的用户是十分危险的,你想如某个人知道jack的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了。
2、增加一个用户sunmu密码为abc,只能在localhost上登录,并可以对数据库mydb进行新增、删除、修改、查询的操作(localhost指本地主机,即mysql数据库服务所在主机),这样用户即使用知道sunmu的密码,也无法从internet上直接访问数据库,只能通过mysql主机上的web进行访问。
grant select,insert,update,delete on mydb.* to sunmu@localhost identified by “abc”;
如果你不想sunmu有密码,可以再打一个命令将密码消掉。
grant select,insert,update,delete on mydb.* to sunmu@localhost identified by “”;
四、数据库操作
1、创建数据库
注意:创建数据库之前要先连接Mysql服务器
命令:create database <数据库名>
例1:建立一个名为mydb的数据库
mysql> create database 数据库名;
例2:创建数据库并分配用户
create database 数据库名;
grant select,insert,update,delete,create,drop,alter on 数据库名.* to 用户名@localhost identified by “密码”;
set password for 用户名@localhost = old_password('密码');
依次执行3个命令完成数据库创建。注意:中文 “密码”和“数据库”是户自己需要设置的。
2、显示数据库
命令:show databases (注:最后有个s)
mysql> show databases;
注意:为了不再显示的时候乱码,要修改数据库默认编码。以utf-8编码页面为例进行说明:
1)、修改mysql的配置文件:my.ini 里面修改 default-character-set=gbk
2)、代码运行时修改:
Java代码:jdbc:mysql://192.168.78.128:3306/aiyou?useUnicode=true&characterEncoding=utf-8
3、删除数据库
命令:drop database <数据库名>
例如:删除名为 mydb的数据库
mysql> drop database mydb;
例1:删除一个已经确定存在的数据库
mysql> drop database drop_database;
例2:删除一个不确定存在的数据库
mysql> drop database drop_database;
ERROR 1008 (HY000): Can't drop database 'drop_database'; database doesn't exist
//发生错误,不能删除'drop_database'数据库,该数据库不存在。
mysql> drop database if exists drop_database;
Query OK, 0 rows affected, 1 warning (0.00 sec)//产生一个警告说明此数据库不存在
mysql> create database drop_database;
Query OK, 1 row affected (0.00 sec)
mysql> drop database if exists drop_database;//if exists 判断数据库是否存在,不存在也不产生错误
Query OK, 0 rows affected (0.00 sec)
4、连接数据库
命令: use <数据库名>
例:如果mydb数据库存在,则输入命令:
mysql> use mydb;
屏幕提示:Database changed
use 语句可以通告mysql把db_name数据库作为默认(当前)数据库使用,用于后续语句。
该数据库保持为默认数据库,直到语段的结尾,或者直到发布一个不同的use语句:
mysql> use abc;
mysql> select count(*) from mytable;
mysql> use db2;
mysql> select count(*) from mytable;
使用use语句为一个特定的当前的数据库做标记,不会阻碍您访问其它数据库中的表。下面的例子可以从mydb数据库访问abc库中的表:
mysql> use mydb;
mysql> select author_name,editor_name from author.abc.school where author.editor_id = abc.editor.editor_id;
5、当前选择的数据库
命令: select database();
mysql中select命令类似于其他编程语言里的print或者write,你可以用它来显示一个字符串、数字、数学表达式的结果等等。如何使用mysql中select命令的特殊功能?
1)、显示mysql的版本
mysql> select version();
2)、显示当前时间
mysql> select now();
3)、显示年、月、日
mysql> select year(current_date);
mysql> select month(current_date);
mysql> select dayofmonth(current_date);
4)、显示字符串
mysql> select "hello mysql!";
5)、当计算器用
mysql> select ((3+3)-5)*6/8;
6)、串接字符串
select concat(f_name, " ", l_name)
AS Name
from employee_data
where title = 'Marketing Executive';
注意:这里用到concat()函数,用来把字符串串接起来。另外,我们还用到以前学到的AS给结果列'CONCAT(f_name, " ", l_name)'起了个假名。
五、数据库表操作
1、创建数据表
命令: create table <表名> ( <字段名1> <类型1> [<字段名n> <类型n>]);
例如,建立一个名为mydb的表,如下:
字段名 数字类型 数据宽度 是否为空 是否主键 自动增加 默认值
id int 4 否 primary key auto_increment
name char 20 否
age int 4 否 0
salary double 16 是
mysql> create table mydb(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> age int(4) not null,
> salary double(16,2) default '15000');
2、删除数据表
命令:drop table <表名>
例如:删除表名为 mydb 的表
mysql> drop table mydb;
注:drop table 用于删除一个或多个表。但必须拥有每个表的 drop 权限。所有的表数据和表定义将会被取消,所以该语句需要慎用。对于一个带分区的表,drop table 会永久性地取消表定义,取消各分区,并取消储存在这些分区中的所有数据。drop table 还会取消与被取消的表有关联的分区定义(.par)文件。对与不存在的表,可以使用 if exists 用于防止错误发生。当使用if exists时,对于每个不存在的表,会生成一个note。 restrict和cascade可以使分区更容易。目前,restrict和cascade不起作用。
3、表插入数据
命令:insert into <表名> [( <字段名1>[<字段名n> ])] values ( 值1 )[( 值n )]
例:往表 mydb中插入二条记录, 这二条记录表示:id为1的名为jack的薪资为15000, id为2的名为sunmu的薪资为23000。
mysql> insert into mydb(id,name,salary) values(1,'jack',15000);
mysql> insert into mydb(id,name,salary) values(2,'sunmu',23000);
注:insert into 每次只能向表中插入一条记录。
4、查询表中的数据
1)、查询所有行
命令: select * from < 表名 >;
例如:查看表 mydb 中所有数据
mysql> select * from mydb;
2)、查询某几列数据
命令: select <字段1,字段2...> from < 表名 > where < 条件表达式 >
例:查看表 mydb 中所有薪资大于15000的员工姓名
mysql> select * from mydb where salary >= 15000;
2)、查询前几行数据
例:查看表 mydb 中前3行数据
mysql> select * from mydb order by id limit 0,3;
select一般配合where使用,以查询更精确更复杂的数据。
5、删除表中数据
命令: delete from < 表名 > where < 条件表达式 >;
例:删除表 mydb中id为1的记录
mysql> delete from mydb where id=1;
6、修改表中数据
命令: update < 表名 > set < 字段 > = < 更新值 > where < 条件表达式 >
例:将 mydb 表中所有薪资低于15000的员工,将薪资修改为15000
mysql> update mydb set salary=15000 where salary < 15000;
例:单表下的 update 语句:
update [low_priority] [ignore] tbl_name set col_name1=expr1 [col_name2=expr2...] [where where_definition] [limit row_count]
例:多表下的 update 语句:
update [low_priority] [ignore] table_references set col_name1=expr1 [col_name2=expr2...] [where where_definition]
说明:
update 用于更新表中原有行或列的值;
set 用于指定要修改的列和值;
where 用于指定更新的条件,如果没有where子句,将默认更新所有的行;
limit 用于限制被更新的行的数目;
7、字段操作
1)、加字段
命令: alter table < 表名 > add < 字段 > < 类型 > default < 默认值 >;
例: mysql> alter table mydb add salary double(16,2) default '0.00'
2)、加索引
命令: alter table < 表名 > add index < 索引名 > (字段名1[字段名2...]);
例: mysql> alter table mydb add index index_name (name);
3)、加主键索引
mysql> alter table < 表名 > add primary key (字段名);
例: mysql> alter table mydb add primary key(id);
4)、加唯一索引
命令: mysql> alter table < 表名 > add unique < 索引名 > (字段名);
例: mysql> alter table mydb add unique index_name01(phone);
5)、删除某个索引
命令: mysql> alter table < 表名 > drop index < 索引名 >;
例: mysql>alter table mydb drop index index_name;
6)、修改原字段名称及类型
命令: mysql> alter table < 表名 > change < 旧字段名 > < 新字段名 > < 新字段类型 >;
例: mysql> alter table mydb change telephone phone char(11);
7)、删除字段
命令: mysql> alter table table_name drop field_name;
例: mysql> alter table mydb drop phone;
8、修改表名
命令: mysql> rename table < 原表名 > to < 新表名 >;
例: mysql> rename table mydb to emp;
注:当执行 rename 命令时,不能有任何锁定的表或活动的事务。并且该表必须拥有 alter 和 drop 权限,以及对新表的 create 和 insert 权限。
六、数据库备份
数据库备份文件默认是存在 “ mysql\bin ” 目录下,也可指定其文件存放目录。
1、整库导出
命令: mysqldump -hIP地址 -u用户名 -p密码 数据库名 > 导出的文件名
例: mysqldump -h192.168.78.128 -uroot -proot mydb > output_filename.sql
2、单表导出
命令: mysqldump -hIP地址 -u用户名 -p密码 数据库名 表名 > 导出的文件名
例: mysqldump -h192.168.78.128 -uroot -proot mydb employee > output_filename.sql
3、导出单个数据库结构
命令: mysqldump -hIP地址 -u用户名 -p密码 -d –add-drop-table 数据库名 > output_filename.sql
例: mysqldump -h192.168.78.128 -uroot -proot -d –add-drop-table mydb > output_filename.sql
4、指定字符编码格式导出
命令: mysqldump -hIP地址 -u用户名 -p密码 –default-character-set=gbk –set-charset=utf-8 –skip-opt 数据库名 > output_filename.sql
例: mysqldump -h192.168.78.128 -uroot -proot –default-character-set=gbk –set-charset=utf-8 –skip-opt mydb > output_filename.sql
5、将 mydb 数据库备份到文件backups_mydb中
命令: mysqldump -hIP地址 -uroot -p密码 --opt mydb > backups_mydb
例: mysqldump -h192.168.78.128 -uroot -proot --opt mydb > backups_mydb
实例一:建库建表
先决条件:正常登录到 mysql 服务器!登录后不要 use 到任何库,如果已经使用某个库,则先退出再登录。
例:如果mydb库存在,则删除
mysql> drop database if exists mydbA;
例:建立mydbA数据库
mysql> create database mydbA;
例:打开mydbA库
mysql> use mydbA;
例:建立表employee
create table employee
(
id int(3) auto_increment not null primary key,
name char(10) not null,
age char(2) not null,
salary double(9,3) default '15000.000'
);
例:插入两条数据
insert into employee values(”,’jack’,'23’,'23000′);
insert into employee values(”,’sunmu’,'25’,'16000′);
注:
1、将 id 设为长度为3的整数型字段 int(3);并设置为自动增长字段:auto_increment;并允许为空:not null;该字段为主键:primary key;
2、将name设为长度为10的字符字段;
3、将age设为长度2的字符字段;
4、将salary设为小数点前长度为9,小数点后长度为3的双精度浮点数;
实例三:关于建表
方法一:可以通过以 "文件名.sql" 文件的方式进行建库建表,在D盘中新建一个文本文件,并将以上语句复制到一个文本中,并重命名为 employee.sql,在doc窗口中执行该脚本,输入命令如下:
mysql -hIP地址 -u用户名 -p用户密码 < D:\\employee.sql
注:如果成功,空出一行无任何显示;否则会提示导致错误的原因,在多少行。
方法二:正常登录mysql服务后使用,输入如下命令:
mysql> source D:\\employee.sql;