数据库基础与安装MYSQL数据库

一、数据库管理系统DBMS

数据库技术是计算机科学的核心技术之一,具有完备的理论基础。使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速、方便地管理数据

1.可以结构化存储大量的数据信息,方便用户进行有效的检索和访问

2.可以有效地保持数据信息的一致性、完整性,降低数据冗余

3.可以满足应用的共享和安全方面的要求

文件管理系统缺点 数据库管理系统DBMS优点
编写应用程序不方便 相互关联的数据的集合
数据冗余不可避免 较少的数据冗余
应用程序依赖性 程序与数据相互独立
不支持对文件的并发访问 保证数据的安全、可靠
数据间联系弱 最大限度地保证数据的正确性
难以按用户视图表示数据 数据可以并发使用并能同时保证一致性
无安全控制功能

1.DBMS的功能

数据管理系统的基本功能为数据定义、数据处理、数据安全、数据备份

1.数据库的建立和维护功能包括建立数据库的结构和数据的录入与转换、数据库的 转储与恢复、数据库的重组与性能监视等功能

2.数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语义的错误数据被输入或输出

3.数据操纵功能:包括数据查询统计和数据更新两个方面

4.数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控制、数据库内部维护等功能

5.通信功能:DBMS与其他软件系统之间的通信,如Access能与其他Office组件进行数据交换

2.DBMS架构

单机架构、大型主机/终端架构、主从式架构(C/S)、分布式架构

3.DBMS分类

1.层次数据库

层次模型数据库系统是最早研制成功的数据库系统,这种数据库最成功的典型是IMS,IMS的全称是Information Management System,由IBM公司研制成功。IMS于1969年投入运行,最早的版本有IMS/360-1和IMS/360-2。较近的版本有IMS/VS DL/1,它是在操作系统DOS/VS(Disk Operation System/Virtual Storage)支持下运行

2.网状数据库

网状数据库是采用网状原理和方法,以网状数据模型为基础建立的数据库。一般是指由网状数据库管理系统产生的网状数据库系统。网状数据模型是以记录类型为结点的网络结构,即一个结点可以有一个或多个下级结点,也可以有一个或多个上级结点,两个结点之间甚至可以有多种联系。例如“教师”与“课程”两个记录类型,可以有“任课”和“辅导”两种联系,称之为复合链。两个记录类型之间的值可以是多对多的联系,例如一门课程被多个学生修读,一个学生选修多门课程

3.RDBMS关系型数据库

Relational Database Management System,关系模型最初由IBM公司的英国计算机科学家埃德加·科德(Edgar F. Codd)于1969年描述,1974年,IBM开始开发系统R,这是一个开发RDBMS原型的研究项目。然而,第一个商业上可用的RDBMS是甲骨文,于1979年由关系软件(现为甲骨文公司)发布

二、RDBMS关系型数据库

1.关系型数据库

1.关系Relational:关系就是二维表,其中:表中的行、列次序不重要

2.行row:表中的每一行又称为一条记录record

3.列column:表中的每一列,称为属性,字段,域field

4.主键primary key:PK,用于唯一确定一个记录的字段,一张表只有一个主键

5.域domain:属性的取值范围,例如:性别只能是男或女

2.常用关系数据库

1.MYSQL(免费、开源、体积小)

2.SQL Server(面向Windows操作系统、简单、容易使用)

3.Oracle(面向所有主流平台、安全完善、操作复杂)

4.DB2(面向所有主流平台、大型、安全完善)

5.PostgreSQL(简称pgsql,EnterpriseDB)

3、关系型数据库三要素

实体:对应现实世界中可区别于其他对象的“事件”或“事物”,如银行客户、银行账户等

属性:实体所具有的某一特性,一个实体可以有多个属性,如“银行客户”实体集中的每个实体均具有姓名、住址、电话等属性

联系:实体集之间的对应关系称为联系,也称为关系,如银行客户和银行账户之间存在“储蓄”的关系

4.关系型数据库与非关系型数据库

1.关系数据库

关系型数据库的存储结构是二维表格,在每个二维表中,每一行称为一条记录,用来描述一个对象的信息,每一列称为一个字段,用来描述对象的一个属性

1.关系数据库系统是基于关系模型的数据库系统

2.关系模型的数据结构使用简单易懂的二维数据表

3.关系模型可用简单的“实体-关系”(E-R)图来表示

4.E-R图中包含了实体(数据对象)、关系和属性三个要素

2.非关系数据库

非关系型数据库存储数据不以关系模型为依据,不需要固定的表格式(常用的非关系数据库:Redis、mongoDB等)

