Linux系统------------Mysql数据库命令大全

本文详细阐述了MySQL服务器如何处理客户端请求,包括其工作原理、查询执行流程,以及常用的数据库操作命令,涵盖了数据定义语言DDL、数据操纵语言DML和数据查询语言DQL。此外,还介绍了三种数据删除方式和事务管理的相关概念。
摘要由CSDN通过智能技术生成

目录

mysql服务器处理客户端请求

Mysql数据库常用命令

三种删除方式:


mysql服务器处理客户端请求

首先MySQL是典型的c/s架构,即client/Server架构,不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本<SQL语句>,服务器进程处理后再向客户端进程发送一段文本<处理结果>

客户端可以向服务器发送增删改查各类请求,我们这里以比较复杂的查询请求为例来画个图展示一下大致的过程:

从上图中可以看到不同的存储引擎用的都是同一个server层

一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎
跨引擎相关的功能都在server层实现,不同的存储引擎共用一个server层 --> 存储引擎是可插拔式的server层
server层包含 连接器、查询缓存、分析器、优化器、执行器

server层覆盖了mysql的大多数核心服务功能,以及所有的内置函数<如日期、时间、数字和加密等函数>,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等

 MySQL 整个查询执行过程,即MySQL的工作原理?
1、MySQL服务器接收到来自客户端的数据请求;

2、数据库会先查询缓存记录,如果命中缓存,直接返回存储在缓存中的查询结果,如果没有命中,则进行下一步操作;

3、数据库会先由解析器来解析SQL语句的,然后进行预处理,接着用优化器生成最优的执行计划;

4、数据库根据最优的执行计划,调用存储引擎的API接口来执行查询结果,并将结果返回给客户端,同时缓存查询结果;

Mysql数据库常用命令

命令行含义备注
show databases;查看数据库
show tables in 库名;查看数据表
show tables;查看数据表
describe 表名;   查看数据表结构
desc   表名;   查看数据表结构
create database 库名;创建数据库

DDL数据定义语言

 管理数据库对象

create table 表名(字段);创建数据表
drop database 库名;删除数据库
drop table 表名;删除数据表
insert into 表名(字段) values (字段);插入数据

DML数据操纵语言

  管理表数据

insert into 表名 values(字段);插入数据
update 表名 set 字段=指定要修改的内容修改数据为指定值
update 表名 set 字段=指定要修改的内容 where 字段=指定字段;指定字段修改内容
delete from 表名;删除指定数据表
delete from 表名 where 字段=指定字段;删除指定数据表的指定字段
select * from 表名查询指定数据表所有数据DQL数据查询语言
select 字段1,字段2... from 表名;查询指定数据表指定字段
select 字段1,字段2... from 表名 where 字段=指定字段;查询指定数据表指定字段匹配到指定的字段的数据信息
select 字段1,字段2... from 表名 limit 指定行(可以指定从第几行显示多少行);查询指定数据表指定行的数据
select * from 表名 \G;查询指定表以竖向方式显示数据
alter table 旧表名 rename 新表名;修改指定数据表变更新的数据表名DCL数据控制语言
alter table 表名 add 字段(字段结构类型);扩展表结构,新增字段
alter table 表名 change 字段 新字段(字段结构类型);修改表结构
alter table表名 drop 字段;删除表结构
create temporary table table_name 字段;创建临时表临时表是临时存在的无法show tables查看,退出数据库再登入即消失

create table 新表名 like 旧表名;

insert into new_table_name select * from table_name;

克隆表结构

克隆表数据

like方法(适用于数据迁移)
create table new_table_name(select * from table_name);直接创建新表的时候克隆适用于只备份数据
create user '用户名'@'指定地址' identified by '指定密码';新建用户

指定地址可以为localhost

