🌈MySql基础
🩺基本命令
连接数据库
mysql -h [数据库的服务器IP地址] -u root -p
创建数据库
create database [数据库名];
create database if not exists [数据库名]; # 健壮的创建数据库
查看数据库
show databases;
打开自己的数据库
use [数据库名];
删除数据库
drop database [数据库名];
🕵️♀️查数据库
查找数据库使用的字符集
show variables like 'character%';
查看当前所支持的字符集
show character set;
mysql defanlt character set [字符集]; # 字符集的设置
查看存储引擎
show engines;
查看当前库中多少个表
show tables;
查看当前库中多少个表带上表的类型
show full tables;
📑创建表
创建表
create table [表名] (id int [not null] primary key);
# 列名 数据类型 是否可为空 是否主键
创建带有自增约束定义
:create table [表名] (id int [not null] auto_increment);
# 列名 数据类型 是否可为空 约束定义
查看表项目
desc [表名];
# 或者
describe [表名];
保存表结构
show create table [表名];
查询表的所有数据
select * from [表名];
✍️改表
删除表
drop table [表名];
清空表数据
truncate table [表名];
删除列
alter table [表名] drop [列名];
复制表(只用来复制表结构)
create table 新表名 like 被复制的表名;
复制表(用来复制表内容)
create table [新表名] as [被复制的表名];
修改表名
alter table [旧表名] rename [新表名];
# 或者
alter table [旧表名] to [新表名];
添加表结构
alter table [表名] add (id int [not null]) [参数];
# 列名 数据类型 是否可为空
first (第一行)
after [列名] (在某一列的后面加入)
更改表结构
alter table [表名] modify [列名] [要修改的属性];
更改列顺序
alter table [表名] modify [列名] after [列名];
删除表结构
alter table [表名] drop [列名1],[列名2];
修改列名
alter table [表名] change [老列名] [新列名] char(10);
添加字段
alter table [表名] add [行名];
# 第一行:first
删除字段
alter table [表名] drop [行名];
修改字段顺序
alter table [表名] modify [行1] after [行2];
添加主键
alter table [表名] add primary key [列名];
删除主键
alter table [表名] drop primary key [列名];
插入数据
insert into [表名] ([列名]1,[列名2],[列名3]) values ([列名1的值],[列名2的值],[列名3的值]);
# 或者
insert into [表名] values ([列名1的值],[列名2的值],[可为空的值null],···,[最后一列的值]);
插入多行数据
insert table [表名] values ([列名1的值],[列名2的值],[可为空的值null],···,[最后一列的值]),
(列名1的值,列名2的值,可为空的值null,···,最后一列的值), (列名1的值,列名2的值,可为空的值null,···,最后一列的值);
# 有重复数据就强制插入并更新原来的数据:insert改为replace
修改所有数据
update [表名] set [列名1]=[值];
修改指定数据
update [表名] set [列名1]=[值] where [列名]=[值];
清空表
truncate table [表名];
删除所有数据
delete from [表名];
删除指定数据
delete from [表名] where [内容];
🍳查询表
查看表中指定数据
select [要展示数据的列名] from [表名];
查结果不重复
select distinct [要展示数据的列名] from [表名];
空值查询
select [要展示数据的列名] from [表名] where [列名] is null;
限定值查询
select [要展示数据的列名] from [表名] where [要筛选数据的列名]><=[数值] group by [要展示数据列名其一];
先定条件基础上限定数值
select [要展示数据的列名] from [表名] having [要筛选数据的列名]><=[数值];
非空值查询
select [要展示数据的列名] from [表名] where [要筛选数据的列名] is [not null];
查询含有字段的数据
select [要展示数据的列名] from [表名] where [要筛选数据的列名] '[字%]';
查询限定行数
select * from [表名] limit [起始行-1],[从起始行起要展示的行数];
# 或者
select * from [表名] limit [显示前几行数];
# 或者
select * from [表名] limit [要显示的行数] offset [从第几行后面开始输出];
查询根据要求列名排序的表(默认升序)
select [要展示数据的列名] from [表名] order by [要筛选数据的列名];
查询根据要求列名排序的表(升序)
select [要展示数据的列名] from [表名] order by [要筛选数据的列名] asc;
查询根据要求列名排序的表(降序)
select [要展示数据的列名] from [表名] order by [要筛选数据的列名] desc;
查询根据要求多列名排序的表(默认升序,先列名1排再列名2排)
select [要展示数据的列名] from [表名] order by [列名1],[列名2];
查询根据要求列名排序限定行数的表(默认升序)
select [要展示数据的列名] from [表名] order by [要筛选数据的列名] limit [行数];
限定数值的查询
select [要展示数据的列名] from [表名] where [要筛选数据的列名] in ([值1],[数值2]);
# 或者
select 要展示数据的列名 from 表名 where 列名=数值1 or 列名=数值2;
模糊查询
select [要展示数据的列名] from [表名] where [要筛选数据的列名] like '[参数]';
# _ 代表任意一个字符
# % 任意一个字符串不限字符个数
改变列名的查询
select [要展示数据的列名] as(可省略) [显示时候的列名] from [表名];
带有计算函数的查询
select [列名1],[列名2],[对于列名2的计算函数][列名2] as(可省略) [显示时候的列名] from [表名];
分组查询(可查询数量)
select [要展示数据的列名] from [表名] group by [分组的列名];
🍳聚合查询
聚合和统计查询
select [要聚合的条件],count(*) from xs group by [要聚合的条件];
# count函数:select count(想显示数据的数量) from 表名;
# max函数:select max(要展示数据的列名) from 表名 where 要聚合的项目;
# min函数:select max(要展示数据的列名) from 表名 where 要聚合的项目;
# sum函数:select sum(要展示数据的列名) from 表名 where 要加和的项目;
# avg函数:select sum(要展示数据的列名) from 表名 where 要求平均数的项目;
过滤查询(分组筛选):
在group by 后面加上筛选条件,例如: having 性别=0;
嵌套子查询
select [列名2] from [表名2] where [列名1] [这里用=或者是in来连接] (select [列名1] where [表名1] where [要筛选数据的列名]);
# 不在的话就直接not in
嵌套子句为一个表
select [列名1],[列名2] from (select [列名1],[列名2],[列名N] where [表名1] where [要筛选数据的列名]) as [虚拟表名] where [要筛选数据的列名];
新建索引
create index [索引名] on [表名]([列名1],[列名2]);
删除索引
drop index [索引名] on [表名];
查看表索引
show index [参数] from [表名]\G;
# 健壮建视图 or replace
创建视图 表与视图两者会互相影响
create view [表名] as [查表······] group by [主键列名];
插入数据
insert into [视图名] ([列名1],[列名2],[列名3]) values ([列名1的值],[列名2的值],[列名3的值]);
更改数据(一次只能改一条数据)
update [视图名] set [列名=列名函数式] where [数据的位置];
删除数据
delete from [视图名] where [主键值];
删除视图
drop view [视图名];
🛢️管理数据库:
创建数据库用户
create user '[用户名]'@'[主机名一般是localhost]' identified by '[用户密码]';
查看数据库的用户
use mysql; select * from user;
修改用户名
rename user '[老用户名]'@'[主机名]' to '[新用户名]'@'[主机名]';
修改密码
alter user '[用户名]'@'[用户类型]' identified with mysql_native_password by '[新密码]';
删除数据库用户
drop user '[用户名]'@'[主机名]';
查看权限
show grants for '[用户名]'@'[主机名]';
给用户权限
grant all on [库名].[表名] to '[用户名]'@'[主机名]';
撤用户权限
revoke all on [库名].[表名] from '[用户名]'@'[主机名]';
📊数据库数据备份与恢复
备份库
mysqldump -u [用户名] -p [数据库名] > [保存位置\文件名.sql]
备份表
mysqldump -u [用户名] -p [数据库名] [表1] [表2] > [保存位置\文件名.sql]
全部备份
mysqldump -u [用户名] -p --all -database > [保存位置\文件名.sql]
恢复
mysql -u [用户名] -p [数据库名] < [保存位置\文件名.sql]
二级制日志恢复
mysqlbinlog [备份文件] | mysql -u [用户名] -p
📣特别声明
原文地址:MySql基础 - 开摆工作室博客 (kbai.cc)
此文章全部都是依靠自己的学习理解来写的原创文章,难免可能会出现有错误的地方,
如果大家以后阅读的时候发现有问题,那就麻烦到下方评论区来进行错误指出,使错误尽快做出改正,
在此,感谢大家的阅读与支持!🤝💦🎉
🍻支持一下
觉得我写的好的话可以支持一下我哦~持续关注我,会更新其他好玩且实用的项目。
👋如果我能帮助到你,那就请我喝杯🧋呗~👇👇👇
我的博客链接:blog.kbai.cc