MySQL数据库详解 一:安装MySQL数据库及基本管理

news2025/2/28 10:42:19

文章目录

  • 1. 数据库的基本概念
    • 1.1 数据库的组成
      • 1.1.1 数据
      • 1.1.2 表
      • 1.1.3 数据库
    • 1.2 当前主流数据库及其特点
    • 1.3 数据库类型
      • 1.3.1 关系数据库
        • 1.3.1.1 关系数据库的组成
        • 1.3.1.2 非关系数据库
  • 2. 安装MySQL
    • 2.1 yum安装
    • 2.2 编译安装MySQL
      • 2.2.1 前置准备
      • 2.2.2 编译安装
      • 2.2.3 修改mysql配置文件
      • 2.2.4 设置路径环境变量
      • 2.2.5 初始化数据库
      • 2.2.6 添加mysql系统服务
      • 2.2.7 修改MySql登录密码
  • 3. MySQL数据库的基本操作
    • 3.1 SQL主要类别
    • 3.2 语言规范
    • 3.3 SQL语句分类
  • 4. Mysql数据库的管理
    • 4.1 查看数据库
      • 4.1.1 查看当前服务器中已有的数据库
      • 4.1.2 查看数据库中包含的表
      • 4.1.3 查看表的结构(字段)
      • 4.1.4 查看当前mysql版本
  • 5. 数据类型
    • 5.1 常用数据类型
    • 5.2 字符串类型
    • 5.3 整数类型
  • 6. 数据库和表的添加和删除
    • 6.1 创建数据库
    • 6.2 删除指定数据库
    • 6.3 创建表
    • 6.4 删除指定的数据表
  • 7. 表中数据的添加和修改
    • 7.1 向指定表里添加数据
    • 7.2 查询数据表内数据记录
    • 7.3 修改、更新数据表中的数据记录
    • 7.4 删除表内容
  • 8. 修改表名和表结构
    • 8.1 修改表名
    • 8.2 扩展表结构,添加字段
    • 8.3 修改字段(列)名,添加唯一键
    • 8.4 删除字段

1. 数据库的基本概念

1.1 数据库的组成

1.1.1 数据

  • 描述事物的符号记录
  • 包括数字、文字、图形、图像、声音、档案记录等
  • 以”记录“形式按统一的格式进行存储

1.1.2 表

  • 将不同的记录组织在一起
  • 依赖存储具体数据

1.1.3 数据库

  • 表的集合,是存储数据的仓库
  • 以一定的组织方式存储的相互有关的数据集合
  • 是按照数据结构来组织、存储和管理数据的仓库

1.2 当前主流数据库及其特点

  • SQL Server (微软公司产品)
    面向Windows操作系统
    简单、易用

  • Oracle (甲骨文公司产品)
    面向所有主流平台
    安全、完善、操作复杂

  • DB2 (IBM公司产品)
    面向所有主流平台
    大型、安全、完善

  • MySQL (甲骨文公司收购)
    免费、开源、体积小

1.3 数据库类型

1.3.1 关系数据库

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

1.3.1.1 关系数据库的组成

  • 关系型数据库:SQL
  • 操作语言:SQL语句
  • 存储的数据结构:二维表格
  • 存储的数据:结构化数据
  • 行字段:用来描述对象的一个属性
  • 列字段:用来描述一个对象的信息

库 -> 表 -> 二维表格形式的结构化数据

1.3.1.2 非关系数据库

  • 非关系型数据库:NoSQL
  • 存储数据不以关系模型为依据,不需要固定的表格式
  • 存储结构:键值对 文档、索引、时间序列

缓存型 Redis Memcached
文档型 MongoDB
索引型 ElasticSearch
时序型 Prometheus InfluxDB

2. 安装MySQL

2.1 yum安装

#创建mysql源
cd /etc/yum.repos.d/
vim mysql.repo
[mysql]
name=mysql5.7
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
gpgcheck=0
 
#安装服务mysql-community-server
yum install mysql-community-server -y 
 
#启动服务
systemctl start mysqld
ss -ntap |grep 3306
 
#登入数据库,但是密码是默认的,需要查看
mysql -u root -p

grep password /var/log/mysqld.log
mysql -u root -p'默认的密码'
#特殊符号用单引号引起来
 
