初识MySQL,数据库相关概念,库操作,表操作

文章目录

MySQL基础

什么是MySQL?

  • mysqld是数据库的服务端

  • mysql是数据库的客户端

  • mysql是一种基于CS模式,提供了一套数据存储服务的网络服务

  • 而数据库是在磁盘或内存中存储的特定数据结构的方法

MySQL是世界上最受欢迎的免费开源的项目,上手比较简单

为啥要数据库?

文件保存数据存在缺点:

  • 安全性
  • 不利于数据查询和管理--比如我想查询某个字段,很困难
  • 不利于存储海量数据

数据库是为了高效解决数据存储和查询的设计

服务器、数据库、表关系三者

MySQL的架构

详细架构图如下:

注:上图源自网络

初学阶段先理解三层架构:

MySQL是一种网络服务,那么就可以把它当成一家餐厅:

  • 第一层:连接层(前台)

    • 监听新连接,账号密码校验,管理连接
  • 第二层:服务层(后台)

    • 负责所有逻辑处理 ,不碰真实的数据:
      • 语法检查:保证每条命令的改动都是安全且正确
      • 查询优化:帮助用户选择最高效的方式
      • 权限判断:判断当前操作你是否有权限,无权限直接拦截

    服务层主要负责SQL解析,优化

  • 第三层:存储引擎

    • 真正存数据、读数据 的地方
      • InnoDB引擎:支持事务、锁、崩溃恢复
      • MyISAM引擎:不支持事务

    服务层发指令,引擎层去硬盘/内存存取数据

SQL语句分类

DDL:data definition language 数据定义,维护存储数据的结构

DML:data manipulation language 数据操作,对表中数据操作

DCL:data control language 数据控制,权限和事务的管理

库的基本操作

C 新增/创建一个数据库

sql 复制代码
create database db_name [各种选项]

在Linux中创建一个目录

这里选项着重介绍一下数据库的两个编码集:

  • 数据库编码集:数据库未来存储数据的编码格式
  • 数据库校验集:数据库读取时采用的编码格式

要保证操作时用的同一个编码格式

sql 复制代码
# 查看当前的默认字符集和校验集
show variables like 'character_set_database';
show variables like 'collation_database';

R 查看数据库

sql 复制代码
show databases;		# 显示所有数据库
show create database db_name;	# 显示创建数据库时的语句
use db_name;	# 使用这个数据库
select database();	# 查看当前在哪个数据库

U 修改数据库

sql 复制代码
alter database db_name [选项]
# 例如修改校验集和字符集
alter database test_db charset=gbk collate=gbk_chinese_ci;

D 删除数据库

sql 复制代码
drop database db_name;

删除之后整个目录里的所有文件全没了,不要随意删库

备份和恢复数据库

备份:

sql 复制代码
mysqldump -P3306 -u root -p 密码 -B 数据库名1 数据库名2... > 新的路径

直接把所有有效操作的命令备份了!

只备份一个库里的几个表:

sql 复制代码
mysqldump -P3306 -u root -p 密码 -B 数据库名 表一 表二... > 新的路径

还原:

sql 复制代码
source 备份的文件.sql

如果在备份时,没有-B的选项,恢复数据库时,要先创建空的数据库,然后使用这个数据库,再使用source还原

表操作

C 创建表

sql 复制代码
create table table_name(
	列名 列属性,
    列名 列属性,
	列名 列属性
) [character set 字符集 collate 校验集 engine 存储引擎];

R 查看表

sql 复制代码
show tables;	#查看所有表

desc table_name;	#查看详细信息

show create table table_name\G;	#查看创建时的详细信息

U 修改表

sql 复制代码
# 新增一列
alter table table_name add 列名 列属性;

# 修改一列的属性
alter table table_name modify 列名 新数据类型;

# 删除这一列
alter table table_name drop 列名;

# 修改表名称
alter table table_name rename to  新的表名;

# 修改列名称
alter table_name change 旧列明 新列名 属性;

# 指定字段插入
insert into 表名字(字段1,字段2...)  values(值1,值2...);

# 全列插入,没有省略字段
insert into 表名字 values(值1,值2...);

D 删除表

sql 复制代码
drop table table_name;

done~

相关推荐
南城以南溫暖如初147几秒前
AI 智能商城 APP 定制开发的核心需求
java·人工智能·spring boot·mysql·mybatis·需求分析
专注仿真8 分钟前
TRAE Work 的实战
数据库·人工智能·分析
ACP广源盛1392462567322 分钟前
端侧 AI 硬件架构实践@ACP#中端边缘整机 PCIe 扩展与 IX7012 器件分析
大数据·数据库·人工智能·嵌入式硬件·开源·硬件架构
ACP广源盛1392462567323 分钟前
端侧 AI 硬件架构探讨@ACP#多外设高密度整机 PCIe 扩展与 IX7024 器件分析
大数据·数据库·人工智能·嵌入式硬件·开源·硬件架构
数智启示录36 分钟前
Doris精讲篇(六) 从第一批小文件到 -235:Doris 是怎样被正常写入拖死的
大数据·数据库·经验分享·面试·flink
智购科技自动售货机工厂40 分钟前
2026自动售货机异常重启根因分析:从日志挖掘到内存取证的技术实践~YH
开发语言·数据库·单片机·嵌入式硬件·人机交互
奈斯先生Vector1 小时前
从“能调用”到“可运营”:AI Agent 进入多模型时代后的架构升级
java·javascript·数据库·人工智能·算法·架构·aigc
whcyhhh1 小时前
头歌实践教学平台:大数据存储2023(十四下答案)
大数据·数据库·python
Json____1 小时前
宿舍安全卫生检查系统:Node 全栈开发实战
java·前端·数据库·毕业设计·课程设计·毕设·wwwoop.com
2601_962071571 小时前
基于DataX迁移MySQL到OceanBase集群
数据库·mysql·oceanbase