MySQL基本认知、库和表的操作

认识数据库

什么是数据库?

从整体思路来看:

  • 数据库系统: 整个数据存储和管理的体系
  • 数据库服务器: 运行MySQL服务的机器
  • 数据库: 可以类比成Linux文件系统下的目录,数据库服务器中有多个数据库
  • 表: 可以类比成Linux文件系统下的文件,数据库中有多个表
  • 记录/字段:
    • 记录:表中的一行
    • 字段:表中的一列

数据库是逻辑上的数据集合

什么是SQL?

结构化查询语言,分为:

  • DDL:数据定义语言,定义数据库对象结构
  • DML:数据操作语言,对数据增删改
  • DQL:数据查询语言,查数据
  • DCL:数据控制语言,权限控制和权限控制

MySQL的架构

注:图源网络:一文搞懂MySQL体系架构!! - 冰河团队 - 博客园

库的操作

数据库的CRUD

C 创建数据库

mysql 复制代码
 create database db_name charset=编码规则 collate=校验规则;

R 查看数据库

查看所有数据库:

sql 复制代码
show databases;

查看数据库创建语句(可以看到字符集和校验集)

sql 复制代码
show create database db_name \G;		# \G是更清晰的显示

查看数据库支持的字符集和校验集:

sql 复制代码
show charset;
show collation;

查看当前数据库:

sql 复制代码
select database();

注意:

  • 字符集决定字符怎么存储,用什么格式存储
  • 校验集决定字符怎么比较,怎么排序
  • 必须统一字符集和校验集的统一性

U 修改数据库

数据库本身的更新通常是修改字符集、校验集等属性:

sql 复制代码
alter database db_name character set 新的字符集; # alter database db_name charset=新的字符集;
alter database db_name collate 新的校验集; 

D 删除数据库

sql 复制代码
drop database db_name;

执行删除之后:

  • 删除整个数据库及内部所有表数据,相当于rm -rf dir

这是个高危操作,一般不建议

切换数据库

每次使用指定数据库前都需要:

sql 复制代码
use db_name;

表示后续操作都在db_name下进行

数据库的备份和恢复

数据库备份的是数据和有效操作语言

sql 复制代码
mysqldump -u 用户名 -p old_name > new_dir/file.sql
  • -u 用户名:用户名
  • -p:输入密码
  • old_name:要备份的数据库
  • new_dir/file.sql.:备份到什么路径下的什么文件

备份多个数据库:

sql 复制代码
mysqldump -u root -p --databases db_name1 db_name2 > multi.sql

备份所有数据库:

sql 复制代码
mysqldump -u root -p --all-databases > all.sql

只备份某张表:

sql 复制代码
mysqldump -u root -p db_name table_name1 table_name2 > students.sql

恢复数据库:

  • 如果已经有库了,这样恢复:

    -p 复制代码
    mysql -u root new_db < copy.sql
  • 如果到处的文件里包含,create databaseuse,也可以直接:

    sql 复制代码
    mysql -u root -p < copy.sql

表的操作

表的CRUD

C 创建表

sql 复制代码
create table 表名(
	字段名 数据类型 [约束],
    字段名 数据类型 [约束],
    ...
) charset=字符集 collate=校验集 engine=存储引擎;

字段名表示列名

创建一张新表,同时观察新的变化

R 查看表

查看所有表:

sql 复制代码
show tables;

查看表结构:

sql 复制代码
desc table_name;

查看完整建表语句:

sql 复制代码
show create table table_name;

U 修改表结构

添加字段:

sql 复制代码
alter table table_name add column 字段名 数据类型;

修改字段类型:

sql 复制代码
alter table table_name modify column 字段名 新数据类型;

修改字段名:

sql 复制代码
alter table table_name change column 旧字段名 新字段名 数据类型;

删除字段:

sql 复制代码
alter table table_name drop column 字段名;

重命名表:

sql 复制代码
rename table old_table_name to new_table_name

注意:修改操作一次只能改一个,不能同时改多个

D 删除表

sql 复制代码
drop table table_name;

done~

相关推荐
AAA代码批发商14 分钟前
Days 39 Linux C 开发之 SQLite 数据库完整学习笔记
linux·c语言·数据库
笑梦无境15 分钟前
mysql的安装及配置(3)
数据库·mysql·adb
电商API_1800790524715 分钟前
跨境1688代采商家,如何借助API打通供应链,实现效率跃迁
大数据·数据库·网络爬虫
小雪崩16 分钟前
嵌入式学习 day40:数据库
数据库·学习
Aloudata34 分钟前
语义层 vs MCP 工具层:Agent 调用数据时,语义应该放在哪一层
数据库·数据分析·chatbi·data agent·语义层
zcmodeltech34 分钟前
源网荷储一体化沙盘模型多场景控制系统设计——基于STM32与Modbus RTU的源网荷储、多能互补、冷热电三联供全场景联动方案,服务范围覆盖全国
数据库·人工智能·stm32·单片机·嵌入式硬件
数智启示录38 分钟前
PostgreSQL 执行计划实战(第 9 篇):SQL 和索引没变,计划为什么突然慢一百倍
数据库·经验分享·sql·postgresql·面试
Gent_倪1 小时前
MySQL分库、分表、分区详解
数据库·mysql
Wang's Blog1 小时前
Vibe Coding一人即团队系列54:云服务器 Node.js 与 MySQL 9 环境搭建及配置指南
服务器·人工智能·mysql·node.js
额额额对了1 小时前
Linux 数据库开发实战:使用 C 语言与 SQLite3 构建轻量级终端词典
linux·数据库·oracle