[数据库] 数据库基础知识

648 0
Honkers 2025-8-12 23:25:48 | 显示全部楼层 |阅读模式

目录

一、数据库理论

 1. 数据库概述

  1)数据

  2)数据库

 2. 常见的数据库

  1)关系型数据库

  2) 非关系型数据库

 3. MySQL

  1)概述

  2)MySQL的特性

  3)MySQL的四层架构

  4)MySQL 工作流程

二、MySQL安装部署

 1. 版本及下载

  1)常用格式

 2. 虚拟机中部署及安装

  1)准备工作

  2)安装配置 

 3. 红帽中的操作

  1)尝试连接

  2)连接的语句

  3)密码更改操作

三、MySQL库表操作

 1. SQL语句基础

  1)SQL语句四大类

  2)书写规范

  3)建立库/表的命名约束

 2. 数据库操作

  1)数据库基本操作

 3. MySQL字符集

  1)字符集

  2)Unicode与UTF编码

   3)字符特性CI CS

 4. 数据表操作

  1)数据类型

 5. 数据表的基本操作

 6. 复制表(结构)


一、数据库理论

 1. 数据库概述

  1)数据

  • 描述事物的符号记录,可是数字、文字、图像、声音、语言等,经过数字转换后存入
  • 格式化:xfs ntfs fat32

  2)数据库

  • 存储数据的仓库,是长期存放在计算机内、有组织、可共享的大量数据的集合
  • 数据结构化 数据的共享性高、冗余度低、易扩充
  • 数据物理独立性高
  • 数据逻辑独立性强
  • 数据由DBMS统一管理和控制(安全性、完整性、并发控制、故障恢复)
  • 高效读写,格式化存储

 2. 常见的数据库

  1)关系型数据库

  • Oracle、DB2、MySQL、浪潮K-DB、华为高斯、武汉达梦

  2) 非关系型数据库

  • NoSQL、Redis

 3. MySQL

  1)概述

  • MySQL是一个小型数据库管理系统
  • 体积小、速度快、总体拥有成本低、开源

  2)MySQL的特性

  • 使用C和C++,具备可以执行
  • 多个系统上兼容,支持多种操作系统
  • 为多种编程语言提供API
  • 支持多线程
  • 提供多语言支持,utf-8 对数据高效处理

  3)MySQL的四层架构

  • 网络连接层:负责处理客户端与 MySQL 服务器之间的连接管理、身份验证和安全验证。
  • 数据库服务层:是 MySQL 的核心层,负责处理 SQL 语句的解析、优化、执行以及提供各种内置功能。
  • 存储引擎层:负责数据的实际存储和提取,是 MySQL 区别于其他数据库的重要特性(插件式存储引擎),如InnoDB、MySAM。
  • 文件系统层:将存储引擎管理的数据持久化到磁盘文件中,是数据的最终存储载体。

  4)MySQL 工作流程

  • 连接层负责接入 → 服务层负责 SQL 解析与优化 → 存储引擎层负责数据实际操作 → 文件系统层负 责数据持久化,最终将结果返回给客户端
  1. 客户端连接服务器并验证身份
  2. 发送 SQL 语句给服务器
  3. 服务器解析 SQL,生成最优执行计划
  4. 调用存储引擎执行操作(读写数据)
  5. 存储引擎从磁盘 / 内存取数据,处理后返回
  6. 服务器将结果返回给客户端
  7. 结束后断开连接

二、MySQL安装部署

 1. 版本及下载

  1)常用格式

  • MySQL官网地址: http://www.mysql.com/
  • 下载地址: http://www.mysql.com/ https://dev.mysql.com/downloads/installer/
  •   windows 的cmd中用户名必须为英文或数字

 2. 虚拟机中部署及安装

  1)准备工作

  • 上传虚拟机文件(直接拖入)

  • 检查网络是否为NAT 关闭防火墙、安全软件

  2)安装配置 

  • 双击打开 ==>“Server only” ==>一路“Next”

  • 设置密码

  • 设置备注名

  • 点击检测 ==>“Finish” ==>“Next” ==>“Finish”

  • 打开“此电脑” 右击==>“属性”

  • “高级系统设置” ==>“环境变量”

  • 双击 ”系统变量” 的 “Path ……..”

  • 在 “此电脑” 查找并复制mysql可执行程序文件的绝对路径(C:/Program Files/MySQL Sever 8.0/bin) 
  • 全部点击”确定“ ==>重启Windows主机(虚拟机的)
  • 通过window的命令终端自定义方式连接mysql服务
  • 搜索PowerShell 打开即可
  1. S C:\Users\jungle> mysql.exe -uroot -p111111 # mysql.exe -u用户名 -p密码
  2. mysql> exit
  3. # 退出