也可以为指定的IP(IP可以指定网段,其中可以填入%表示网段的意思

rename user '用户名'@'指定地址' to '新用户名'@'新指定地址';用户重命名
drop user '用户名'@'指定地址';删除用户
set password = password('新密码');修改当前密码如果是此命令指定,那么authentication_string字段就是显示密文
set password for '用户名'@'指定地址' = password('new_password');修改指定用户密码
skip_grant_tables跳过授权表用于忘记密码后插入到服务端的配置文件(/etc/my.cnf)
update mysql.user set authentication_string=password ('new_password') where user=user_name;修改指定用户密码操作该命令行后需要刷新权限(flush privileges)
grant 权限1,权限2... on database_name.table_name 'user_name'@'指定地址' identified by 'password';将某个数据库中的数据表授予指定权限给指定用户该用户只能通过授权获得的密码登入数据库,对指定数据库中的数据表进行指定权限的操作
show grants for 'user_name'@'指定地址';查看用户权限
revoke 权限1,权限2... on database_name.table_name from 'user_name'@'指定地址';撤销用户权限
mysql 索引
create index index_name on table_name(索引列);直接创建普通索引普通索引
alter table table_name add index index_name(索引列)修改表结构时创建索引
create table table_name (字段 index index_name(索引列));创建表时创建索引
create unique index index_name on table table_name(索引列);直接创建唯一索引

唯一索引

    unique

alter table table_name add unique index_name (索引列);修改表结构创建唯一索引
reate table table_name (字段,unique index index_name(索引列));创建表时指定唯一索引
create table table_name (字段,primary key(索引列));创建表时创建主键索引

主键索引

primary key

alter table table_name add primary key(索引列));修改表时指定主键索引
create table table_name (字段,index index_name(索引列))创建表时指定组合索引

组合索引

(可以单列索引,可以多列索引)

create fulltext index index_name on table_name(索引列);直接创建全文索引

全文索引

fulltext

可作用在char varchar text类型列上

alter table table_name add fulltext index_name(索引列);修改表方式创建全文索引
create table table_name(字段,fulltext index_name(索引列));创建表时指定全文索引
show index from table_name;查看索引查看索引
show keys from table_name;查看索引
drop index index_name on table_name直接删除索引删除索引
alter table table_name drop index index_name;修改表方式删除索引
alter table table_name drop primary key;删除主键索引
mysql 事务隔离级别
select @@global.tx_isolation;查看全局事务隔离级别
show global variables like '%isolation%';
set global transaction isolation level 隔离级别;

设置全局事务隔离级别 

select @@session.tx_isolation;查看当前会话隔离级别
show session variables like '%isolation%';

set session transaction isolation level 隔离级别;设置会话事务隔离级别 
begin;开启事务
commit;提交事务
rollback;回滚至最原始未结束的事务修改表结构后无法回滚事务
rollback to savepoint S1/S2...回滚至事务中的标记点
savepoint S1在事务中增加标记点
set autocommit=0或1
修改是否提交事务Mysql数据库默认的是自动提交事务,默认为1;如果没有开启自动提交,当前会话所有操作直到输入rollback或者commit才算结束
show variables like 'autocommit'查看Mysql中的AUTOCOMMIT值
mysql 存储引擎
show engines;查看数据库支持的存储引擎
show table status from database_name where name='table_name';查看指定数据表的引擎
alter table 表名 engine=引擎;直接修改存储引擎
default-storage-engine=引擎;修改配置文件修改引擎配置文件位置在/etc/my.cnf,修改完配置文件后需要重启MySQL数据库,一般不建议使用
create table table_name(字段1,字段2...)engine=引擎;创建表时指定引擎

database_name    #库名

table_name           #表名

new_user_name   #新用户名

user_name           #用户名

三种删除方式:

delete from table_name;    
删除指定数据表,可自增(auto_increment)写入

可回滚,可带where条件判断

表结构在,表内容看删除内容

支持删除部分数据 建议用

DML数据操纵语言

想删除部分数据行时候,用delete,并且带上where子句    

安全性delete 最好   使用它哦

truncate table table_name;    
删除指定数据表,不支持自增写入

不可回滚,不可带where条件判断

表结构在,删除数据表内容

想删除表内容保留表,不和事务相关可用

DDL数据定义语言

保留表而删除所有数据的时候用truncate

drop from table_name;    
删除指定数据表

不可回滚,不可带where条件判断

删除表结构和表内容

想删除表可以用

DDL数据定义语言

不再需要一张表的时候,用drop

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值