【MySQL--01】数据库基础

1.什么是数据库

数据库是用来存储数据的。那么我们之前学习过的存储数据可以使用文件,那么为什么还要弄个数据库呢?

这就要谈谈用文件保存数据的几个缺点:

  • 文件的安全性问题
  • 文件不利于数据查询和管理
  • 文件不利于存储海量数据
  • 文件在程序中控制不方便

因此为了解决上述的问题,专家们设计出更利于管理数据的东西——数据库,它更有效地管理数据。数据库的水平是衡量一个程序员水平的重要指标

数据库:物理操作系统文件或其他形式文件类型的集合。在MySQL数据库中,数据库文件可以是frm,MYD,MYI,ibd结尾的文件。当使用NDB引擎时,数据库的文件可能不是操作系统上的文件,而是存放在内存之中的文件,但是定义仍然不变。

数据库存储介质:

  • 磁盘
  • 内存

2.主流数据库

  • MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
  • SQL Sever:微软的产品,.Net程序元的最爱,常用于中大型项目。
  • Oracle:甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL

2.1 MySQL

我主要学习MySQL数据库,那么就再了解了解MySQL数据库。MySQL被设计为一个可移植的数据库,几乎在当前所有系统上都能运行,如:Linux,Windows,Mac,Solaris和FreeBSD。尽管各平台在底层(如线程)实现方面都各有不同。但是MySQL基本上能保证在各个平台上的物理体系结构的一致性。因此,用户应该能够很好的理解MySQL数据库在所有这些平台上是如何运作的。

MySQL架构

在这里插入图片描述

实例

MySQL数据库由后台线程以及一个共享内存区组成。共享内存可以被运行的后台线程所共享。需要牢记的是,数据库实例才是真正用于操作数据库文件的。在MySQL中,实例与数据库的关系通常是一一对应的。即一个实例对应一个数据库,一个数据库对应一个实例。但是,在集群情况下可能存在一个数据库被多个数据实例使用的情况。

MySQL被设计为一个单进程多线程架构的数据库,这点与SQL Server比较类似,但与Oracle多进程的架构有所不同(Oracle的Windows版本也是单进程多线程架构的)。这也就是说,MySQL数据库实例在系统上的表示就是一个进程。可以通过ps指令观察MySQL数据库启动后的进程情况:

ps axj | grep mysqld

在这里插入图片描述

注意进程为17022的进程就是MySQL的实例。当启动实例时,MySQL数据库会去读取配置文件,根据配置文件中的参数来启动数据库实例。在MySQL数据库中可以没有配置文件,在这种情况下,MySQL会按照编译时的默认参数设置启动实例。

  • 查看当MySQL实例启动时,会在那些位置查找配置文件:
[Lxy@VM-20-12-centos ~]$ mysql --help | grep my.cnf
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 

可以看到,MySQL数据库是按照/etc/my.cnf -> /etc/mysql/my.cnf -> /usr/etc/my.cnf -> ~/.my.cnf 的顺序来读取配置文件的。如果几个配置文件中都有同一个参数,MySQL数据库会按照读取到的最后一个参数为准。在Linux环境下,配置文件一般放在/etc/my.cnf下。在Windows平台下,配置文件的后缀名可能是.cnf或者.ini

配置文件中有一个参数datadir,该参数指定了数据库所在的路径。在Linux操作系统下默认datadir/usr/local/mysql/data,用户可以修改该参数,当然也可以使用该路径。

[Lxy@VM-20-12-centos ~]$ cat /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

skip-grant-tables

character-set-server=utf8
default-storage-engine=innodb
[Lxy@VM-20-12-centos ~]$ 

3.基本使用

3.1 MySQL的安装

Centos 7 下安装MySQL大家可以点击此链接(十分详细)

(14条消息) Centos7下安装MySQL(保姆级别服务)_拾至灬名瑰的博客-CSDN博客

3.2 连接服务器

输入:

mysql -u root -p

在这里插入图片描述

注意:

  • 如果没有写 -h 127.0.0.1 默认是本地连接
  • 如果没有写``-P 3306` 默认是3306端口号

3.3服务器管理

  • 执行win+r输入services.msc打开服务管理器
  • 通过下图左侧停止,暂停,重启按钮进行服务管理(一般建议不要动)

在这里插入图片描述

4.服务器,数据库,表之间的关系

  • 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员针对每一个应用创建一个数据库
  • 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
  • 数据库服务器,数据库和表的关系如下:
    在这里插入图片描述

5.使用数据库

这里使用数据库只是一些简单的sql语句,更加相信更加复杂的将在后面的博客中逐渐呈现。

  • 显示当前所有数据库
    show databases;
    

在这里插入图片描述

  • 使用数据库
use [数据库名]; //例如 use 104_db;
  • 创建数据库表
create table student(
	id int,
	name varchar(20)
);

在这里插入图片描述

  • 查看表信息
desc [表名]; //例如 desc student;

在这里插入图片描述

  • 像指定表中插入数据
insert into [表名] (id,name) values(1,"张三");
//例如: insert into student (id,name) values(1,"张三");
//也可以如果是全属性插入也可以省略属性字段
//例如: insert into student values(2,"李四");
//如果明确指定属性字段后面的插入字段必须与之匹配
//例如: insert into student (id) values (3);

在这里插入图片描述

  • 查询表中的数据
select * from [表名]; // *:表示全属性查询,会显示表中所有的属性
select (id) from [表名]; // 这种属于指定属性查询,只会显示目标属性字段的信息

在这里插入图片描述

  • 清屏
system clear //mysql并没有提供清屏的指令 可以使用系统自带的指令
  • 退出数据库
quit

6.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

7.存储引擎

存储引擎:数据库管理系统如何存储数据,如何为存储的数据建立索引和如何更新,查询数据等技术的实现方法。MySQL的核心就是插件式存储引擎,支持多种存储引擎

查看存储引擎

show engines;

在这里插入图片描述

存储引擎对比

在这里插入图片描述

(本篇完)

猜你喜欢

转载自blog.csdn.net/qq_58325487/article/details/130033600
今日推荐