初识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~

相关推荐
名字还没想好☜7 小时前
Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式
开发语言·数据库·python·字符串格式化·f-string
ltl7 小时前
Serverless 数据库弹性理论:Neon 与 Aurora Serverless v2
数据库
Dxy12393102168 小时前
Python 如何使用 MySQL 的事务
python·mysql
marvelyu11 小时前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库
ZCBUS实时计算12 小时前
金融证券实时数仓建设实践:轻量化实时计算平台落地,实现交易数据端到端秒级处理
大数据·数据库·数据仓库·金融·flink·dba·etl
zd20057212 小时前
海洋微生物数据库
数据库·宏基因组
海上小飞龙12 小时前
Redis 分布式锁原理:从 SET NX EX 到 Redisson 看门狗
数据库·redis·分布式
xiaoye-duck13 小时前
MySQL 表约束全解:从基础约束到外键关联规则
数据库·mysql
Hammer_Hans13 小时前
DFT笔记98
java·开发语言·数据库
迪康Defender14 小时前
从静态存储到动态流转:终端透明加密两种模式实战解析
运维·服务器·网络·数据库·其他