#登入数据库后必须修改密码
alter user root@'localhost' identified by 'Zhuo@123';
#alter user root@'主机名' identified by '新密码';
 
#可以使用mysql> \h查看帮助

2.2 编译安装MySQL

2.2.1 前置准备

systemctl stop firewalld
setenforce 0
#关闭防火墙和selinux服务

yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
#安装Mysql环境依赖包

在这里插入图片描述

useradd -M -s /sbin/nologin  mysql
#创建运行用户

2.2.2 编译安装

cd /opt

tar zxvf nginx-1.22.0.tar.gz -C /opt/
#解压缩源码包

在这里插入图片描述

cd /opt/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_EXTRA_CHARSETS=all \
-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

在这里插入图片描述

make -j2 && make install
#编译并安装

在这里插入图片描述

2.2.3 修改mysql配置文件

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                    #设置服务器字符集编码格式为utf8
pid-file = /usr/local/mysql/mysqld.pid       #指定pid 进程文件路径
socket = /usr/local/mysql/mysql.sock         #指定数据库连接文件
server-id = 1                                #指定服务ID号

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
#更改mysql安装目录和配置文件的属主属组
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

2.2.4 设置路径环境变量

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

echo 'export PATH' >> /etc/profile

source /etc/profile  #刷新使其生效

2.2.5 初始化数据库

cd /usr/local/mysql/bin/

./mysqld \                        
--initialize-insecure \              #生成初始化密码为空
--user=mysql \                       #指定管理用户
--basedir=/usr/local/mysql \         #指定数据库的安装目录
--datadir=/usr/local/mysql/data      #指定数据库文件的存储路径

#直接拷贝版
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

在这里插入图片描述

2.2.6 添加mysql系统服务

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
#使其能使用systemd服务
systemctl daemon-reload          刷新识别    
systemctl start mysqld.service   开启服务
systemctl enable mysqld          开机自启动
ss -anpt | grep 3306 |tr -s ' '       查看端口

在这里插入图片描述

2.2.7 修改MySql登录密码

mysqladmin -u root -p password "abc123" 
#刚开始没密码是空的直接回车

在这里插入图片描述

mysql -u root -p     
#这个命令敲下,提示要输入密码,这个就是刚才设置的密码abc123

在这里插入图片描述

3. MySQL数据库的基本操作

3.1 SQL主要类别

数据库:database

表:table,行:row 列:column

索引:index

视图:view

存储过程:procedure

存储函数:function

触发器:trigger

事件调度器:event scheduler,任务计划

用户:user

权限:privilege

3.2 语言规范

在数据库系统中,SQL 语句不区分大小写,建议用大写

SQL语句可单行或多行书写,默认以 " ; " 结尾

关键词不能跨多行或简写

用空格和TAB 缩进来提高语句的可读性

子句通常位于独立行,便于编辑,提高可读性

数据库对象和命名

3.3 SQL语句分类

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

语句含义
DDL数据定义语言,用于创建数据库对象,如库、表、索引等
DML数据操纵语言,用于对表中的数据进行管理
DQL数据查询语言,用于从数据表中查找符合条件的数据记录
DCL数据控制语言,用于设置或者更改数据库用户或角色权限
#help后面跟上具体命令可以查看帮助
例如:mysql> help create
#查看支持字符集
show charset;
默认拉丁文字,需要修改为
 
utf8     | UTF-8 Unicode   
#阉割版的
 
utf8mb4  | UTF-8 Unicode 
#真实的版本
 
#修改字符集
vim /etc/my.cnf
[mysqld]
character-set-server=utf8mb4

4. Mysql数据库的管理

4.1 查看数据库

4.1.1 查看当前服务器中已有的数据库

show databases;					#大小写不区分,分号“;”表示结束

在这里插入图片描述

4.1.2 查看数据库中包含的表

#方式一:在库中查看表
use scj;             #use 数据库名
#前往scj数据库
show tables;           #查看表
 
#方式二 :在库外查看表  
show tables from scj;    #show tables from 数据库名
#查看scj数据库下所有已创建表

在这里插入图片描述

4.1.3 查看表的结构(字段)

#表内查看
use 数据库名;

