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;
存储引擎对比
(本篇完)
标签:配置文件,数据库,MySQL,基础,cnf,mysql,my From: https://blog.51cto.com/xingyuli/6180641