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~

相关推荐
睡不醒男孩03082311 分钟前
第七篇:揭秘 PostgreSQL 数据库内核级管控:CLup 深度架构设计与高可用底座技术白皮书
数据库·postgresql·clup
cmes_love1 小时前
Level 2逐笔成交历史数据下载方法笔记
数据库·笔记·oracle
swordbob1 小时前
MySQL字符集陷阱:从Oracle迁移踩坑到utf8mb4强制规范
数据库·sql
牛油果子哥q1 小时前
【C++ STL string 】C++ STL string 终极精讲:底层原理、内存机制、全套API、深浅拷贝、易错坑点与工程实战规范
数据库·c++
十五年专注C++开发1 小时前
MySql中各种功能用sql语句实现总结
数据库·sql·mysql
数据库小学妹2 小时前
AI时代数据库怎么选?多模融合、数据统一存储与选型实战指南
数据库·人工智能·经验分享·ai
Albert Edison2 小时前
【Redis】Centos7.9 安装 Redis 5 教程
数据库·redis·缓存
云计算磊哥@2 小时前
运维开发宝典026-MySQL02数据库表操作
运维·数据库·运维开发
小二·2 小时前
Redis 内存溢出(OOM)排查与恢复实战
数据库·redis·bootstrap
pqk6V6Vep2 小时前
Redis 分布式锁进阶第一篇讲解
数据库·redis·分布式