踏歌行

vuePress-theme-reco 踏歌行    2022 - 2025
踏歌行 踏歌行

Choose mode

  • dark
  • auto
  • light
环境和工具
    • Git
    • npm 和 yarn
    • windows快捷键
    • 正则
前端
    • 浏览器学习记录
    • React学习
    • Javascript 进阶语法
    • React工具
    • CSS学习
    • ThreeJS学习
    • 页面卡顿
人工智能
    • ComfyUI学习
    • Python基础
    • PyTorch版深度学习
后端
  • 博客评论功能
  • 文件处理
数据库
  • mysql学习
  • Redis学习
  • Prisma学习
部署
  • Docker基础
  • Dockerfile和docker compose
  • Docker实例
  • Docker网络连接
  • CDN学习
  • Jenkins学习
测试
  • Cucumber学习
  • Jest学习
网络
  • CDN学习
  • HTTP学习
Linux
  • 虚拟机与Linux安装
  • 文本编辑
  • Linux命令
  • Linux安全
  • Windows中CMD和SHELl
其它
  • 我的书单
  • Blender学习
  • 计划
时间轴
author-avatar

踏歌行

36

文章

23

标签

环境和工具
    • Git
    • npm 和 yarn
    • windows快捷键
    • 正则
前端
    • 浏览器学习记录
    • React学习
    • Javascript 进阶语法
    • React工具
    • CSS学习
    • ThreeJS学习
    • 页面卡顿
人工智能
    • ComfyUI学习
    • Python基础
    • PyTorch版深度学习
后端
  • 博客评论功能
  • 文件处理
数据库
  • mysql学习
  • Redis学习
  • Prisma学习
部署
  • Docker基础
  • Dockerfile和docker compose
  • Docker实例
  • Docker网络连接
  • CDN学习
  • Jenkins学习
测试
  • Cucumber学习
  • Jest学习
网络
  • CDN学习
  • HTTP学习
Linux
  • 虚拟机与Linux安装
  • 文本编辑
  • Linux命令
  • Linux安全
  • Windows中CMD和SHELl
其它
  • 我的书单
  • Blender学习
  • 计划
时间轴
  • 数据库

    • Prisma学习
      • 介绍
      • 基本命令
    • Redis学习
      • 基础
      • docker中使用
      • 工具
    • mysql学习
      • 基本使用
      • 备份和恢复
      • docker中的操作
      • 用户权限

mysql学习

vuePress-theme-reco 踏歌行    2022 - 2025

mysql学习


踏歌行 2023-01-29 工具

阅读量:

官网文档 (opens new window)

# 基本使用

# 安装

  • Windows引导安装 (opens new window)
  • 解压手动安装 (opens new window)

安装后得到多个工具:

  • MySQL Shell:MySQL的代码编辑器,实现与Python, javascript 的交互
  • MySQL command line clint: 最基本的Mysql操作窗口。
  • MySQL command line client unicode: 支持中文
  • MySQL workbench: 页面快捷操作窗口

# 新建数据库

  1. MySQL Command Line Client - Unicode,输入密码(即root)
  2. 以管理员身份运行cmd,
  • net start MySQL57
  • 将 C:\Program Files\MySQL\MySQL Server 5.7\bin 添加到环境变量的Path
  • cd C:\Program Files\MySQL\MySQL Server 5.7\bin
  • C:\Program Files\MySQL\MySQL Server 5.7\bin>mysql -u root -p
  • mysql>create database XXX;
  • mysql> show databases;
  • 退出mysql mysql> exit
  • 删除数据库 mysql> drop database XXX;

# 修改密码

C:\Program Files\MySQL\MySQL Server 5.7\bin>mysqladmin -u root -p password "新密码"
Enter password:输入老密码
1
2

# 基本操作

数据库:

  • 显示数据库名称:mysql> show databases;
  • 指定数据库:mysql> use database名称;


