数据库基础与安装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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/48934.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

目前航空航天设备怎么减重设计

目前航空航天设备怎么减重设计 1.使用轻质高强度材料1.1复合材料1.2金属基复合材料1.3陶瓷基复合材料1.4功能梯度材料和蜂窝材料 2.结构优化设计2.1拓扑优化2.2仿生学设计 3.部件和系统轻量化3.1机载娱乐系统3.2航空线缆3.3激光焊接技术 4.发动机和推进系统的优化4.1轻量化发动…

python爬虫Selenium模块及测试案例详解

什么是selenium&#xff1f; &#xff08;1&#xff09;Selenium是一个用于Web应用程序测试的工具。 &#xff08;2&#xff09;Selenium 测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。 &#xff08;3&#xff09;支持通过各种driver&#xff08;FirfoxDrive…

python gradio 的输出展示组件

HTML&#xff1a;展示HTML内容&#xff0c;适用于富文本或网页布局。JSON&#xff1a;以JSON格式展示数据&#xff0c;便于查看结构化数据。KeyValues&#xff1a;以键值对形式展示数据。Label&#xff1a;展示文本标签&#xff0c;适用于简单的文本输出。Markdown&#xff1a;…

JavaScript之WebAPIs-BOM

目录 BOM操作浏览器一、Window对象1.1 BOM&#xff08;浏览器对象模型&#xff09;1.2 定时器-延时函数1.3 js执行机制1.4 location对象1.5 navigator对象1.6 history对象 二、本地存储三、补充数组中的map方法数组中的join方法数组中的forEach方法(重点)数组中的filter方法(重…

Linux——Centos系统安装(动图演示)

一、创建虚拟机并做相应配置 打开VMware Workstation&#xff0c;选择创建新的虚拟机&#xff1b; 1、选择自定义选项&#xff1a;点击下一步 2、选择虚拟机硬件兼容性&#xff1a;直接下一步就行了&#xff1b;点击下一步 3、安装客户机操作系统&#xff1a;这里我们选择稍后安…

C++对象模型之绕过private权限修饰符

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、C对象模型二、演示1.类层次2.内存排列 总结 前言 咱们都知道C语言在创建类的时候data member&#xff08;数据成员&#xff09;和fuchtion member&#xf…

Linux操作系统的有关常用的命令

1.linux系统的概述 1.1 什么是Linux系统? Linux&#xff0c;全称GNU/Linux&#xff0c;是一种免费使用和自由传播的类UNIX操作系统&#xff0c;其内核由林纳斯本纳第克特托瓦 兹&#xff08;Linus Benedict Torvalds&#xff09;于1991年10月5日首次发布&#xff0c;它主要受…

LVGL项目实战之UI规划

LVGL项目实战之UI规划 ** 实物购买&#xff1a;TB 南山府嵌入式 ** 我们在在做项目之前&#xff0c;先需要确定项目的需求以及可能实现的功能&#xff0c;我们只有确定这些才能够对整体的框架进行把握。 本小结就说一下我们这个项目的一个整体的框架结构以及功能。 1-硬件构…

C语言实现二叉树以及二叉树的详细介绍

目录 1.树概念及结构 1.1树的概念 1.2树的相关概念 1.3树的表示 2.二叉树概念及结构 2.1二叉树的概念 2.2特殊的二叉树 2.3二叉树的性质 2.4二叉树的存储结构 3.二叉树顺序结构--特殊的二叉树--堆及其实现 3.1堆的概念及结构 3.2堆的实现 3.2.1堆的结构 3.2.2堆…

《JavaSE》---21.<简单认识Java的集合框架包装类泛型>

目录 前言 一、什么是集合框架 1.1类和接口总览 二、集合框架的重要性 2.1 开发中的使用 2.2 笔试及面试题 三、背后所涉及的数据结构 3.1 什么是数据结构 3.2 容器背后对应的数据结构 四、包装类 4.1 基本数据类型和对应的包装类 4.2 装箱和拆箱 1.最初的写法 2.…

org.springframework.context.ApplicationContext发送消息

1、创建消息的实体类 package com.demo;/*** 监听的实体类**/ public class EventMessage {private String name;public EventMessage(String name) {this.name name;}public String getName() {return name;}public void setName(String name) {this.name name;} }2、创建消…

【Linux】如何使用docker快速部署Stirling-PDF并实现远程处理本地文档

文章目录 前言1. 安装Docker2. 本地安装部署StirlingPDF3. Stirling-PDF功能介绍4. 安装cpolar内网穿透5. 固定Stirling-PDF公网地址 前言 本篇文章我们将在Linux上使用Docker在本地部署一个开源的PDF工具——Stirling PDF&#xff0c;并且结合cpolar的内网穿透实现公网随时随…

Java 集合框架:Java 中的双端队列 ArrayDeque 的实现

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 019 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…

共享模型之无锁

一、问题提出 1.1 需求描述 有如下的需求&#xff0c;需要保证 account.withdraw() 取款方法的线程安全&#xff0c;代码如下&#xff1a; interface Account {// 获取余额Integer getBalance();// 取款void withdraw(Integer amount);/*** 方法内会启动 1000 个线程&#xf…

GraphPad prism处理cck-8获得ic50

C组为空白对照组&#xff0c;a组为dmso对照组&#xff0c;b组为细胞加药组&#xff0c;八个梯度的药物浓度 一、数据转化 首先&#xff0c;打开软件&#xff0c;选项中选择x的第一项&#xff0c;y的第二项&#xff0c;单一药物浓度设定了几个孔就选几 把自己的药物浓度直接复制…

ubuntu22安装拼音输入法

专栏总目录 一、安装命令&#xff1a; sudo apt update sudo apt install fcitx sudo apt install fcitx-pinyin 二、切换输入法

游戏常用运行库安装包 Game Runtime Libraries Package

游戏常用运行库安装包&#xff08;Game Runtime Libraries Package&#xff09;是一个整合了多种游戏所需运行库的安装程序&#xff0c;旨在帮助玩家和开发者解决游戏无法正常运行的问题。该安装包支持从Windows XP到Windows 11的系统&#xff0c;并且具备自动检测系统并推荐合…

代码随想录训练第二十七天|LeetCode56.合并区间、LeetCode738.单调递增的数字、LeetCode968.监控二叉树

文章目录 56.合并区间思路 738.单调递增的数字思路 968.监控二叉树思路确定遍历顺序如何隔两个节点放一个摄像头 56.合并区间 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一…

Step-DPO 论文——数学大语言模型理解

论文题目&#xff1a;STEP-DPO: STEP-WISE PREFERENCE OPTIMIZATION FOR LONG-CHAIN REASONING OF LLMS 翻译为中文就是&#xff1a;“LLMs长链推理的逐步偏好优化” 论文由港中文贾佳亚团队推出&#xff0c;基于推理步骤的大模型优化策略&#xff0c;能够像老师教学生一样优…

String 和StringBuilder字符串操作快慢的举例比较

System.currentTimeMillis(); //当前时间与1970年1月1日午夜UTC之间的毫秒差。public class HelloWorld {public static void main(String[] args) {String s1 "";StringBuilder s2 new StringBuilder("");long time System.currentTimeMillis();long s…