复制代码

  • 服务中查看: cmd输入services.msc,显示MySQL80正在运行

 3. 红帽中的操作

  1)尝试连接

  • 查看IP
  • 连接xshell
  1. [root@server ~]# ping www.baidu.com
  2. [root@server ~]# systemctl stop firewalld
  3. [root@server ~]# setenforce 0
  4. [root@server ~]# dnf=yum=dnf-3
  5. [root@server ~]# cd /etc/yum.repos.d/
  6. [root@server yum.repos.d]# ll
  7. [root@server yum.repos.d]# rm -rf base.repo # 不需要其他yum源
  8. [root@server yum.repos.d]# ll
  9. [root@server yum.repos.d]# cat redhat.rep
  10. [root@server ~]# dnf remove mariadb* -y
复制代码
  • 通过xftp上传创建仓库的配置包
  • 安装仓库文件
  1. [root@server ~]# cd /etc/yum.repos.d
  2. [root@server yum.repos.d]# ll
  3. [root@server yum.repos.d]# rpm -ivh mysql84-community-release-el92.noarch.rpm
  4. [root@server yum.repos.d]# ll
  5. [root@server yum.repos.d]# dnf install mysql-community-server -y # 安装
复制代码
  • 客户端连接测试
  1. [root@server yum.repos.d]# echo $PATH # 查看连接
  2. /root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
  3. [root@server yum.repos.d]# ps -aux | grep mysql # 查看服务
  4. [root@server yum.repos.d]# systemctl start mysqld # 启动服务
  5. [root@server yum.repos.d]# ps -aux | grep mysql # 查看服务启动是否运行
  6. [root@server yum.repos.d]# systemctl status mysqld
  7. [root@server yum.repos.d]# grep pass /var/log/mysqld.log #初始化密码查看
  8. 2025-08-07T07:39:11.160155Z 6 [Note] [MY-010454] [Server] A temporary
  9. password is generated for root@localhost: c88iWhkfS&+z
  10. -----------------------------初始化密码加' '
  11. [root@server yum.repos.d]# mysql -uroot -p'c88iWhkfS&+z'
  12. mysql: [Warning] Using a password on the command line interface can be
  13. ··········
  14. mysql>
复制代码

  2)连接的语句

  1. [root@server ~]# mysql -uroot -p密码 -h要连接的主机
  2. [root@server ~]# mysql -uroot -p密码 -P连接的端口
  3. [root@server ~]# mysql -uroot -p密码 -D要连接的库
  4. [root@server ~]# mysql -uroot -p密码 -e 'show databases'要查的内容
复制代码

  3)密码更改操作

  1. mysql> show databases;
  2. ERROR 1820 (HY000): You must reset your password using ALTER USER statement
  3. before executing this statement. # 显示必须重置密码
  4. # 修改root账户的密码为Mysql@123
  5. mysql> alter user root@localhost identified by 'Mysql@123';
  6. mysql> exit # exit退出
  7. Bye
  8. [root@server yum.repos.d]# mysql -uroot -pMysql@123 # 重新登陆
  9. mysql> show databases; # 查看数据库
  10. +--------------------+
  11. | Database |
  12. +--------------------+
  13. | information_schema | # information_schema记录数据表相关的属性(索引等)
  14. | mysql | # mysql存储当前管理系统的核心信息
  15. | performance_schema | # performance_schema记录数据库性能相关的信息
  16. | sys | # sys默认记录数据的属性信息和性能信息等
  17. +--------------------+
  18. 4 rows in set (0.21 sec)
复制代码

三、MySQL库表操作

 1. SQL语句基础

  1)SQL语句四大类

  • DDL == 数据定义语言:create、drop、alter、show
  • DML == 数据操作语言:insert(插)、delete(删)、uptade(更新)、select(查)
  • DQL == 数据查询语言:select(查)
  • DCL = = 数据控制语言:create、user DT

  2)书写规范

  • 不区分大小写
  • 以“ ; ” 结尾
  • 注释
  1. # 单行注释
  2. mysql> -- show databases; # 注释
  3. mysql> # show databases;
  4. # 多行注释
  5. mysql> /*
  6. /*> show
  7. /*> databases
  8. /*> */;
  9. Query OK, 0 rows affected (0.00 sec)
复制代码

  3)建立库/表的命名约束

  • 64字符内
  • “ _ ” 连接
  • `` 引用关键字作为数据对象
  • ‘ ‘ 或 “ ”

 2. 数据库操作

  1. msql> \? # 调用命令帮助
  2. \d ==>设置结束字符
  3. use \u ==>使用数据库
  4. clear \c ==>情况当前命令行的语句
  5. exit\quit \q ==>退出
  6. mysql> system clear # 通过system调用当前操作系统的命令
