MySQL客户端操作
- $db$是数据库名称
- $table$是数据表名称
- $field$是数据表里的字段名称
- 有些语句最后加上**/G**可以使结果更美观
数据库相关
创建数据库,修改数据库
create database $db$; 使用默认设置
create database $db$ default character set "utf8";指定编码
show databases; 查看所有数据库
show create database $db$; 查看数据库信息
alter database $db$ default character set $code$ collate $cc$;修改数据编码
drop database $db$;删除数据库
create database $db$ default character set utf8 collate utf8_general_ci;$完整的建库语句
use $db$;使用数据库
数据库权限
grant $privileges$ on $db$.$table$ to $user$@'$host$' identified by "$passwd$" with grant option;
1. $privileges$ 指权限; ALL PRIVILEGES是表示所有权限,可以使用select,update等权限.
2. ON 用来指定权限针对哪些库和表.
3. $db$.$table$ 数据库和表;*.*指所有数据库的所有表
4. TO 表示将权限赋予某个用户.
5. $user$@'$host$' 指定用户和主机;@后面接限制的主机,可以是IP,IP段,域名以及%,%表示任何地方.
注意:这里%有的版本不包括本地,以前碰到过给某个用户设置了%允许任何地方登录,但是在本地登录不了,这个和版本有关系,遇到这个问题再加一个localhost的用户就可以了.
6. IDENTIFIED BY 指定用户的登录密码.
7. WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人.
注意:经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其它用户授权.
刷新权限
flush privileges;
查询权限
show grants;
show grants for $user$@'$host$';
回收权限
revoke delete on *.* from $user$@'$host$';
修改密码
SET PASSWORD FOR $user$@'$host$' = PASSWORD('$passwd$');
update user set PASSWORD = PASSWORD('$passwd$') where user = $user$;
数据表相关
对数据库里面的表做相关的操作
创建表
create table $table$( $field1$ 数据类型 [完整性约束条件], ... $field*$ 数据类型, [UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY )ENGINE=[MyISAM|INODB|...];
查看数据表
show tables;查看数据库下面的所有表 查看数据表信息 desc $table$ show create table $table$; show columns from $table$;
修改数据表
alter table $table_src$ rename $table_dest$;修改表名 $table_src$为原来数据表的名称,而$table_dest$为新的数据表名称. alter table $table$ change $field_src$ $field_dest$;修改字段名 alter table $table$ modify $field$ int(20);修改字段的数据类型 alter table $table$ add $field$ int;增加字段 alter table $table$ drop $field$;删除字段 drop table $table$;删除表 truncate table $table$;清空表
索引相关
创建索引 创建普通索引 create index $index_name$ on $table$($field$); alter table $table$ add index $index_name$($field$); 创建唯一性索引 create unique index $index_name$ on $table$($field$); alter table $table$ add unique $index_name$($field$); 删除索引 alter table $table$ drop index $index_name$; drop index $index_name$ on $table$;
数据表里面的数据的操作
添加数据 insert into $table$($field1$,$field2$,...) values($value1$,$value2$,...); insert into $table$ values($value1$,$value2$,...); insert into $table$ set $field1$=$value1$,$field2$=$value2$,...; insert into $table$ values($value1$,$value2$,...),($value1$,$value2$,...),...; 查询数据 select * from $table$; select * from $table$ limit $count$; select * from $table$ limit $start$,$count$; select * from $table$ where $field$=$value$; select $field1$,$field2$,... from $table$ where $field$=$value$; %:代表0个、1个或者多个任意字符 _:代表1个任意字符 select * from $table$ where $field$ like "%|_"; select * from $table$ group by $field$;分组 select $field1$,$field2$,...,group_concat($field$) from $table$ group by $field$; select $field1$,group_concat($field$) as $variable1$, count(*) as $variable2$, max($field$) as $variable3$, sum($field$) as $variable4$ from $table$ group by $field$ having count(*) > 2; select * from $src$ order by $field$ desc; $降序 select * from $src$ order by $field$ asc; $升序 更新数据 update $table$ set $field$=$value$ where $field$=$value$; 删除数据 delete from $table$ where $field$=$value$;
备份
备份数据库到文件
mysqldump -u$user$ -p$passwd$ $db$ > $path$/$file$.sql
创建一个新的数据库
mysql -u$user$ -p$passwd$ -e "create database $db$"
导入数据到新的数据库
mysql -u$user$ -p$passwd$ $db$ < $path$/$file$.sql
查看数据库历史命令
cat /root/.mysql_history
远程登陆数据库并查询
mysql -u$user$ -p$passwd$ -h 127.0.0.1 -P 3306 -e "select * from $db$.$table$ limit 2;"
查看数据表的详细信息
show table status like '$table$';
导出数据库的一个数据表
mysqldump $db$.$table$ > $path$/$file$.sql
将数据表导入数据库
mysql $db$ < $path$/$file$.sql
需要注意的是,导入的数据表名称为导出时候,数据表在源数据库中的名称,
因此保证在源数据库中的名称和新数据库中表名称不会重复,否则会发生数据覆盖.