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~

相关推荐
Flynt1 小时前
Room 3.0 包名重构 + KMP 迁移:我把项目升级踩了个遍
android·数据库·kotlin
这个DBA有点耶17 小时前
NULL不是空——数据库里最反直觉的设计,90%新人踩过的坑
数据库·mysql·代码规范
这个DBA有点耶19 小时前
AI写的SQL跑崩了生产库,这锅谁背?
数据库·人工智能·程序员
镜舟科技20 小时前
Databricks 再提 LTAP,AI 时代的数据底座为何重回大一统叙事?
数据库·架构·agent
Databend21 小时前
从湖仓升级为 Agent 时代的数据控制面,Snowflake 和 Databricks 有哪些布局
大数据·数据库·agent
ClouGence1 天前
SQL Server CDC 能放到 Always On 备库读吗?一文讲透原理与实践
数据库·sql server
先吃饱再说2 天前
存储的进化:从 MySQL 到浏览器缓存,数据到底住在哪?
数据库
Nturmoils2 天前
字段太多看不全,ksql 的展开模式和输出控制怎么用
数据库·后端
Databend2 天前
Agent 轨迹分析与归因的数据工程实践
大数据·数据库·agent
这个DBA有点耶2 天前
SQL改写进阶:标量子查询的“隐形代价”与消除实战
数据库·mysql·架构