复制代码

  1)数据库基本操作

  1. # 使用库------------------------------------------
  2. mysql> use 数据库名 # 切换/使用数据库
  3. mysql> select database(); # 查看当前进入的数据库
  4. mysql> use mysql # 切换/使用数据库
  5. # 创建库------------------------------------------
  6. mysql> create database 数据库名;
  7. mysql> create database if not exists 数据库名;
  8. # 删除库------------------------------------------
  9. mysql> drop database 数据库名;
  10. # 修改库------------------------------------------
  11. mysql> alter database 数据库名;
  12. # 查看库------------------------------------------
  13. mysql> show create databases; # 查看所有库
  14. mysql> show create database 数据库名; # 查看已建建库
  15. mysql> show databases; # 定义上的查看
  16. mysql> select * from 数据库名; # 操作上的查找
复制代码

 3. MySQL字符集

  1)字符集

  • ASCII及其扩展 
  • GB系列(中文编码)==> GBK、GB2312、GB18030

  2)Unicode与UTF编码

  • 字符集:unicode(统一码) UTF-8、UTF-16、UTF-32
  • 特性:全球通用无乱码问题

   3)字符特性CI CS

  1. mysql> show collation; # 显示字符序
  2. mysql> show variables like '%chara%'; # 查看字符序
复制代码
  • 修改字符集
  1. mysql> show create database db3;
  2. +----------+---------------------------------------------------------------------+
  3. | Database | Create Database |
  4. +----------+---------------------------------------------------------------------+
  5. | db3 | CREATE DATABASE `db3` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE|
  6. | | utf8mb3_estonian_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
  7. +----------+---------------------------------------------------------------------+
  8. 1 row in set (0.00 sec)
  9. # 修改字符集为latin1_general_cs
  10. mysql> alter database db3 character set latin1 collate latin1_general_cs;
  11. Query OK, 1 row affected (0.01 sec)
  12. mysql> show create database db3; # 查看修改成功
  13. +----------+--------------------------------------------------------------------+
  14. | Database | Create Database |
  15. +----------+--------------------------------------------------------------------+
  16. | db3 | CREATE DATABASE `db3` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE|
  17. | | latin1_general_cs */ /*!80016 DEFAULT ENCRYPTION='N'*/ |
  18. +----------+--------------------------------------------------------------------+
  19. 1 row in set (0.00 sec)
复制代码

 4. 数据表操作

  1)数据类型

  • 数值类型(unsigned) ==> int 4 42亿、float、double、decimal
  • 字符类型 ==> char( )、varchar( ) 最大255个字符、text、blob
  • boolean类型
  1. mysql> create table t3(判断 boolean);
  2. Query OK, 0 rows affected (0.01 sec)
  3. mysql> desc t3;
  4. +--------+------------+------+-----+---------+-------+
  5. | Field | Type | Null | Key | Default | Extra |
  6. +--------+------------+------+-----+---------+-------+
  7. | 判断 | tinyint(1) | YES | | NULL | |
  8. +--------+------------+------+-----+---------+-------+
  9. 1 row in set (0.00 sec)
  10. mysql> insert into t3 values(3);
  11. Query OK, 1 row affected (0.01 sec
复制代码
  • 日期时间类型
  1. mysql> insert into t2(time) values('2024-07-08 12:12:13');
  2. Query OK, 1 row affected (0.00 sec)
  3. mysql> insert into t2(time) values(20240708121213);
  4. Query OK, 1 row affected (0.00 sec)
复制代码

 5. 数据表的基本操作

  1. # 创建表--------------------------------------------
  2. creat table 表名(字段名1 数据类型,字段名2 数据类型,...);
  3. creat table 表名(字段名1 数据类型,字段名2 数据类型,...) character set 字符集 collate 字符集_ci;
  4. show tables; # 查看
  5. # 删除表--------------------------------------------
  6. drop table 表名;
  7. # 修改表--------------------------------------------
  8. alter table 表名 rename 新表名;
  9. rename table 表名 to 新表名;
  10. # 查看表--------------------------------------------
  11. show table 表名;
  12. show tables from 库名;
  13. show create table 表名; # 查看完整的建表语句
  14. ==============================列========================================
  15. # 添加列(字段)---------------------------------------------
  16. alter table 表名 add 字段名 数据类型 [after | first] 字段名;
  17. # 删除列----------------------------------------------------
  18. alter table 表名 drop 字段名;
  19. # 修改列(字段名、字段的数据类型)----------------------------
  20. alter table 表名 change 旧的字段名 新的字段名 数据类型;
  21. alter table 表名 modify 字段名 新的数据类型;
  22. 查看表字段(表结构)-----------------------------------------
  23. desc | explain | describe 表名;
  24. show columns from 表名;
复制代码

 6. 复制表(结构)

  1. # 表结构
  2. create table 新表名 like 旧表名; # 复制表结构
  3. # 表数据
  4. insert into 新表名 select * from 旧表名; # 复制表数据
  5. # 表结构和表数据
  6. create table 新表名 select * from 旧表名; # 复制表结构和表数据
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行