Mysql数据库基础

目录

一、什么是数据库

1.1连接服务器

1.2mysql客户端和服务端

二、Mysql的配置和简单使用

2.1mysql配置

2.2mysql简单使用的演示

[2.3 SQL分类](#2.3 SQL分类)

三、Mysql库的操作

3.1库的创建和删除

①库创建删除的本质

②字符集和校验规则

3.2校验规则对数据库的影响

3.3操纵数据库

①显示创建语句

②修改数据库

四、数据库的备份和恢复

4.1备份

4.2恢复

4.3注意事项

一、什么是数据库

通常存储数据使用文件即可,为什么还要有数据库呢?

文件保存数据有以下几个缺点:

·文件的安全性问题

·文件不利于数据查询和管理

·文件不利于存储海量数据

·文件在程序中控制不方便

而为了解决上述问题,数据库应运而生。数据库一般指的是在磁盘或者内存中存储的特定结构组织的数据---将来在磁盘上存储的一套数据库方案

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的核心就是插件式存储引擎,支持多种存储引擎。

这其中,最常用的是innoDBMylSAM

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,如果查出某个用户不是你正常登录的,很有可能是数据库被人入侵了。

相关推荐
lllsure3 分钟前
MySQL总结
数据库·mysql
weixin_5318042443 分钟前
SQL优化技巧(如查询优化、索引优化)。分布式系统的基本概念及挑战(如数据一致性、服务发现、负载均衡)
数据库·sql·服务发现
一 乐1 小时前
考研论坛平台|考研论坛小程序系统|基于java和微信小程序的考研论坛平台小程序设计与实现(源码+数据库+文档)
java·数据库·学习·考研·微信·小程序·源码
一 乐1 小时前
租拼车平台|小区租拼车管理|基于java的小区租拼车管理信息系统小程序设计与实现(源码+数据库+文档)
java·数据库·vue.js·微信·notepad++·拼车
BillDev2 小时前
Oracle创建用户报错-ORA-65096: invalid common user or role name
数据库·oracle
szial2 小时前
深入理解SQL模糊查询中的特殊字符处理——以DB2为例
数据库·sql
jxxchallenger2 小时前
踩坑spring cloud gateway /actuator/gateway/refresh不生效
java·数据库·gateway
肥or胖2 小时前
【MySQL】索引
linux·数据库·mysql
Kiwi233332 小时前
产品经理-需求分析
数据库·产品经理·需求分析
读心悦3 小时前
修改 MySQL 数据库中的唯一键
数据库·mysql