目录
一、什么是数据库
通常存储数据使用文件即可,为什么还要有数据库呢?
文件保存数据有以下几个缺点:
·文件的安全性问题
·文件不利于数据查询和管理
·文件不利于存储海量数据
·文件在程序中控制不方便
而为了解决上述问题,数据库应运而生。数据库一般指的是在磁盘或者内存中存储的特定结构组织的数据---将来在磁盘上存储的一套数据库方案。
1.1连接服务器
输入:
mysql -h 127.0.0.1 -P 3306 -u root -p
-h:要连接的主机, 127.0.0.1是本地环回
-P:要连接的端口号,默认是3306端口
-u:user 要使用的用户
-p:password
quit:退出mysql。
去掉 -h 默认连接本地已搭建好的mysql服务
去掉 -P:不连接自定义的端口。而是采用3306的默认端口号。
所以一般要连接mysql,只需要这样的指令: mysql -u root -p
1.2mysql客户端和服务端
输入:
which mysql : 查询mysql对应的客户端路径
which mysqld :查询mysql对应的服务端路径
mysql是数据库服务的客户端;
mysqld是数据库服务的服务器端。
mysql的本质是一套提供数据存取服务的网络程序。
二、Mysql的配置和简单使用
2.1mysql配置
输入:
vim /etc/my.cnf 查看mysql配置,其中datadir配置是默认数据库存储文件的路径
datadir = /var/lib/mysql 是MySQL数据库的数据目录路径。在默认情况下,MySQL数据库会将其数据文件存储在/var/lib/mysql目录中。这个目录包含了数据库中的所有数据文件,例如表数据,日志文件等。
2.2mysql简单使用的演示
使用mysql建立一个数据库,建立一张表结构,插入一些数据。
在mysql中操作时,可以同时对比一下mysql在Linux中是如何表现的。
输入:
show databases;
mysql中查看当前已创建的数据库使用指令: show databases;
输入:
use database_name
使用哪个数据库需要使用use加上数据库名称,即可使用对应的数据库。
这段指令的意义是:在数据库hellomysql中创建一个student的表。其中表中有三列。name列,存储数据最大字符数为32字节。age列,存储数据大小为int。gender列,存储数据最大字符数为2字节。
注:varchar 是一种在数据库中用于存储可变长度字符数据的数据类型。它可以存储任意长度的字符数据,但是会占用与存储的实际数据长度相等的存储空间。与之相对的是char数据类型,它会存储固定长度的字符数据。使用varchar 数据类型可以节省存储空间,因为它只会占用实际存储的字符数据所需的空间。
此时,在hellomysql目录中就建立了这些文件。
输入:
select * from table_name;
从表中筛选信息。
输入:
system clear
它是类似于Linux中命令行中输入clear一样的,具有清屏的效果。
输入:
show engines \G;
查看当前mysql支持的存储引擎。存储引擎是数据库管理系统如何存储数据,如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MYSQL的核心就是插件式存储引擎,支持多种存储引擎。
这其中,最常用的是innoDB和MylSAM
2.3 SQL分类
* DDL [ Data Definition Language ] 数据定义语言,用来维护存储数据的结构
代表指令: create,drop,alter
* DML [ Data Manipulation Language ] 数据操纵语言,用来对数据进行操作
代表指令: insert,delete,update
# DML中又单独分了一个DQL,数据查询语言,代表指令:select
* DCL [ Data Control Language ] 数据控制语言,主要负责权限管理和事务
代表指令 : grant, revoke, commit
三、Mysql库的操作
3.1库的创建和删除
①库创建删除的本质
drop database db_name;
创建数据库:create database db_name; -- 本质就是在/var/lib/mysql 中创建一个目录
删除数据库:drop database db_name; 本质就是在/var/lib/mysql删除已创建的目录
虽说在Linux上也能创建删除mysql数据库,但是不建议这么去做。
②字符集和校验规则
创建数据库的时候,有两个编码集:
1. 数据库编码集(charset) --- 数据库未来存储数据
2. 数据库校验集(collation) --- 支持数据库进行字段比较使用的编码,本质也是一种读取数据库中数据采用的编码格式。数据库无论对数据做任何操作,都必须保证操作和编码是一致的!
查看系统默认字符集以及校验规则:
show variables like 'character_set_database';show variables like 'collation_database';
当我们创建数据库时,默认编码集是utf8,默认校验集是utf8_general_ci.
查看数据库支持的字符集:show charset;
查看数据库支持的字符集校验规则: show collation;
不同的编码规则对应相应的校验规则。
如果要指定数据库编码规则,需要在创建时带上选项:
第二种写法:
创建数据库时,指明编码集和校验集。
3.2校验规则对数据库的影响
不区分大小写:创建一个数据库,校验规则使用utf8_general_ci[不区分大小写]。
上面的指令之前就已经讲述,不必多言。没有说明的是select *from person;这是一个查询语句,用于从名为"person"的表中检索(或选择)所有的数据行。通常,* 表示用于所有字段。所以这个查询语句的意思是,从表"person"中选择所有的字段和数据行。
插入采用的是存储规则,而提取采用的是校验规则。
从person表中提取name等于'a'的列。发现'a'和'A'都被提取出来。说明当前表采用的校验规则是不区分大小写的。
数据库test2则区分大小写,采用utf8_bin的校验规则。
那么从表person中筛选列name='a'是不会筛选出来'A'的。
区分大小写默认排序的:
不区分大小写默认排序的:
3.3操纵数据库
①显示创建语句
show create database 数据库名;
说明:
*MYSQL建议我们关键字使用大写,但是不是必须的。
*数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
*/*!40100 default.... */这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话。
②修改数据库
修改数据库test2的编码规则为gbk,校验规则为gbk_chinese_ci;
对数据库的修改主要指的是修改数据库的字符集,校验规则。
四、数据库的备份和恢复
4.1备份
语法:
# mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
注意,备份不是在MySQL中执行的,而是在Linux中操作的。
示例:
打开test1.sql文件,查看里面的内容,不仅存储数据库内的有效信息,而且把我们历史上的有效操作也存储了下来。
4.2恢复
我们现在有了备份文件,删除test1数据库后,如何恢复呢?备份是在Linux中备份,而恢复则是在MySQL中恢复。
操作:
source 备份文件的路径
此时就会把我们创建test1数据库的过程跑一边。因为我们的备份文件中不仅有数据还有有效操作。
4.3注意事项
如果备份的不是整个数据库,而是其中的一张表,怎么做?
# mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql
同时备份多个数据库
# mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
查看连接情况
语法:
show processlist
可以查看当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登录的,很有可能是数据库被人入侵了。