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~

相关推荐
X566127 分钟前
如何在 Laravel 中正确保存嵌套动态表单数据(主服务与子服务)
jvm·数据库·python
虹科网络安全2 小时前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
2301_771717212 小时前
解决mysql报错:1406, Data too long for column
android·数据库·mysql
绘梨衣5472 小时前
Docker+FastAPI+MySQL 项目部署报错汇总
mysql·docker·fastapi
小江的记录本2 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
dvjr cloi2 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
dFObBIMmai3 小时前
MySQL主从同步中大事务导致的延迟_如何拆分大事务优化同步
jvm·数据库·python
szccyw03 小时前
mysql如何限制特定存储过程执行权限_MySQL存储过程安全访问
jvm·数据库·python
czlczl200209253 小时前
利用“延迟关联”优化 MySQL 巨量数据的深分页查询
数据库·mysql
ACP广源盛139246256734 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