describe [数据库名.]表名;
可缩写成:desc 表名;

#表外查看
desc 数据库名.表名;

在这里插入图片描述

4.1.4 查看当前mysql版本

mysql -V

在这里插入图片描述

5. 数据类型

5.1 常用数据类型

类型说明
int整型,用于定义整数类型的数据
fload单精度浮点4字节32位,准确表示到小数点后六位
double双精度浮点8字节64位
char固定长度的字符类型,用于定义字符类型数据。
varchar可变长度的字符类型
text文本
image图片
decimal(5,2)5个有效长度数字,小数点后面有2位。指定长度数组

char和varchar的区别

char的长度是不可变。char如果存入数据的实际长度比指定长度要小 会补空格至指定长度 如果存入的数据的实际长度大于指定长度,低版本会被截取高版本会报错。

varchar长度是可变的,默认会加一个隐藏的结束符,因此结束符会多算一个字节。

https://dev.mysql.com/doc/refman/8.0/en/data-types.html
#官方文档

选择正确的数据类型的三大原则:

  • 更小的通常更好,尽量使用可正确存储数据的最小数据类型

  • 简单就好,简单数据类型的操作通常需要更少的CPU周期

  • 尽量避免NULL,包含为NULL的列,对MySQL更难优化

5.2 字符串类型

char(n) 固定长度,最多255个字符,注意不是字节

varchar(n) 可变长度,最多65535个字符

tinytext 可变长度,最多255个字符

text 可变长度,最多65535个字符

mediumtext 可变长度,最多2的24次方-1个字符

longtext 可变长度,最多2的32次方-1个字符

BINARY(M) 固定长度,可存二进制或字符,长度为0-M字节

VARBINARY(M) 可变长度,可存二进制或字符,允许长度为0-M字节

内建类型:ENUM枚举, SET集合

5.3 整数类型

tinyint(m) 1个字节 范围(-128~127)

smallint(m) 2个字节 范围(-32768~32767)

mediumint(m) 3个字节 范围(-8388608~8388607)

int(m) 4个字节 范围(-2147483648~2147483647)

bigint(m) 8个字节 范围(±9.22*10的18次方)

上述数据类型,如果加修饰符unsigned后,则最大值翻倍

例如:tinyint unsigned的取值范围为(0~255)

6. 数据库和表的添加和删除

6.1 创建数据库

#建立数据库 
create database 数据库名;

在这里插入图片描述

6.2 删除指定数据库

drop database 数据库名;

在这里插入图片描述

6.3 创建表

