操作库
- 创建删除
sql
create database [if not exists] db_name; #创建
drop database [if exists]db_name; #删除
#if not exists 可选项:存在就不创建,不存在就创建
创建数据库的时候,有两个编码集:
- 数据库编码集 -- 存储
- 数据库校验集 -- 支持数据库,进行字段比较使用的编码,本质也是一种读取数据库中的数据的采用的编码格式
查看编码集和校验集
sql
show variables like 'character_set_darabase'; #查看编码集
show variables like 'collation_database'; #查看校验集
show variables like 'collation_%'; #查看所有检验集
show charset; #查看数据库全部支持的编码方式
show collation; #查看数据库的校验集
创建数据库时指定编码和校验集
sql
create database d2 charset=utf8; #创建数据库时指定编码集
create database d3 chatset=utf8 collate utf8_general_ci; #指定编码和校验集
没有设置就使用配置文件里面的编码格式
utf8_general_ci不区分大小写,utf_bin区分大小写
system clear 在MySQL可以清屏
校验集会影响表的查找
- 查找
sql
show databases; #查看数据库
use d1; #进入到数据库
show tables #查看表
select database(); #查看当前在哪个数据库
- 修改
sql
alter database test2 charset=gbk collate gbk_chinese_ci; #修改编码集和校验集
show create database test2; #查看创建test2时的指令
mysql> show create database mytest;
+----------+----------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------+
| mysql | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+
#/*!40100 default.... */这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话
库的备份和恢复
语法
powershell
mysqldump -P3306 -uroot -p -B test1 > test1.sql #备份
mysqldump -uroot -p -B 数据库名 表名1 表2 > 路径; #备份多个表
mysqldump -uroot -p -B 数据库1 数据库2 > 路径; #备份多个数据库
sql
source 文件路径; #还原
- 如果没有使用-B,在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原
sql
show processlist; #查看其他用户的操作
表的操作
- 创建表
sql
create table table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;
案例:
sql
create table users(
id int,
name varchar(20) comment '用户名', #comment是注释
password char(32) comment '密码',
birthday date comment '生日'
) character set utf8 engine MyISAM;
#charset=utf8 collate=utf8_general_ci engine=InnoDB; #与上面写法一样引擎有所差异
- 查看表
sql
show tables; #查看表
desc table_name; #查看表的结构
show create table user1 \G #显示创建user1表时的详细信息,不需要;

- 修改表
sql
alter table 旧表名 rename to 新表名; #修改表名,to可以省略
insert into 表名 values (1,'张三','12345','2022-3-5'); #插入数据
select * from 表名; #显示表的内容
alter table 表名 add image_path varchar(128) comment '这是用户的头像路径' after birthday;
#在birthday列之后新增image_path列
alter table 表名 modify name varchar(60); #修改name的varchar大小,没有改comment,之前的comment会被覆盖
alter table 表名 drop 列名; #删除一列的数据
alter table 表名 change name 新名称 varchar(60) DEFAULT NULL; #修改列的名字
- 删除表
sql
drop table 表名; #删除表,表的数据也会没
不要轻易删除和修改数据库和表。