create database database1;
数据库编码创建数据库的时候,有两个编码集:
数据库无论对数据做任何操作,都要保证操作和编码必须是编码一致的。
show variables like 'character_set_database';
show variables like 'collation_database';
当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则
是:utf8_ general_ ci
create database d1 charset=utf8;
create database d2 charset=utf8 collate utf8_general_ci;
创建两个数据库,编码都是utf8,但是校验集不同,一个是使用utf8_ general_ ci
(不区分大小写),另一个是使用utf8_ bin
(区分大小写)
建表+插入数据:
use test1;
create table person(name varchar(10));
insert into person values('a');
insert into person values('A');
进行查询:
select * from person where name='a';
建表+插入数据:
use test2
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
进行查询:
select * from person where name='a';
删除数据库本质是在/var/lib/mysql中删除一个目录
drop database database1;
删除数据库后:
数据库内部看不到对应的数据库
对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
确认当前所在数据库:
select database();
show databases;
show tables;
show create database test;
1️⃣ MySQL 建议我们关键字使用大写,但是不是必须的。
2️⃣ 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
3️⃣ /*!40100 default… */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话。
在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。
alter database test charset=gbk collate gbk_chinese_ci;
mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
此时vim打开test.sql,我们会发现,备份的不仅仅只是数据,还有把历史上所有有效的操作都备份起来了。
也就是说 test.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。
source /home/yyh/MySQL/test.sql;
mysqldump -u root -p 数据库名 表名1 表名2 > 数据库存放路径
mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
备份是在shell命令行进行的,而非MySQL客户端。如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。
-B的意思:在备份文件test.sql中是有创建create database的语句:
查看当前有什么人在使用数据库,也就是查看连接情况:
show processlist;