一、MYSQL 连接
命令格式:mysql -h 主机地址 -u 用户名 -p密码 [dbname]
这里的-p和密码是一起的不能分开写,如果确定使用某个数据库,可在其后加上数据库名
如:连接远程主机111.111.111.111,mysql -h 111.111.111.111 -u root -p
退出: exit(回车)
二、创建用户
命令:create user 用户名@‘%’ identified by 密码; #创建远程登入用户
create user 用户名@‘localhost’ identified by 密码; #创建本地登入用户
授予用户权限
完整命令格式:grant all privileges on 数据库名.* to 用户名@‘%’(或者@‘
localhost’); 授予某某数据库所有的权限给该用户
grant all on *.* to 用户名@‘%’/'localhost' ;和上面一样
例如我只向授予ll用户在mydb数据库中的查询权限,(权限有很多了,如,select, insert, update, delete, create,drop )
grant select on mydb.* to ll@'localhost';
三、删除用户
命令:delete from user where user='用户名' and host='%';
删除用户权限
revoke all privileges on 数据库名.* to 用户名@‘%’;
revoke all privileges on 数据库名.* to 用户名@‘localhost’;
四、使用数据库
命令 use 数据库名;
五、数据库常用命令
show databases; 查看数据库
show tables; 查看表
show columns from 表; 查看表里的字段(列)
show grants,查看授予用户的权限
show create table ,显示创建数据库表的语句
create database 数据库名 创建数据库
drop database 数据库名 删除数据库
create table 表名
drop table 表名
在select中加上distinc 去除重复字段
六、备份和恢复数据库
备份数据库
shell> mysqldump -h host -u root -p 数据库名 >dbname_backup.sql
恢复数据库
shell> mysqladmin -h myhost -u root -p create 数据库名 #先要创建数据库
shell> mysqldump -h host -u root -p 数据库名 < dbname_backup.sql 恢复
1.导出一个库结构(mysqldump和source是控制台命令不是sql)
mysqldump -d dbname -u root -p > xxx.sql
多个数据库
mysqldump -d -B dbname1 dbname2 -u root -p > xxx.sql
2.导出一个库数据
mysqldump -t dbname -u root -p > xxx.sql
多个库数据
mysqldump -t -B dbname1 dbname2 -u root -p > xxx.sql
3.导出一个库结构以及数据
mysqldump dbname1 -u root -p > xxx.sql
4.导出一个表数据
mysqldump -t dbname1 tablename1 -u root -p > xxx.sql
多个表数据
mysqldump -t -B dbname1 --tables tablename1 tablename2 -u root -p > xxx.sql
5. 导入
mysql -u root -p
use daname;
source xxx.sql
-d 结构(--no-data:不导出任何数据,只导出数据库表结构)
-t 数据(--no-create-info:只导出数据,而不添加CREATE TABLE 语句)
-n (--no-create-db:只导出数据,而不添加CREATE DATABASE 语句)
-R (--routines:导出存储过程以及自定义函数)
-E (--events:导出事件)
--triggers (默认导出触发器,使用--skip-triggers屏蔽导出)
-B (--databases:导出数据库列表,单个库时可省略)
七、alter命令
#表position增加列test
alter table position add(test char(10));
#表position修改列test
alter table position modify test char(20) not null;
#表position修改列test默认值
alter table position alter test set default 'system';
#表position去掉test默认值
alter table position alter test drop default;
#表position去掉列test
alter table position drop column test;
八、增、删、改、查
insert into 表名(列1,列2) values(值1,值2);
delete from 表名; 清空表中数据
delete from 表名 where... 删除满足条件的项
#将财务部修改为财务一部
update department set name='财务一部' where name='财务部';
select 列1,列2 from 表名 where... 查询满足条件的列;
重要的是联表查询
#显示系统部的人员和职位
select a.name,b.name department_name,c.name position_name
from staffer a,department b,s_position c
where a.department_id=b.id and a.position_id=c.id and b.name='系统部';
联表查询尽可能用join on
select * from A
inner join B on B.name = A.name
left join C on C.name = B.name
left join D on D.id = C.id
where C.status>1 and D.status=1;