当前位置: 首页 > news >正文

MySQL 基础指令全解析:从入门到熟练操作

文章目录

  • 前言
  • 一、MySQL 是什么
  • 二、MySQL 的安装与配置
  • 三、MySQL 连接与退出指令
    • 1. 连接MySQL服务
    • 2. 退出MySQL服务
  • 四、数据库基本操作指令
    • 1. 查看所有数据库
    • 2. 创建数据库
    • 3. 选择(切换)数据库
    • 4. 查看当前选择的数据库
    • 5. 删除数据库
  • 五、数据表核心操作指令
    • 1. 查看当前数据库的所有表
    • 2. 创建数据表
    • 3. 查看表结构
    • 4. 修改数据表
      • (1)添加字段
      • (2)修改字段类型/名称
      • (3)删除字段
      • (4)修改表名
    • 5. 删除数据表
  • 六、数据CRUD核心操作指令
    • 1. 新增数据(Create)
      • (1)插入单条数据
      • (2)插入多条数据
    • 2. 查询数据(Read)
      • (1)查询所有数据
      • (2)查询指定字段
      • (3)条件筛选查询(where)
      • (4)排序查询(order by)
      • (5)分页查询(limit)
      • (6)聚合查询(sum、count、avg等)
      • (7)多表连接查询(left join/inner join)
    • 3. 修改数据(Update)
    • 4. 删除数据(Delete)
  • 七、用户与权限管理指令
    • 1. 创建用户
    • 2. 授予权限
    • 3. 查看用户权限
    • 4. 撤销权限
    • 5. 删除用户
  • 八、其他实用指令
    • 1. 查看MySQL版本
    • 2. 刷新权限
    • 3. 查看当前登录用户
  • 总结


前言

MySQL 作为目前最流行的关系型数据库管理系统之一,广泛应用于网站开发、数据分析等场景。无论是搭建个人博客,还是开发企业级应用,掌握 MySQL 基础指令都是入门的第一步。这些指令就像 “数据库的操作语言”,能帮我们完成数据的存储、查询、修改和删除等核心需求。本文将系统整理 MySQL 日常高频使用的指令,从连接数据库到权限管理,每个命令都附带语法说明和实操示例,适合新手从零开始学习,也可作为老开发者的速查手册

一、MySQL 是什么

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、MySQL 的安装与配置

三、MySQL 连接与退出指令

为帮助刚接触MySQL的新手快速掌握核心操作,我将从连接数据库开始,按数据库、表、数据的操作逻辑,梳理常用指令并搭配具体示例,让指令用法更易理解。在操作数据库前,首先要通过客户端连接MySQL服务,操作完成后需正确退出,避免资源占用。

1. 连接MySQL服务

语法

mysql -u 用户名 -p 密码 -h 主机地址 -P 端口号
  • -u:指定登录用户名(必填,如root);
  • -p:指定密码(若紧跟用户名写-p123456则直接输入密码,若仅写-p,回车后会提示输入密码,更安全);
  • -h:指定MySQL服务所在主机地址(本地默认localhost127.0.0.1,远程连接需填服务器IP);
  • -P:指定端口号(默认3306,若修改过端口需手动填写)。

示例

  • 本地连接(默认端口,密码后续输入):
    mysql -u root -p
    
  • 远程连接(IP为192.168.1.100,端口3307):
    mysql -u test_user -p -h 192.168.1.100 -P 3307
    

2. 退出MySQL服务

语法(两种方式均可):

exit;  -- 或 quit;

说明:指令后必须加;(MySQL指令结束符,部分客户端支持\g),输入后会断开与MySQL服务的连接。

四、数据库基本操作指令

数据库是数据的“容器”,先创建/选择数据库,再进行后续表和数据的操作。

1. 查看所有数据库

语法

show databases;

作用:列出MySQL中所有已创建的数据库(包含系统默认数据库,如information_schemamysql)。

2. 创建数据库

语法

create database 数据库名 [character set 字符集] [collate 排序规则];
  • character set:指定数据库字符集(默认utf8mb4,支持表情符号;避免用utf8,实际仅支持部分Unicode);
  • collate:指定排序规则(默认utf8mb4_general_cici表示不区分大小写)。

示例:创建名为blog_db的数据库,指定字符集为utf8mb4

create database blog_db character set utf8mb4;

3. 选择(切换)数据库

语法

use 数据库名;

说明:操作表和数据前必须先选择数据库,执行后会提示“Database changed”,表示切换成功。

示例:切换到blog_db数据库:

use blog_db;

4. 查看当前选择的数据库

语法

select database();

作用:确认当前正在操作的数据库,避免误操作其他库。

5. 删除数据库

语法

drop database 数据库名;

警告:删除数据库会同时删除库中所有表和数据,且无法恢复,执行前务必确认!