use 数据库名;
create table 表名 (字段1 数据类型,字段2 数据类型[,...][,primary key (主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。

例如:
use scj;
create table students (id int, name char(4), age int, sex char(2), hobby varchar(20), primary key(id));
#创建students表并指定id为主键

在这里插入图片描述

6.4 删除指定的数据表

#方式一:库内删除
use 数据库名;
drop table 数据表名;
 
#方式二:库外删除
drop table 数据库名.数据表名;		

7. 表中数据的添加和修改

7.1 向指定表里添加数据

insert into 表名(字段1,字段2[,...]) values(字段1的值,字段2的值,...);insert into 表名 values (字段1的值, 字段2的值, ...);    #要按照表结构的字段顺序设置值

#示例
insert into students values (2, '张三', 20, '男', 'game')
select * from students;   #查看表内容

在这里插入图片描述

7.2 查询数据表内数据记录

select 字段名1,字段名2[,...] from 表名 [where 条件表达式];
 
#查询全部数据
select * from 数据表名;
#示例
select * from students;
 
#查询指定数据
#示例
select id,name from students where id=2;
#查看id为2行的id和name列

在这里插入图片描述

#以列表方式竖向显示
select * from 数据表名\G;			
#示例
select * from students\G;
 
#只显示头2行
select * from 数据表名 limit 2;
#示例	
select * from students limit 2;
 
#显示第3行后的2行
select * from 数据表名 limit 3,2;
#示例
select * from students limit 3,2;

7.3 修改、更新数据表中的数据记录

update 表名 set 字段名1=字段值1[,字段名2=字段值2] [where 条件表达式];
 
#示例
update students set age=19 where id=3;
#修改id为3行的age为19

在这里插入图片描述

7.4 删除表内容

delete from 表名 [where 条件表达式];
 
#示例
delete from students where id=3;
#删除studtens表里id为3的内容

在这里插入图片描述

8. 修改表名和表结构

8.1 修改表名

alter table 旧表名 rename 新表名;
 
#示例
alter table students rename st;
#将表students改名为st

在这里插入图片描述

8.2 扩展表结构,添加字段

alter table 表名 add 字段;

alter table st add address varchar(50) default '不详';
#为st表添加默认值为不详,字段名为address的属性

在这里插入图片描述

8.3 修改字段(列)名,添加唯一键

alter table 表名 change 旧列名 新列名 数据类型 [unique key];

#示例
alter table st change name username varchar(10) unique key;
#修改st表name字段名为username并指定其为唯一键

在这里插入图片描述

#验证
insert into st (id, username, age) values (6, '张三', 22);

insert into st (id, username, age) values (6, '老王', 22);
#唯一键不可重复

在这里插入图片描述

8.4 删除字段

alter table 表名 drop 字段名;
 
例如:
#删除st表中sex字段
alter table st drop sex;

在这里插入图片描述

#拓展
use scj;

create table if not exists info (
id int(4) zerofill primary key auto_increment,				
name varchar(10) not null default '匿名',
cardid int(18) not null unique key,
hobby varchar(50));
----------------------------------------------------------------------------------------------------------
#if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建
#int(4) zerofill:表示若数值不满4位数,则前面用“0”填充,例0001
#auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次
#unique key:表示此字段唯一键约束,此字段数据不可以重复;一张表中只能有一个主键, 但是一张表中可以有多个唯一键
#not null:表示此字段不允许为NULL
----------------------------------------------------------------------------------------------------------

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

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

相关文章

《C和指针》笔记27:递归

递归所需要的两个特性: 存在限制条件,当符合这个条件时递归便不再继续;每次递归调用之后越来越接近这个限制条件。 这里没有用计算阶乘和菲波那契数列的例子说明递归,作者指出前者递归并没有提供任何优越之处。而后者效率之低是…

渗透测试的概况、依据、内容方法和流程有哪些?

一、项目概况 通过模拟黑客的思维和攻击手段,对计算机业务系统的弱点、技术缺陷和漏洞进行探查评估。经过客户授权后,在不影响业务系统正常运行的条件下,渗透人员在黑客可能的不同的位置,采取可控的方法、手段和工具,…

Java计算机毕业设计 基于SpringBoot+Vue的毕业生信息招聘平台的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

Input子系统 - Kernel驱动程序 - Android

Input子系统 - Kernel驱动程序 - Android 1、Input子系统相关定义1.1 代码位置1.2 input_dev结构体:表示输入设备1.3 input_handler结构体:struct input_handler - implements one of interfaces for input devices1.4 input_handle结构体:将…

图文文案音视频素材库流量主小程序开发

适用于全行业的资源素材运营变现小程序,支持文档、图片、文件、图文、音视频、网盘等多种资源形式,多种功能组合运营变现的小程序。 适用领域: 公司/微商素材、学习/考研/论文资料分享、PPT模板/背景图/壁纸/头像、知识付费、抖音素材等等…

传统 IAM 已成为企业增长桎梏,下一代身份基础设施如何帮助企业破局?

近期,国际权威研究机构 Gartner 发布了《Hype Cycle for Data, Analytics and AI in China, 2023》(2023 中国数据、分析与 AI 技术成熟度曲线报告)。报告指出,数据、分析技术和人工智能对中国的数字经济和国家战略至关重要&#…

经典匹配算法: KMP、Sunday与ShiftAnd

本次介绍的三种算法的时间复杂度: 基础概念: 图3 图1 单模匹配问题:单个模式串,比如我们要在一个长串(母串S)中查找一个短串(模式串T)是否出现过。 暴力匹配算法: 算法…

IDEA下使用Spring MVC

<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://ma…

56资源网系统源码搭建知识付费-含源码

内置了上万条数据资源 大致功能&#xff1a; 支持免费与付费&#xff08;增加了插件付费插件&#xff09;支持侧边栏支持添加各类型广告&#xff08;你所能用到的基本都有&#xff09;.支持网盘下载模块支持所有页面自定义支持文章页三方跳转支持添加页面支持自定义采集&#…

nginx配置指南

nginx.conf配置 找到Nginx的安装目录下的nginx.conf文件&#xff0c;该文件负责Nginx的基础功能配置。 配置文件概述 Nginx的主配置文件(conf/nginx.conf)按以下结构组织&#xff1a; 配置块功能描述全局块与Nginx运行相关的全局设置events块与网络连接有关的设置http块代理…

Python Opencv实践 - 视频文件写入(格式和分辨率修改)

参考资料&#xff1a; python opencv写视频——cv2.VideoWriter()_cv2.cv.videowriter(_翟羽嚄的博客-CSDN博客 import cv2 as cv import numpy as np#1. 打开原始视频 video_in cv.VideoCapture("../SampleVideos/Unity2D.mp4") video_width int(video_in.get(c…

优化器的使用

代码示例&#xff1a; import torch import torchvision from torch import nn from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential from torch.utils.data import DataLoader from torch.utils.tensorboard import SummaryWriter# 加载数据集转化为Tensor…

腾讯mini项目-【指标监控服务重构】2023-08-22

今日已办 50字项目价值和重难点 项目价值 通过将指标监控组件接入项目&#xff0c;对比包括其配套工具在功能、性能上的差异、优劣&#xff0c;给出监控服务瘦身的建议 top3难点 减少监控服务资源成本&#xff0c;考虑性能优化如何证明我们在监控服务差异、优劣方面的断言…

ubuntu 22.04运行opencv4的c++程序遇到的问题

摘要&#xff1a;本文介绍一下在ubuntu系统中&#xff0c;运行一个最简单的opencv4程序都出问题的解决方法&#xff0c;并对其基本原理作简单阐述。解决问题的方法有很多&#xff0c;本文只提供其中一种。 opencv版本是4.2.0&#xff0c;ubuntu版本是20.04 查询opencv版本的指…

Aztec.nr:Aztec的隐私智能合约框架——用Noir扩展智能合约功能

1. 引言 前序博客有&#xff1a; Aztec的隐私抽象&#xff1a;在尊重EVM合约开发习惯的情况下实现智能合约隐私 Aztec.nr&#xff0c;为&#xff1a; 面向Aztec应用的&#xff0c;新的&#xff0c;强大的智能合约框架使得开发者可直观管理私有状态基于Noir构建&#xff0c;…

写一篇nginx配置指南

nginx.conf配置 找到Nginx的安装目录下的nginx.conf文件&#xff0c;该文件负责Nginx的基础功能配置。 配置文件概述 Nginx的主配置文件(conf/nginx.conf)按以下结构组织&#xff1a; 配置块功能描述全局块与Nginx运行相关的全局设置events块与网络连接有关的设置http块代理…

AIGC专栏6——通过阿里云与AutoDL快速拉起Stable Diffusion和EasyPhoto

AIGC专栏6——通过阿里云与AutoDL快速拉起Stable Diffusion和EasyPhoto 学习前言Aliyun DSW快速拉起&#xff08;新用户有三个月免费时间&#xff09;1、拉起DSW2、运行Notebook3、一些小bug AutoDL快速拉起1、拉起AutoDL2、运行Notebook 学习前言 快速拉起AIGC服务 对 用户体…

CAN Driver

CAN Driver 前言&#xff1a;CAN驱动针对的是微控制器内部的CAN控制器&#xff0c;它可以实现以下功能&#xff1a; 对CAN控制器进行初始化&#xff1b; 发送和接收报文&#xff1b; 对报文的数据和功能进行通知&#xff08;对接收报文的指示、对发送报文的确认&#xff09…

基于SSM+Vue的人力资源管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

交叉编译工具链-Ubuntu 安装说明

交叉编译工具链-Ubuntu 安装说明 【实验目的】 了解交叉编译工具链的安装方法与使用方法 【实验环境】 1、 ubuntu 14.04 发行版 【注意事项】 1、实验步骤中以“$”开头的命令表示在 ubuntu 环境下执行 【实验步骤】 1、安装交叉编译工具链 在 ubuntu 下打开一个终端并进入到家…