1. 连接登录
mysql [-h 主机地址 ] -u用户名 -p用户密码
mysql -S /var/lib/mysql/mysql.sock //对于多个数据库时,可以指定sock文件来连接相应的数据库
也可直接将它写入:/etc/my.cnf
[ mysql ]
prompt=u@h(d)> //指定提示符
socket=/var/run/mysqld/mysql56.sock
远程连接:
mysql -uroot -p -h172.16.0.253 -P3307
退出:exit /quit
修改密码:
mysqladmin -u 用户名 -p密码
mysqladmin -u用户名 -p旧密码 password 新密码
2. 操作表基本命令 (ddl dml dcl)
1.创建数据库
create database <数据库名>;
2.显示所有的数据库
show datebases;注意加s
3.删除数据库
drop database <数据库名>;
drop database if exists ds;
4.切换数据库
use 数据库名;
5.查看当前信息
status; 看通信方式
select current_user(); 登录用户
select database(); 当前使用的数据库
system df -hT; 执行shell命令
6.查看当前数据库包含的表信息
show tables; 注意加 s
show warnings;查看上一条警告信息
7.mysql在shell下创造数据库
mysql ds 直接进入相应的数据库
mysql -e " create database ds"
mysql ds -e "insert into stu select 10 , 'tom' , 1"
建表
create table <表名> (<字段名1> <类型1> [,..<字段名n> <类型n>]);
drop table if exists dept;
create table dept
(
deptID int primary key,h
deptName varchar(32),
deptLeader varchar(16)
)engine=innodb charset=utf8;
drop table if exists stu;
create table stu
(
stuID int,
stuName varchar(16),
stuAge int,
stuSex enum( 'W','M'),
score float,
salary dec(7,1),
deptID int,
primary key(stuID)
)engine=innodb charset=utf8
alter table stu add foreign key(deptID) references dept(deptID); //添加外键
alter table stu drop foreign key stu2_ibfk_1 ; //删除外键
alter table stu drop primary key; //删除主键
添加字段: alter table 表名 add 字段类型其他;
在表myclass中添加一个字段passtest,类型为int(4),默认值为0
mysql>altertable myclass add passtest int(4) default'0';
alter table stu drop deptID ;
alter table stu modify stuID int auto_increment;
alter table stu change stuName stuN varchar(8);
修改库信息:
alter database mis charset = utf8;
库信息保存在datadir下,如果只是myisam引擎的库,可以拷贝文件夹做热备份,而且修改文件夹,可以修改库名
第二种有数据,部分表结构丢失
3.insert into stu2 select * from stu; --仅做数据的备份
8.获取表结构
show create table 表名 //查看详细的建表过程
9.删除表
drop table <表名>;
drop table if exists stu;
10.更改表名
rename table 原表名 to 新表名;
alter table stu4 rename stu10
3.字符集
show variables like '%char%'; //查看客户端字符集
set names utf8; //设置客户端字符集
在utf8字符集中
select char_length('中国') ---> 2; select length('中国') ----->6 //字节数
4. 完整性
实体的完整性,pk 2NF
引用的完整性,参照完整性,fk
用户自定义的 (check)
有时候导入大量数据,由于外键约束可能导不进,或者速度慢,可以暂时关闭外键约束
从表(外键) -> 主表(主键)
子表(外键) -> 父表(主键)
两张表都要是innodb
5.dcl
mysql -h -P -u –p
select user, host, password from mysql.user;
show privileges;
grant all on *.* to dba@'%' identified by 'aixocm'; ---给以dba用户所有的权限
show grants for dba@'%'; ---%代表任意地址
revoke all on *.* from dba@'%'; ---收回权限
drop user dba@'%'; ---删除用户
grant select, insert on ds.* to tom@localhost identified by 'aixocm'; --给以指定库,指定权限,指定登录
revoke insert on ds.* from tom@localhost;
6.简单导入导出命令
1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
3.导入数据库
a.常用source命令
mysql> create new
mysql> use new
mysql> source /tmp/david/david.sql
b.使用mysql命令
mysql> create database renee;
./mysql -uroot -p -D renee < /tmp/david/david.sql