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 database 和 use,也可以直接:

    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~

相关推荐
小白男神4 天前
MySQL进阶学习四(存储过程、游标、触发器)
mysql
这个DBA有点耶4 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G4 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备4 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远4 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
kybs19914 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
2601_962218614 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
程序猿_极客4 天前
【免费】分享一套优质的基于SSM的校园失物招领系统的设计与实现,源码+文档+视频详解(讲解)
java·mysql·ssm·课程设计·失物招领系统
张洛闻Eren4 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安4 天前
MySQL-触发器
数据库·mysql