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

news2024/9/20 20:17:04

一、数据库管理系统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.coloradmin.cn/o/1941118.html

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

相关文章

24届电子信息应届硕士生秋招+春招心得与感悟

背景&#xff1a; 研二下学期在深圳某互联网独角兽公司实习过四个月 岗位为测试实习生 求职的方向为互联网-测试岗 24届电子信息硕士 24秋招&#xff08;2023.9-2023.12&#xff09; 其实早在7月份部分互联网公司和大厂已经开始提前批了&#xff0c;因为我不是科班出身&…

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

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

【BUG】已解决:requests.exceptions.ProxyError: HTTPSConnectionPool

已解决&#xff1a;requests.exceptions.ProxyError: HTTPSConnectionPool 目录 已解决&#xff1a;requests.exceptions.ProxyError: HTTPSConnectionPool 【常见模块错误】 原因分析 解决方案 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&am…

OCC 创建方管(拉伸操作)

目录 一、OCC 拉伸操作 二、例子 1、使BRepBuilderAPI_MakeFace 2、使用BRepPrimAPI_MakeRevol 3、垂直路径扫掠 一、OCC 拉伸操作 BRepPrimAPI_MakeSweep Class Reference - Open CASCADE Technology Documentation OCC提供几种图形的构建是由基本图形的旋转&#xff0c;…

使用Python快速比较和替换键值对

问题背景 您需要在多个文件中替换所有特定字符串的实例。例如&#xff0c;您有一个包含 60728 个键值对的映射词典&#xff0c;需要处理多达 50 个文件&#xff0c;每个文件大约有 250000 行&#xff0c;并且需要在每行中替换多个键。 解决方案 方法一&#xff1a;使用正则表…

【区块链 + 智慧政务】山东荣成:区块链政务诚信管理系统 | FISCO BCOS应用案例

2018 年 9 月&#xff0c;荣成市政府与山东观海数据技术有限公司合作&#xff0c;基于 FISCO BCOS 区块链技术推动智慧城市建设&#xff0c; 其中&#xff0c;信用管理是智慧城市核心之一。 荣成市区块链政务诚信管理系统&#xff0c;建设信用信息征集、评价、披露和应用于一体…

CloudCampus的三种部署模式

CloudCampus的三种部署模式 本地部署 客户购买控制器 自己运营 软件永久license sns &#xff0c;将软件补丁、软件升级&#xff08;含升级版本的新特性&#xff09;、远程支持等打包在一起组成SnS年费 msp自建云部署 msp 购买控制器 msp运营 …

美业SaaS门店收银系统怎么管理订单?博弈美业系统App实操|美业系统Java源码

- 打开博弈美业 - 首页点击订单管理 - 选择想查询的相应订单即可 美业门店管理系统Java源码、美业店务系统演示视频请私信

HTTP协议详解:从零开始的Web通信之旅

文章目录 一、引言&#xff1a;Web通信的基石 - HTTP协议二、HTTP请求方法2.1 OPTIONS2.2 HEAD2.3 GET2.4 POST2.5 PUT2.6 DELETE2.7 TRACE2.8 CONNECT2.9 注意 三、HTTP工作原理四、HTTP 请求/响应流程4.1、客户端连接到web服务器4.2、发送HTTP请求4.3、服务器接受请求并返回H…

【C++】学习笔记——红黑树

文章目录 十七、红黑树1.红黑树的概念红黑树的性质 2.红黑树节点的定义3.红黑树的插入4.红黑树的验证5.完整代码结果演示6.红黑树与AVL树的比较 未完待续 十七、红黑树 1.红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的…

XXL-JOB 定时任务在AI大模型中的应用

目录 1. 应用场景 2. 部署 XXL-JOB 3. SpringBoot 集成 XXL-JOB 定时任务代码示例 3.1 添加依赖 3.2 添加配置 3.3 添加执行器到Ioc容器 3.4 添加定时任务 3.5 控制台新增执行器 3.6 控制台添加任务 3.7 控制台开启任务 1. 应用场景 AI 大模型的调用往往是一个高资源…

在 Linux 系统上安装 GCC 编译器(不同发行版)

GCC&#xff08;GNU Compiler Collection&#xff09;是一个功能强大的开源编译器&#xff0c;支持多种编程语言&#xff0c;如 C、C、Fortran 等。在这篇博客中&#xff0c;我们将介绍如何在不同的 Linux 发行版上安装 GCC 编译器。 一、在 Ubuntu 上安装 GCC 1. 更新软件包…

numpy(史上最全)

目录 numpy简介 性能对比 ndarray属性 numpy中的数组&#xff1a; 几个创建的函数&#xff1a; 1) np.ones(shape, dtypeNone, orderC) shape: 形状&#xff0c;使用元组表示 2) np.zeros(shape, dtypefloat, orderC) 3) np.full(shape, fill_value, dtypeNone, orderC)…

阿里国际站运营工具 :一键提升你的全球竞争力!

在当今全球化的商业环境中&#xff0c;阿里巴巴国际站作为全球知名的B2B电子商务平台&#xff0c;为无数企业提供了一个展示产品、拓展国际市场的重要渠道。随着越来越多的企业加入到这个平台&#xff0c;如何在激烈的竞争中脱颖而出&#xff0c;成为了每个外贸人员必须面对的挑…

【BUG】已解决:ModuleNotFoundError: No module named ‘requests‘

ModuleNotFoundError: No module named ‘requests‘ 目录 ModuleNotFoundError: No module named ‘requests‘ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&a…

java-selenium 截取界面验证码图片并对图片文本进行识别

参考链接 1、需要下载Tesseract工具并配置环境变量&#xff0c;步骤如下 Tesseract-OCR 下载安装和使用_tesseract-ocr下载-CSDN博客 2、需要在IDEA中导入tess4j 包&#xff1b;在pom.xml文件中输入如下内容 <!--导入Tesseract 用于识别验证码--><dependency>&l…

SpringSecurity通用权限管理系统

1、介绍 权限管理是所有后台系统都会涉及的一个重要组成部分&#xff0c;而权限管理的核心流程是相似的&#xff0c;如果每个后台单独开发一套权限管理系统&#xff0c;就是重复造轮子&#xff0c;是人力的极大浪费&#xff0c;本项目就是针对这个问题&#xff0c;提供了一套通…

堆的相关特点

一.建堆的两种方法 给定一个数组&#xff0c;其中数组里面的元素个数是n个如何能够把这个数组建立成为一个堆&#xff0c;今天探讨两种方法&#xff0c;分别是向上调整法和向下调整法&#xff0c;分别探讨他们的时间复杂度 向上调整法&#xff08;以小堆为例&#xff09; 回…

【好玩的经典游戏】Docker环境下部署赛车小游戏

【好玩的经典游戏】Docker环境下部署赛车小游戏 一、小游戏介绍1.1 小游戏简介1.2 项目预览二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 安装Docker环境3.2 检查Docker服务状态3.3 检查Docker版本3.4 检查docker compose 版本四、构建容器镜像4.1 下…

解决Visual studio内报错信息:MSB8036:找不到 Windows SDK 版本问题

问题描述&#xff1a; 找不到WindowsSDK版本&#xff0c;请安装所需版本的Windows SDK&#xff0c;或者在项目属性页中通过右键单击解决方案并选择“重定解决方案目标”来更改SDK版本。 首先&#xff0c;如果你尝试了以下两种方法&#xff1a; &#xff08;1&#xff09;重新…