表:

  • 显示表的名称:mysql> show tables;
  • 显示表的创建过程: mysql> show create table 表名;
  • 显示表的数据结构信息:mysql> desc 表名;
  • 删除一个表:mysql>drop table 表名;
  • 只删除一个表的所有数据:truncate table 表名;
  • 修改表的名称:mysql>rename table 旧表名 to 新表名;
  • 新建表:mysql>
create table tb_tmp01
(
id INT(11),
name VARCHAR(25)
);
1
2
3
4
5


列:

  • 添加列:mysql> alter table 表名 add 列名 类型;
  • 修改数据表的结构,其中包括重命名列: ALTER TABLE 表名 CHANGE COLUMN old_列名 new_列名 data_type [OPTIONS];
  • 修改列的属性:mysql> alter table 表名 modify 列名 类型;
    • 修改枚举类型 alter table users modify status enum('active', 'inactive', 'disabled', 'banned');
  • 修改列的默认值:mysql> alter table 表名 alter 列名 set default 默认值;
  • 删除列: mysql> alter table xxx drop xxx;


行:

  • 显示表的数据:mysql> select * from 表名;
  • 删除表的一行:mysql> delete from 表名 where 条件;
  • 修改值:mysql> update 表名 set 列名=值 where 条件;
    • 修改值,与同一个表的其他列有逻辑关系: update 表名 table1 set table1.column1=table1.column2;
  • 添加一行: insert into 表名(列名1, 列名3) values (xxx, xxx);
    • 添加带有json格式的一行:insert into 表名(列名1, 列名3) values (JSON_OBJECT("属性1", "xx", "属性2", "xxx"), xxx);

# 主键PK,外键FK

主键(Primary key):作用是确定一条记录使用的标识符:

  • 没有重复的值
  • 不允许NULL

外键(Foreign key): 是一个表中的列,它是另一个表中的主键。被约束

- 被约束的表叫做从表(子表),以一个主表的主键(primary key)值为外键 (Foreign Key)的表
- 另一张叫做主表(父表)
  • 当主表中的某条记录被删除时,如果子表有记录关联到该主表记录,此时无法删除主表中的这条记录,会报错

  • 添加约束:alter table image_map add constraint 约束名XX FOREIGN KEY (外键列XX) REFERENCES 主键表XX (主键列XX);

# 编码类型

windows上解决不支持中文问题 (opens new window)

  • SHOW VARIABLES LIKE 'char%'; 如果character_set_database 和 character_set_server 的字符集使用了 latin1 编码方式,存储中文时会报错
  • 修改列的字符编码类型: alter table XXX change XX列名 XX列名 varchar(20) character set utf8mb4_unicode_ci;
  • 查看所有字段的编码格式:show full columns from tableName;
  • 查看表的编码格式:show create table tableName;
  • 修改数据库的编码格式:alter database databasename character set utf8
  • 修改表的编码格式: alter table tablename character set utf8
  • 修改字段的编码格式: alter table tablename modify fieldname varchar(50) character set utf8

# 备份和恢复

# 从备份恢复数据库

  • C:\Program Files\MySQL\MySQL Server 5.7\bin> mysql -u root -p 数据库名称 < C:\Users\...\备份源文件.sql
  • 或者 mysql> source /xxx/xxx/xxx.sql

# docker中的操作

进入docker容器后:docker exec -it mysqlXXX bash 输入mysql -u root -p 再输入密码,即可输入mysql的命令

  • show variables like '%timeout%';

# 用户权限

  • 查看用户SELECT User, Host FROM mysql.user;
  • 新建用户 CREATE USER 'xxx'@'localhost' IDENTIFIED BY '密码'; CREATE USER 'xx'@'%' IDENTIFIED BY '密码';
  • 删除用户 drop user 'backend'@'localhost';
  • 授予权限GRANT ALL PRIVILEGES ON 数据库名称.* TO '用户名'@'localhost'; GRANT select, insert, update ON 数据库名称.* TO '用户名'@'%';
  • 刷新FLUSH PRIVILEGES;