1.数据库可高并发读写

2.对海量数据高效率存储与访问

3.数据库具有高扩展性与高可用性

三、数据库基础

数据库内核的作用:调用硬件资源

1.数据

1.描述事物的符号记录

2.包括数字、文字、图形、图像、声音、档案记录等

3.以“记录”形式按统一的格式进行存储

2.表

1.将不同的记录组织在一起

2.用来存储具体数据

3.数据库

1.表的集合,是存储数据的仓库

2.以一定的组织方式存储的相互有关的数据集合

4.访问数据库的流程

过程:应用程序把查询SQL语句发给服务器端执行>服务器解析请求的SQL语句>语句执行

注:确保SQL语法正确,确保SQL语义上的正确性即对象是否存在,数据库用户是否具有相应的访问权限

四、数据库介绍

1.数据库系统

数据库系统是由人机系统、硬件、OS、数据库、DBMS、应用软件和数据库用户组成,用户可以通过DBMS或应用程序操作数据库

数据库分两大类,关系型数据库和非关系型数据库

关系数据库SQL:

操作命令:SQL语句

存储结构:二维表格

存储的数据:结构化数据

每一行称为一条记录,用来描述一个对象的信息

每一列称为一个字段,用来描述对象的一个属性

非关系数据库NoSQL:

存储结构:键值对文档索引时间序列

缓存型:Redis Memcached

文档型:MongoDB

索引型:ElasticSearch

时序型:Prometheus InfluxDB

主键:

主键(Primary Key)是一个数据库表中的一列或一组列,用于确保数据的唯一性和数据行的唯一标识,在表中,主键的值是唯一的

主键具有以下特点:

1.唯一性:主键列中的值必须是唯一的,每一行的主键值都不相同

2.非空性:主键列的值不能为空,也就是不允许为空值或NULL值

3.唯一标识性:主键用于识别和区分表中的不同行数据,通过主键可以快速定位和访问表中的数据

主键还可以用于建立表与表之间的关系,实现数据的关联和连接操作

2.MySQL数据库的特点和三大分支

MySQL数据库特点:

1.性能卓越、服务稳定

2.开源,无版权限制,成本低

3.多线程,多用户

4.基于(C/S)(客户端/服务端)架构

5.安全可靠

MySQL三大分支:

1.mysql

2.mariadb

3.percona Server

查看MySQL版本:mysql -V

3.MySQL的组成

客户端程序:

1.mysql交互式的CLI工具

2.mysqladmin:基于mysql协议管理mysqld

3.mysqlimport:数据导入工具

4.myisamchk:检查MyISAM库

5.myisampack:打包MyISAM表,只读

服务器端程序:

1.mysqld_safe

2.mysqld

3.mysqld_multi多实例

4.常用的数据类型

int :整型 无符号[0,232-1],有符号[-231,2^31-1]
float :单精度浮点 4字节32位
double :双精度浮点 8字节64位
char :固定长度的字符类型
varchar :可变长度的字符类型
text :文本
image :图片
decimal(5,2) :5个有效长度数字,小数点后面有2位

5.SQL语句

SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。

SQL语言分类:
DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
DML:数据操纵语言,用于对表中的数据进行管理
DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
DCL:数据控制语言,用于设置或者更改数据库用户或角色权限

6.MySQL的约束特性

1.primary key(主键约束):字段的值不能重复且不能为null,一个表只能有一个唯一键

2.uniq key(唯一性约束):字段的值不能重复,可以为null,一个表可以有多个唯一键

3.not null(非空约束):字段的值不能为null

4.default(默认值约束):字段的值如果没有设置,则使用默认值自动填充

5.auto_increment (自增约束) :字段的值如果没有设置,默认会从1开始,每次自动递增1,要求自增字段必须设置主键

6.int(N) zerofill (零填充)

五、编译安装MySQL数据库

1.安装相关依赖包

yum -y install gcc gcc-c++ bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel  gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel   ncurses-devel autoconf cmake

2.下载并解压压缩源码包

cd  /opt

tar  xf  mysql-boost-5.7.20.tar.gz

3.切换到mysql目录下检测编译环境并选择功能

cd  mysql-5.7.20

 cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1

4.编译安装(时间较久)

make  -j2  &&  make  install

5.数据库目录进行权限调整,改变属主属组

useradd  -s  /sbin/nologin  mysql

chown  -R  mysql:mysql  /usr/local/mysql

chown  mysql:mysql  /etc/my.cnf

6.编辑配置文件

 vim  /etc/my.cnf

