(叠甲:如有侵权请联系,内容都是自己学习的总结,一定不全面,仅当互相交流(轻点骂)我也只是站在巨人肩膀上的一个小卡拉米,已老实,求放过)。
什么是数据库
存储数据用文件就可以了,为什么还要弄个数据库?
文件保存数据有一下几个缺点:
1)文件安全性问题
2)文件不利于数据查询和管理
3)文件不利于储存比较大的数据
4)文件在程序中控制不方便
数据库的存储介质:磁盘、内存
为了解决上述问题,程序员就设计出了更加利于数据管理的东西——数据库
主流的数据库有哪些?
1)SQL Sever:微软产品,.Net程序员的最爱,中大型项目;
2)Oracle:甲骨文产品,适合大型项目,复杂逻辑的业务,并发一般来说不如MySQL;
3)MySQL:最受欢迎的数据库,属于甲骨文,并发性好,不合适做复杂的业务,主要用于电商,SNS,论坛,对简单的SQL处理效果好。
除此以外还有PostgreSQL、SALite、
使用案例(基于MySQL)
创建数据库
create database test;
使用数据库
use test;
创建数据库表
create table student(
id int,
name carchar(32),
gender carchar(2)
);
表中插入数据
insert into student (id,name,gender) values(1,'张三','男');
insert into student (id,name,gender) values(2,'李四','男');
查询表中数据
select *from student;
MySQL架构
MySQL是一个可移植的数据库,几乎在当前所以的操作系统上运行,如Unix/Linux、Windows、Mac和Solaris。各种系统在底层实现方面各有不同,但是MySQL基本上能保证在,每个平台上的物理体系结构的一致性。
SQL分类
1)DDL【data definition language】数据定义语言,用来维护数据的结构
代表指令:create , drop , alter
2)DML 【data manipulation language】数据操纵语言,用于对数据进行操作
代表指令:insert , delete , update
3)DCL 【data control language】数据控制语言,主要负责权限管理和事务
代表指令:grant , revoke ,commit
存储引擎
存储引擎:数据库管理系统如何存储数据,如何为存储的数据建立索引和如何更新,查询数据等技术的实现方法,MySQL的核心就是插件式存储引擎,支持多种存储引擎。
查看引擎
show engines
字符集和校验规则
show variables like 'character_set_databsase';
show variables like 'collation_database';
查看数据库支持的字符集
show charset;
字符集主要式控制用什么语言,比如utf8可以使用中文。
查看数据库支持的字符集校验规则
show collation;
校验规则对数据库的影响
1)不区分大小写
创建一个数据库,校验规则使用utf8_genneral_ci【不区分大小写】
create database test1 collate utf8_general_ci;
use test1;
create table person(name varchar(20));
insert into person values ('a');
insert into person values ('A');
insert into person values ('b');
insert into person values ('B');
结果
区分大小写
创建一个数据库,校验规则使用utf8_bin【区分大小写】
create database test2 collate utf8_bin;
use test2;
create table person(name varchar(10));
insert into person values ('a');
insert into person values ('A');
insert into person values ('b');
insert into person values ('B');
结果
结果排序
不区分大小写排序以及结果
区分大小写排序及结果
操作数据库
查看数据库
show databases;
显示创建语句
show create database 数据库名;
修改数据库
说明:对数据库的修改主要是指修改数据库的字符集,校验规则;
例:将test1数据库字符集改成gbk
alter database test1 charset = gbk;
数据库删除
drop database test1;
执行删除之后的结果:
1)数据库内部看不到对应的数据库
2)对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
注:不要随意删除数据库;
备份和恢复
备份
语法:
#mysqldump -p3306 -u root -p 密码 -B 数据库名 >数据库备份存储的文件路径
例:将mytest库备份到文件(退出连接)
#mysqldump -P3306 -u root -p123456 -B mytest > D:/mytest.sql
这时,可以打开看看mytest.sql文件 里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。
还原
mysql > source D:/mysql-5.7.22/mytest.sql;
注:如果备份的不是整个数据库,而是其中一张表,怎么做?
# mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql
同时备份多个数据库
# mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
如果备份一个数据库时,没有带上B-参数,在恢复数据时,需要先创建空数据库,然后使用数据库,再使用source来还原。
查看连接情况
语法
show processlist;
例:
可以告诉我们当前有哪些用户连接了我们的MySQL,如果查出哪个用户不是你正常登录的,很有可能你的数据库别人入侵了,以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。