首页 > 数据库 >【MySQL】数据库基础

【MySQL】数据库基础

时间:2023-04-10 14:06:08浏览次数:46  
标签:配置文件 数据库 MySQL 基础 cnf mysql my

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

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

ps axj | grep mysqld

【MySQL】数据库基础_mysql_02

注意进程为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

【MySQL】数据库基础_mysql_03

注意:

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

3.3服务器管理

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

【MySQL】数据库基础_数据库_04

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

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

【MySQL】数据库基础_mysql_05

5.使用数据库

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

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

【MySQL】数据库基础_MySQL_06

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

【MySQL】数据库基础_mysql_07

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

【MySQL】数据库基础_数据库_08

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

【MySQL】数据库基础_mysql_09

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

【MySQL】数据库基础_数据库_10

  • 清屏
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】数据库基础_MySQL_11

存储引擎对比

【MySQL】数据库基础_MySQL_12

(本篇完)

标签:配置文件,数据库,MySQL,基础,cnf,mysql,my
From: https://blog.51cto.com/xingyuli/6180641

相关文章

  • 【MySQL--02】库的操作
    1.库的操作1.1创建数据库语法:CREATEDATABASE[IFNOTEXISTS]db_name[create_specification[,create_specification]...]create_specification:[DEFAULT]CHARACTERSETcharset_name[DEFAULT]COLLATEcollation_name说明:大写的表示关键字[]是可选项CHARACTERSET:指定......
  • 2、排序基础
    1、选择排序选择排序是一个基础的排序算法,它的复杂度是O(n2)publicclassSelectionSort{privateSelectionSort(){}privatestatic<E>voidswap(E[]arr,inta,intb){Ek=arr[a];arr[a]=arr[b];arr[b]=k;......
  • 在Linux中配置MySQL并远程连接
    一.安装前的检查和准备工作。1.1检查自己的liunx是否安装过mysqlrpm-qa|grepmysql​1.1.1如果有的话,就删除(XXXX是自己的mysql目录)rpm-e--nodepsmysql-xxxx1.2查询所有的mysql对应的文件夹whereismysqlmfind/-namemysql​1.2.1删除相关目录或者文......
  • Loki采集Mysql errorlog,你值得拥有的错误日志聚合系统
    说到分布式日志存储系统,大家肯定对ELK、EFK这些工具并不陌生。可是它们都基于Elasticsearch存储,搭建复杂,耗资源,上手难。所以,个人非常推崇Grafana Labs开源的Loki 轻量级日志聚合分析系统Loki使用标签来作为索引,而不是对全文进行检索,所以在搜索上会有一定的局限性。但是,也能满......
  • mysql 5.1 chm 优化摘选
    1如果正使用非事务表,不应该使用MySQL来检查列的内容。一般情况,最安全的(通常是最快的)方法是让应用程序确保只向数据库传递合法值;如id=(int)$id2可移植性:如果想要使用Informix或DB2,不应该使用超过18个字符的列名3MySQL在检索和更新MyISAM表记录方面很快,但是在同一个表上混合......
  • 今天帮一朋友导入mysql数据遇到一怪问题,可是到现在都想不明白怎么回事
    xx.sql文件理应是从其它mysql管理系统中导出的,但是让我想不明白的是,为什么field字段之间却使用了圆点(.)来分隔却不是逗号(,);而从这个sql文件中却没有任何的生成此文件的系统注释说明,也让我无从知道这个数据到底从那个平台导出的,导致我测试了n次导入都以为是中文乱码问题,因为......
  • php连接mysql 的错误:用户密码使用了旧版本的加密方式
    CannotconnecttoDatabase,pleasecheckyourconfiguration:错误代号:2000 mysqlndcannotconnecttoMySQL4.1+usingtheoldinsecureauthentication.PleaseuseanadministrationtooltoresetyourpasswordwiththecommandSETPASSWORD=PASSWORD('you......
  • mysql - 在 MySQL 空间数据库中查找相交区域
    在MySQL数据库中,如何找到完全或部分落在距另一点一定距离内的圆形区域?有很多例子可以找到某个半径内的点,但没有找到与该半径相交的圆形区域。我有一份为某些区域(点和半径)提供服务的承包商列表。客户需要能够根据与他们的距离找到这些承包商。最佳答案我认为您正在寻找......
  • Oracle 11g R2创建数据库时,提示:要求在当前Oracle主目录中配置监听程序 必须运行Netca
    问题描述:    Oracle11gR2创建新的数据库时出现:使用DatabaseControl配置数据库时,要求在当前Oracle主目录中配置监听程序必须运行Netca以配置监听程序,然后才能继续。或者,可以选择继续,但不使用DatabaseControl配置。==================================================......
  • 数据库常用表说明(微至管家)
    用户相关信息mc_members:用户信息表(查手机号mobile)xcommunity_member:用户表(uid=mc_members.uid)mc_mapping_fans:粉丝表(uid=mc_members.uid)xcommunity_member_room:房号表xcommunity_member_bind:房号绑定表(memberid=xcommunity_member.id,addressid=room.id)手机端:$_W['uniaci......