[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

7.设置环境变量

#配置环境变量

echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile

#刷新

source /etc/profile

#查看环境变量是否配置成功

echo  $PATH

8.初始化数据库

#切换目录

cd  /usr/local/mysql

#初始化

bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

9.复制

cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

10.数据库开启自启、关闭、状态

#设置开机自启

systemctl enable mysqld

#开启

systemctl start mysqld

#关闭

systemctl stop mysqld

#查看状态

systemctl status mysqld

#过滤端口验证是否开启

ss  -anpt |grep 3306

11.设置MySQL密码

#设置密码为123,开始初始密码为空,直接回车即可

mysqladmin -u root -p password  "123"

 12.登录和登出mysql

#登录

mysql  -u  root -p

#退出

quit

六、yum安装mysql数据库

1.yum安装5.7版本

yum install mariadb-server -y

2.启动 MariaDB 数据库服务

systemctl start mariadb.service

3.对MariaDB数据库进行初始化设置,这里只用设置一个密码,一路回车即可

#进入初始化设置

mysql_secure_installation 

4.创建一个新的YUM仓库配置文件,将相关的仓库信息写入到这个文件中

#创建一个新的yum仓库配置文件

tee /etc/yum.repos.d/mysql.repo <<EOF

#将此内容写入该文件,官方源5.7.3

[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
enabled=1
gpgcheck=0
EOF

5.使用yum包管理器安装MySQL服务器

yum -y install mysql-community-server

6.启动mysql服务

systemctl start mysqld

7.查看3306端口使用情况

ss -ntap |grep 3306

8.启动mysql

mysql  -u root -p

输入密码

七、MySQL数据库基本操作

1.登录Mysql数据库

表名和库名区分大小写,命令不区分大小写

#登录

mysql  -u  root  -p

2.新建数据库与查看数据库的基础信息

#建立数据库

create database eva;

#查看数据库的基础信息

show create database eva;

3.新建数据库,指定字符集

#指定utf8字符集

create database eva charset=utf8;

#查看数据库的基础信息

show create database eva;

4.if no exists是否存在(判断数据库是否存在)

#判断数据库是否存在

create database IF NOT EXISTS eva;

#查看警告信息

show warnings;

#创建数据库的SQL语句,用于创建一个名为zabbix的数据库,并指定字符集为utf8,排序规则为utf8_bin

create database 是创建新数据库的SQL语句

esdeath 是要创建的数据库的名称

character set utf8 指定了数据库的默认字符集为utf8,这意味着存储在数据库中的所有字符串数据将使用utf8编码

collate utf8_bin 指定了数据库的默认字符排序规则为utf8_bin,这意味着字符串比较将区分大小写

create database zabbix character set utf8 collate utf8_bin;

#查看该数据库的基础信息

show create database esdeath;

5.删除数据库

#删除名为esdeath的数据库

drop database eva;

6.查看数据库列表

#查看所有数据库(不推荐)

show databases;

7.新建表

#进入数据库

use eva;

#创建数据表名为student(id 2个字节,不加符号,主键 插入新数据时自动为主键分配唯一递增的值,名字 可变最多10个字符,age 一个字节 不加符号,性别 多选M或F,默认为M)

create table student (id smallint unsigned primary key auto_increment, name varchar(10), age tinyint unsigned,gender enum('M','F') default 'M' );

#加入数据,名字和年龄分别为eva,18岁

insert student (name,age) values('eva',18);

#查看student数据表记录

select * from student;

#加入空字段

insert student values();

#查看student数据表记录

select * from student;

#删除该空字段

delete from student where id=2;

#查看student数据表记录

select * from student;

#描述数据库中名为student表的结构信息

desc student;

#查看创建数据表的语句

show create table student;

#删除数据表

drop table student;

相关推荐

  1. 数据库MySQL数据库基础

    2024-07-21 03:26:01       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 03:26:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 03:26:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 03:26:01       45 阅读
  4. Python语言-面向对象

    2024-07-21 03:26:01       55 阅读

热门阅读

  1. git rebase 和 git merge区别

    2024-07-21 03:26:01       16 阅读
  2. go语言的基础语法

    2024-07-21 03:26:01       16 阅读
  3. 华为OD机试(C卷+D卷)2024真题目录

    2024-07-21 03:26:01       18 阅读
  4. docker 安装 使用 ubuntu

    2024-07-21 03:26:01       20 阅读
  5. Eureka在Kubernetes中的部署指南:微服务发现的艺术

    2024-07-21 03:26:01       15 阅读
  6. 栈的概念—函数调用

    2024-07-21 03:26:01       16 阅读