mysql学习
踏歌行 2023-01-29
工具
# 基本使用
# 安装
安装后得到多个工具:
- MySQL Shell:MySQL的代码编辑器,实现与Python, javascript 的交互
- MySQL command line clint: 最基本的Mysql操作窗口。
- MySQL command line client unicode: 支持中文
- MySQL workbench: 页面快捷操作窗口
# 新建数据库
- MySQL Command Line Client - Unicode,输入密码(即root)
- 以管理员身份运行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
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
2
3
4
5
列:
- 添加列:mysql> alter table 表名 add 列名 类型;
- 修改数据表的结构,其中包括重命名列: ALTER TABLE 表名 CHANGE COLUMN old_列名 new_列名 data_type [OPTIONS];
- 修改列的属性:mysql> alter table 表名 modify 列名 类型;
- 修改枚举类型 alter table
users
modifystatus
enum('active', 'inactive', 'disabled', 'banned');
- 修改枚举类型 alter table
- 修改列的默认值: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
# docker中的操作
进入docker容器后:docker exec -it mysqlXXX bash
输入mysql -u root -p
再输入密码,即可输入mysql的命令
show variables like '%timeout%';