一、数据库环境准备
1、破解navicat
参考这个网站
2、远程连接
我是去连接虚拟机的mysql,但是远端服务器拒绝访问
(1)进入虚拟机的mysql的命令行,并输入密码
(2)use mysql;
(3)查看能远程访问root的主机地址,很显然禁止root远程连接select host from user where user =’root’;
(4)只要把localhost改为%就可以了update user set host = '%' where user ='root';
这里报错不用管
(5)刷新权限flush privileges;
(6)回到本机去测试
二、数据库操作
1、查看库
show databases;
2、创建库
create database school default charset=utf8;
3、删除库
drop database school;
三、数据表操作
1、查看数据库中所有的表
查看表前一定要先use 数据库名;show tables;
查看表结构desc 表名;
查看建表语句: show create table 表名;
2、创建表
(1)用法一
create table 表名(字段名 类型,字段名 类型)engine=innodb default charset=utf8;
示例:create table student(uid int,name varchar(40))engine=innodb default charset=utf8;
(2)用法二
create table if not exists 表名(字段名 类型,字段名 类型)engine=innodb default charset=utf8;
注意:表存在就不添加,不存在则创建
存在表测试:create table if not exists student(id int,pid int)engine=innodb default charset=utf8;
创建一个不存在表:create table if not exists teacher(id int,name varchar(40))engine=innodb default charset=utf8;
3、修改表名
rename table 表名 to 新表名;
示例:rename table teacher to teachers;
4、删除表
drop table 表名;
不示例了后面还要用
四、数据库字段操作
1、修改列名
alter table 表名 change 原列名 新列名 类型;
示例:alter table teacher change name uname varchar(40);
2、添加表字段
alter table 表名 add 字段名 类型(值);
示例:alter table teacher add phoneNum int;
3、删除表字段
alter table 表名 drop 字段名
示例:alter table teacher drop phoneNum;
4、修改字段类型
alter table 表名 modify 字段 类型;
示例:alter table teachers modify uname int;
五、表中数据操作
1、插入
(1)insert into 表名(字段1,字段2,字段3) values (值1,值2,值3);
示例:insert into students(id,name) values(1,'张三');
这里截图截残了,后来才发现,将就将就吧
(2)插入多行数据
insert into 表名(字段1,字段2,字段3) values (a值1,a值2,a值3),(b值1,b值2,b值3);
示例:insert into students(id, name) values(2,'李四'),(3,'无罪');
2、查询数据
(1)查询表中所有数据
select * from 表名;
示例:select * from students;
(2)查询单个字段
select 字段 from 表名;
示例:select id from students;
(3)查询多个字段
select 字段1,字段2,字段3 from 表名;
示例(我这里只有两个字段):select id,name from students;
(4)简单的条件查询
select * from 表名 where 字段=某个值;
示例:select * from students where id = 3;
3、修改表中数据
update 表名 set 字段=某个值 where 条件;
示例:update students set name = '有罪' where id = 3;
4、删除
delete from 表名 where 字段=某个值;
示例:delete from students where id =3;
六、数据库备份与恢复
1、备份数据表
(1)导出数据库中的指定的数据表mysqldump -u root -p 数据库名 表1 表2 > 导出文件名
(2)导出整个库中的所有表,不包含库本身mysqldump -u root -p 数据库名 > 文件名
2、备份数据库
(1)导出指定的数据库mysqldump -u root -p --databases 库名1 库名2 > 导出文件名
(2)导出所有的数据库mysqldump -u root -p --all-databases > 导出文件名
3、还原数据
(1)还原备份的数据表 (不写分号)mysql -u root -p 已存在的库名 < 要导入的文件
(2)还原备份的数据库 (不写分号)mysql -u root -p < 要导入的文件
(3)mysql命令行
选择数据库后source 数据表文件路径
示例:MariaDB [xxoo] > source d:/data.sql (source后边为sql文件存放位置)
4、导出数据库的结构
mysqldump -u root -p -d 数据库名 > 导出的文件名
七、权限与用户管理
1、添加用户
create user ‘新用户名‘@’localhost’ identified by ‘密码’;
示例:create user 'user1'@'localhost' identified by '1234';
2、grant控制权限
grant 具体权限 on 库.表 to ‘用户名‘@’%’ identified by ‘密码’;
示例:grant select,insert on student.stu to 'user1'@'%' identified by '1234';
show grants for user1; #查看权限
3、收回权限
REVOKE [权限] ON [库.表] FROM [用户名]@[IP];
示例:revoke insert on student.stu from 'user1'@'%';
4、删除用户
drop user ‘用户名‘@’%’;
八、编码问题
在cmd中操作phpstudy中的mysql数据库出现中文乱码
解决方法一(不长久)
我第一次修改mysql.ini中的default-character-set和character-set-server的值为gbk
,虽然解决了当时的问题,但是在我重启环境重连之后又出现中文不显示的编码问题。
解决方法二
cmd输入mysql -hIp -uroot -p
连上数据库之后
直接输入set charset gbk;
即可,原因如下:
//执行set charset gbk;等于执行下面两条命令
set character_set_client=gbk; //告诉我客户端这边的文字编码
set character_set_results=gbk; //告诉mysql希望返回的结果集编码;测试中发现只要客户端是gbk编码的,只要设置这个就可以解决乱码这个问题。
如果显示的格式有问题可以输入charset gbk;
解决