五、数据表核心操作指令

表是数据库中存储数据的“载体”,需先定义表结构(字段名、字段类型、约束),再插入数据。

1. 查看当前数据库的所有表

语法

show tables;

说明:需先通过use 数据库名切换到目标数据库,否则会报错。

2. 创建数据表

语法

create table 表名 (字段1 数据类型 [约束条件],字段2 数据类型 [约束条件],...字段n 数据类型 [约束条件]
) [character set 字符集];
  • 常用数据类型
    • int:整数(如int(11),11表示显示宽度,不影响存储范围);
    • varchar(长度):可变长度字符串(如varchar(50),最大存储50个字符);
    • datetime:日期时间(格式YYYY-MM-DD HH:MM:SS,如2024-05-20 14:30:00);
    • decimal(总位数, 小数位数):小数(如decimal(10,2),表示最大10位数字,其中2位小数);
  • 常用约束条件
    • primary key:主键(唯一标识表中记录,非空且唯一,一张表只能有一个主键);
    • not null:非空(该字段不能存储空值);
    • unique:唯一(该字段的值不能重复);
    • default 默认值:默认值(若插入数据时未指定该字段,自动填充默认值)。

示例:在blog_db中创建article表(存储文章信息):

create table article (id int(11) primary key auto_increment,  -- 主键,自增(auto_increment)title varchar(100) not null unique,     -- 文章标题,非空且唯一content text,                           -- 文章内容(text适合长文本)author varchar(50) default '匿名作者',   -- 作者,默认值“匿名作者”create_time datetime not null           -- 创建时间,非空
) character set utf8mb4;

3. 查看表结构

语法(两种常用方式):

-- 方式1:查看字段详情(类型、约束、默认值等)
desc 表名;  -- 或 describe 表名;-- 方式2:查看创建表的SQL语句(可验证表结构是否正确)
show create table 表名;

示例:查看article表结构:

desc article;

4. 修改数据表

常用修改场景:添加字段、修改字段类型/名称、删除字段、修改表名。

(1)添加字段

语法

alter table 表名 add 新字段 数据类型 [约束条件] [after 已有字段];
  • after 已有字段:指定新字段插入的位置(默认在最后一列)。

示例:在article表的author字段后添加read_count(阅读量,默认0):

alter table article add read_count int(11) default 0 after author;

(2)修改字段类型/名称

语法

-- 修改字段类型
alter table 表名 modify 字段名 新数据类型 [约束条件];-- 修改字段名称+类型
alter table 表名 change 旧字段名 新字段名 新数据类型 [约束条件];

示例

  • article表的read_count类型改为decimal(10,0)
    alter table article modify read_count decimal(10,0) default 0;
    
  • read_count改名为view_count,类型不变:
    alter table article change read_count view_count int(11) default 0;
    

(3)删除字段

语法

alter table 表名 drop 字段名;

警告:删除字段会同时删除该字段的所有数据,谨慎操作!

示例:删除article表的view_count字段:

alter table article drop view_count;

(4)修改表名

语法

alter table 旧表名 rename to 新表名;  -- 或 rename table 旧表名 to 新表名;

示例:将article表改名为blog_article

alter table article rename to blog_article;

5. 删除数据表

语法

drop table 表名;  -- 删除单个表
drop table 表名1, 表名2;  -- 同时删除多个表

警告:删除表会清空表中所有数据和结构,无法恢复!

示例:删除blog_article表:

drop table blog_article;

六、数据CRUD核心操作指令

CRUD是数据库操作的核心(Create新增、Read查询、Update修改、Delete删除),也是日常开发中最常用的指令。

1. 新增数据(Create)

(1)插入单条数据

语法

-- 方式1:指定所有字段(字段顺序需与表结构一致)
insert into 表名 (字段1, 字段2, ..., 字段n) values (1,2, ..., 值n);-- 方式2:不指定字段(需按表结构顺序插入所有字段的值)
insert into 表名 values (1,2, ..., 值n);
  • 字符串值需用''(单引号)包裹;
  • 日期时间值需符合YYYY-MM-DD HH:MM:SS格式,且用''包裹;
  • 若字段有defaultauto_increment,可省略该字段(自动填充值)。

示例:向blog_article表插入一条文章数据(id自增,author用默认值):

insert into blog_article (title, content, create_time) 
values ('MySQL基础指令', '本文介绍了MySQL常用操作...', '2024-05-20 15:00:00');

(2)插入多条数据

语法

insert into 表名 (字段1, 字段2, ..., 字段n) 
values (1-1,1-2, ...,1-n),(2-1,2-2, ...,2-n),...(值m-1, 值m-2, ..., 值m-n);

优势:比单条插入更高效,减少与数据库的交互次数。

示例:向blog_article表插入两条数据:

insert into blog_article (title, content, author, create_time) 
values ('Python连接MySQL', '使用pymysql库连接MySQL...', '小明', '2024-05-21 10:00:00'),('SQL优化技巧', '索引优化能提升查询速度...', '小红', '2024-05-22 09:30:00');

2. 查询数据(Read)

查询是最复杂也最常用的操作,支持单表查询、多表关联、条件筛选、排序、分页等。

(1)查询所有数据

语法

select * from 表名;
  • *:表示查询所有字段(实际开发中建议指定具体字段,避免冗余数据)。

示例:查询blog_article表的所有文章:

select * from blog_article;

(2)查询指定字段

语法

select 字段1, 字段2, ..., 字段n from 表名;

示例:查询blog_article表的title(标题)和author(作者):

select title, author from blog_article;

(3)条件筛选查询(where)

语法

select 字段列表 from 表名 where 条件表达式;
  • 常用条件运算符
    • 等于=、不等于!=<>
    • 大于>、小于<、大于等于>=、小于等于<=
    • like:模糊查询(%匹配任意字符,_匹配单个字符);
    • in:匹配多个值(如in (值1, 值2));
    • between...and:匹配区间(如between 1 and 10);
    • is null/is not null:判断是否为空(注意:不能用= null)。

示例

  • 查询作者为“小明”的文章:
    select title, create_time from blog_article where author = '小明';
    
  • 查询标题包含“MySQL”的文章(模糊查询):
    select * from blog_article where title like '%MySQL%';
    
  • 查询2024年5月20日后创建的文章:
    select title, create_time from blog_article where create_time > '2024-05-20';
    

(4)排序查询(order by)

语法

select 字段列表 from 表名 [where 条件] order by 字段1 [asc/desc], 字段2 [asc/desc];
  • asc:升序(默认,如时间从早到晚);
  • desc:降序(如时间从晚到早);
  • 可按多个字段排序(先按字段1排序,字段1相同则按字段2排序)。

示例:查询所有文章,按创建时间降序排列(最新的在前):

select title, author, create_time from blog_article order by create_time desc;

(5)分页查询(limit)

语法

select 字段列表 from 表名 [where 条件] [order by 字段] limit 起始索引, 每页条数;
  • 起始索引:从0开始(第1页起始索引为0,第2页为“每页条数”,以此类推);
  • 用途:避免一次性查询大量数据,提升性能(如分页展示列表)。

示例:查询blog_article表,每页显示2条,查询第2页(起始索引=2):

select * from blog_article order by create_time desc limit 2, 2;

(6)聚合查询(sum、count、avg等)

语法

select 聚合函数(字段) from 表名 [where 条件] [group by 分组字段] [having 分组条件];
  • 常用聚合函数
    • count(字段):统计记录数(count(*)统计所有记录,count(字段)排除该字段为空的记录);
    • sum(字段):计算数值字段的总和;
    • avg(字段):计算数值字段的平均值;
    • max(字段):获取字段的最大值;
    • min(字段):获取字段的最小值。

示例

  • 统计blog_article表的文章总数:
    select count(*) as article_total from blog_article;  -- as 给结果起别名
    
  • 统计作者“小明”的文章数量:
    select count(*) as xiaoming_articles from blog_article where author = '小明';
    

(7)多表连接查询(left join/inner join)

当数据分散在多张表时,需通过“关联字段”(如主键和外键)连接查询。

语法(以两表为例):

-- 内连接(只查两表中匹配的记录)
select 字段列表 from1 inner join2 on1.关联字段 =2.关联字段;-- 左连接(查左表所有记录,右表匹配不到的字段显示null)
select 字段列表 from1 left join2 on1.关联字段 =2.关联字段;

示例:假设有blog_article(文章表,含category_id关联分类表)和blog_category(分类表,含idcategory_name),查询文章标题和对应的分类名称:

select a.title, c.category_name 
from blog_article a  -- a是blog_article的别名
left join blog_category c  -- c是blog_category的别名
on a.category_id = c.id;  -- 关联条件:文章的分类ID=分类表的ID

3. 修改数据(Update)

语法

update 表名 set 字段1=1, 字段2=2, ..., 字段n=值n [where 条件];

警告:必须加where条件!否则会修改表中所有记录,无法恢复!

示例:将blog_article表中标题为“MySQL基础指令”的文章作者改为“张三”:

update blog_article 
set author = '张三' 
where title = 'MySQL基础指令';

4. 删除数据(Delete)

语法

delete from 表名 [where 条件];

警告

  1. 必须加where条件!否则会删除表中所有数据;
  2. 删除数据后,自增字段(如id)的序列不会重置(若需重置,需用truncate,但truncate会删除表结构后重建,更彻底)。

示例:删除blog_article表中作者为“匿名作者”且创建时间在2024年5月1日前的文章:

delete from blog_article 
where author = '匿名作者' and create_time < '2024-05-01';

补充:清空表数据(保留表结构,重置自增序列):

truncate table 表名;  -- 相当于“删除表+重建表”,速度比delete快,但无法恢复

七、用户与权限管理指令

在多用户场景下,需创建不同权限的用户(如开发、测试、只读用户),避免使用root用户直接操作。

1. 创建用户

语法

create user '用户名'@'主机地址' identified by '密码';
  • 主机地址%表示允许从任意主机连接,localhost仅允许本地连接,192.168.1.%允许某网段连接。

示例:创建用户dev_user,允许从任意主机连接,密码为Dev@123456

create user 'dev_user'@'%' identified by 'Dev@123456';

2. 授予权限

语法

grant 权限列表 on 数据库名.表名 to '用户名'@'主机地址';
  • 常用权限
    • 全部权限:all privileges
    • 数据操作权限:select(查询)、insert(新增)、update(修改)、delete(删除);
    • 数据库管理权限:create(创建)、drop(删除)、alter(修改);
  • 数据库名.表名*.*表示所有数据库的所有表,blog_db.*表示blog_db库的所有表,blog_db.blog_article表示指定表。

示例:授予dev_userblog_db库所有表的查询、新增、修改权限:

grant select, insert, update on blog_db.* to 'dev_user'@'%';

3. 查看用户权限

语法

show grants for '用户名'@'主机地址';

示例:查看dev_user的权限:

show grants for 'dev_user'@'%';

4. 撤销权限

语法

revoke 权限列表 on 数据库名.表名 from '用户名'@'主机地址';

示例:撤销dev_userblog_db库的修改权限:

revoke update on blog_db.* from 'dev_user'@'%';

5. 删除用户

语法

drop user '用户名'@'主机地址';

示例:删除dev_user用户:

drop user 'dev_user'@'%';

八、其他实用指令

1. 查看MySQL版本

select version();

2. 刷新权限

修改用户权限后,需刷新权限才能生效:

flush privileges;

3. 查看当前登录用户

select user();

总结

MySQL基础指令围绕“数据库-表-数据-用户”四大核心展开,掌握这些指令能满足日常开发80%以上的操作需求。核心要点总结如下:

  1. 操作逻辑:先连接数据库→选择数据库→操作表→操作数据,避免跨库误操作;
  2. 安全注意drop(删除库/表)、delete(删除数据)、update(修改数据)必须加条件,谨慎使用;
  3. 查询技巧:多表查询用join,分页用limit,排序用order by,聚合用count/sum等函数;
  4. 权限管理:避免用root用户直接操作业务库,按“最小权限原则”创建用户(如只读用户仅授予select权限)。

建议大家结合实际场景多动手练习(如创建一个博客数据库,模拟文章、分类、评论表的增删改查),熟悉指令的使用细节(如字符集、约束条件的影响)。后续可进一步学习索引优化、事务、存储过程等进阶知识,让MySQL操作更高效、安全。


http://www.dtcms.com/a/414847.html

相关文章:

  • 南华 NHZ-03/10/13 型滚筒反力式制动检验台:传统制动检测的核心设备
  • 企业网站开发注册网站开发目录结构
  • 做网站哪个公司好 快选宁陵建站宝互联网行业简介
  • cloudfared 内网穿透通过docker方式遇到的问题
  • 利用汇出与汇入函式协助自动化程式开发
  • iis网站域名访问辽宁工程招标网信息平台
  • 网站开发模板系统myphoto wordpress 国外
  • UART,IIC,SPI串行通信优缺点
  • debian12 安装pve
  • DM存储过程和函数中常用的变量、循环、游标、抛出异常
  • php网站开发怎么样西安网站维护 策划
  • 写csv测试
  • 网站访问不了的原因app运营
  • 一种物联网的节水灌溉系统(论文+源码)
  • 配置AC5(ARM Compiler 5)编译器
  • 合肥中科大网站开发wordpress5.0版本恢复到旧版本
  • 网站开发人员要求仿中国加盟网站源码
  • MySQL InnoDB持久化统计信息详解
  • 深入解析MySQL InnoDB Purge机制
  • 网站公司建立wordpress 分页不出来
  • 做英文的小说网站有哪些网站入口你会回来感谢我的
  • 基于神经网络的简单PID控制
  • 神经网络之仿射变换
  • PINN物理信息神经网络驱动的材料学二维热传导方程求解MATLAB代码
  • Docker(二)
  • 基于 PyTorch 完全从零手搓 GPT 混合专家 (MOE) 对话模型
  • 【企业架构】TOGAF架构标准规范-数据架构
  • 大疆无人机图传原理:从镜头到屏幕的实时传输解码之旅
  • Linux安全机制--应用层安全机制
  • 中国通信工业协会区块链专委会三届四次主任委员会议召开