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

MySQL基础操作清单

目录

一、数据库基础操作(核心必记)

1. 查看所有数据库

2. 创建数据库

3. 切换/使用数据库

4. 查看当前数据库详情

5. 删除数据库

二、数据表基础操作(核心重点)

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

2. 创建数据表

3. 查看数据表结构

4. 修改数据表

5. 删除数据表

三、数据操作(CRUD,核心)

1. 新增数据(Create)

2. 查询数据(Select)

3. 修改数据(Update)

4. 删除数据(Delete)

四、常用辅助操作(提升效率)

1. 查看SQL执行结果行数

2. 模糊查询(LIKE)

3. 注释操作

4. 退出MySQL终端

五、误区汇总


MySQL作为主流关系型数据库,其基础操作是入门必备核心技能。很多新手在学习时容易遗漏关键操作、混淆语法格式,导致操作报错、数据异常。本文整理了一套完整的MySQL基础操作清单,重点标注新手高频踩坑点,适合零基础入门者收藏备用。

一、数据库基础操作(核心必记)

数据库是数据存储的容器,所有表和数据都依赖于数据库,核心操作包括创建、查看、使用、删除。

1. 查看所有数据库

-- 语法:查看当前MySQL中所有已创建的数据库 SHOW DATABASES;

避坑提醒:末尾分号不可省略,MySQL区分语句结束的唯一标志是分号;执行后会显示系统默认数据库和自定义数据库。

2. 创建数据库

-- 示例:创建名为test_db的数据库 CREATE DATABASE IF NOT EXISTS test_db CHARACTER SET utf8;

避坑提醒:① 数据库名不可使用MySQL关键字(如select、order),若需使用需用反引号`包裹;② IF NOT EXISTS 可避免“数据库已存在”的报错。

3. 切换/使用数据库

--示例:切换到test_db数据库 USE test_db;

避坑提醒:切换数据库后,可通过SELECT DATABASE()查看当前正在使用的数据库。

4. 查看当前数据库详情

-- 语法:查看当前使用的数据库信息 SHOW CREATE DATABASE 数据库名; -- 示例:查看test_db数据库详情 SHOW CREATE DATABASE test_db;

5. 删除数据库

-- 语法:删除数据库(仅当数据库存在时删除) DROP DATABASE IF EXISTS 数据库名; -- 示例:删除test_db数据库 DROP DATABASE IF EXISTS test_db;

避坑提醒:删除数据库会同时删除该数据库下的所有表和数据,且无法恢复,操作前务必确认数据无用,建议先备份。

二、数据表基础操作(核心重点)

数据表是存储具体数据的载体,操作需在已切换到指定数据库的前提下进行,核心操作包括创建、查看、修改、删除。

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

-- 语法:查看当前数据库下的所有数据表 SHOW TABLES;

2. 创建数据表

-- 语法:CREATE TABLE 表名 (字段1 类型 约束, 字段2 类型 约束, ...); -- 常用字段类型:INT(整数)、VARCHAR(长度)(字符串)、DATE(日期)、DECIMAL(总长度, 小数位数) -- 常用约束:PRIMARY KEY(主键,唯一标识)、NOT NULL(非空)、DEFAULT(默认值)、AUTO_INCREMENT(自增) -- 实操示例:创建名为user的用户表 CREATE TABLE IF NOT EXISTS user ( id INT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID,主键自增,唯一标识', user_name VARCHAR(50) NOT NULL COMMENT '用户名,非空', age INT DEFAULT 18 COMMENT '年龄,默认值18', phone VARCHAR(11) UNIQUE COMMENT '手机号,唯一,不可重复', create_time DATE COMMENT '创建时间' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表';

避坑提醒:① 字段之间用逗号分隔,最后一个字段后无需加逗号;② COMMENT用于添加注释,提升可读性,推荐添加;③ ENGINE=InnoDB是MySQL默认存储引擎,支持事务和外键,无需修改;④ 主键字段(如id)建议设置自增,方便数据管理。

3. 查看数据表结构

-- 示例1:查看表的完整创建信息 SHOW CREATE TABLE 表名; -- 示例2:查看user表结构 DESC user;

4. 修改数据表

-- 场景1:添加字段 ALTER TABLE 表名 ADD 字段名 类型 约束; -- 示例:给user表添加email字段(非空) ALTER TABLE user ADD email VARCHAR(100) NOT NULL COMMENT '邮箱,非空'; -- 场景2:修改字段类型/约束 ALTER TABLE 表名 MODIFY 字段名 新类型 新约束; -- 示例:将user表的age字段改为INT,允许为空 ALTER TABLE user MODIFY age INT COMMENT '年龄,允许为空'; -- 场景3:修改字段名 ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 约束; -- 示例:将user表的phone字段改为tel ALTER TABLE user CHANGE phone tel VARCHAR(11) UNIQUE COMMENT '手机号,唯一'; -- 场景4:删除字段 ALTER TABLE 表名 DROP 字段名; -- 示例:删除user表的create_time字段 ALTER TABLE user DROP create_time;

避坑提醒:修改数据表时,若表中已有数据,需注意字段类型修改的兼容性(如VARCHAR不可直接改为INT),避免数据丢失。

5. 删除数据表

-- 语法2:删除表(仅当表存在时删除) DROP TABLE IF EXISTS 表名; -- 实操示例:删除user表 DROP TABLE IF EXISTS user;

避坑提醒:删除表会同时删除表中所有数据,无法恢复,务必谨慎操作。

三、数据操作(CRUD,核心)

CRUD是MySQL最核心的数据操作,即新增(Create)、查询(Select)、修改(Update)、删除(Delete),是日常开发中使用频率最高的操作,需要熟练掌握。

1. 新增数据(Create)

-- 语法1:指定字段新增 INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...); -- 语法2:全字段新增 INSERT INTO 表名 VALUES (值1, 值2, ...); -- 语法3:批量新增(高效,推荐批量插入多条数据) INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...); -- 示例:给user表新增数据 -- 单条新增 INSERT INTO user (user_name, age, tel, email) VALUES ('zhangsan', 22, '13800138000', 'zhangsan@163.com'); -- 批量新增 INSERT INTO user (user_name, age, tel, email) VALUES ('lisi', 25, '13900139000', 'lisi@163.com'), ('wangwu', 20, '13700137000', 'wangwu@163.com');

避坑提醒:① 字段与值的数量、顺序、类型必须一致;② 非空字段(NOT NULL)必须传入值,不可省略;③ 字符串和日期类型的值需用单引号包裹。

2. 查询数据(Select)

-- 语法1:查询表中所有字段 SELECT * FROM 表名; -- 语法2:查询指定字段 SELECT 字段1, 字段2, ... FROM 表名; -- 语法3:条件查询(WHERE筛选) SELECT 字段 FROM 表名 WHERE 条件; -- 语法4:去重查询(DISTINCT,去除重复数据) SELECT DISTINCT 字段 FROM 表名; -- 语法5:排序查询(ORDER BY,ASC升序,DESC降序,默认升序) SELECT 字段 FROM 表名 ORDER BY 字段 排序方式; -- 示例(基于user表) -- 1. 查询所有用户信息 SELECT * FROM user; -- 2. 查询用户名和手机号 SELECT user_name, tel FROM user; -- 3. 查询年龄大于20的用户 SELECT * FROM user WHERE age > 20; -- 4. 查询所有手机号,去除重复值 SELECT DISTINCT tel FROM user; -- 5. 按年龄降序查询用户 SELECT * FROM user ORDER BY age DESC;

避坑提醒:排序查询时,若有多个排序字段,用逗号分隔。

3. 修改数据(Update)

-- 语法:UPDATE 表名 SET 字段1=值1, 字段2=值2, ... WHERE 条件; -- 注意:WHERE条件不可省略,否则会修改表中所有数据! -- 实操示例:将user表中user_name为zhangsan的年龄改为23 UPDATE user SET age = 23 WHERE user_name = 'zhangsan'; -- 示例2:批量修改(修改年龄大于25的用户,改为25) UPDATE user SET age = 25 WHERE age>25;

避坑提醒:① 必须加WHERE条件,否则会误改全表数据,新手务必检查条件是否正确;② 可同时修改多个字段,用逗号分隔;③ 修改后的数据无法直接恢复,建议先查询条件对应的记录,确认无误后再执行修改。

4. 删除数据(Delete)

-- 语法1:条件删除 DELETE FROM 表名 WHERE 条件; -- 语法2:删除表中所有数据 DELETE FROM 表名; -- 示例:删除user表中user_name为wangwu的用户 DELETE FROM user WHERE user_name = 'wangwu'; -- 示例2:删除表中所有数据 DELETE FROM user;

避坑提醒:① WHERE条件不可省略,否则会删除表中所有数据;② 若需彻底清空表(含自增主键重置),可使用TRUNCATE TABLE 表名;(比DELETE高效,但同样无法恢复)。

四、常用辅助操作(提升效率)

1. 查看SQL执行结果行数

-- 语法:查询后添加COUNT(*),统计结果行数 SELECT COUNT(*) FROM 表名 WHERE 条件; -- 示例:统计user表中年龄大于20的用户数量 SELECT COUNT(*) FROM user WHERE age > 20;

2. 模糊查询(LIKE)

-- 语法:SELECT 字段 FROM 表名 WHERE 字段 LIKE '模糊条件'; -- 通配符:% 表示任意长度的字符(0个或多个),_ 表示单个字符 -- 示例1:查询用户名包含“张”的用户 SELECT * FROM user WHERE user_name LIKE '%张%'; -- 示例2:查询用户名以“李”开头的用户 SELECT * FROM user WHERE user_name LIKE '李%'; -- 示例3:查询用户名长度为3,且以“王”开头的用户 SELECT * FROM user WHERE user_name LIKE '王__';

3. 注释操作

-- 单行注释(两个减号+空格) -- 这是单行注释,查询所有用户 SELECT * FROM user; -- 单行注释(MySQL特有,#开头) # 这是单行注释,查询用户名和年龄 SELECT user_name, age FROM user; -- 多行注释(适用于大段说明) /* 这是多行注释 功能:查询年龄大于20的用户 备注:仅查询用户名和手机号 */ SELECT user_name, tel FROM user WHERE age > 20;

4. 退出MySQL终端

-- 语法:两种方式均可,退出MySQL终端 EXIT; -- 或者 QUIT;

五、误区汇总

误区1:忘记加分号——MySQL语句必须以分号结尾,否则无法执行,这是高频踩坑点;

误区2:操作数据库/表前未切换数据库,否则会报“表不存在”错误;

误区3:删除/修改数据时未加WHERE条件——会误删/误改全表数据,操作前务必检查条件;

误区4:字符串/日期值未用单引号包裹——会报语法错误,所有非数值类型的值必须用单引号包裹;

误区5:数据库/表名使用关键字——如创建名为order、select的表,需用反引号`包裹,否则报错;

误区6:主键未设置自增——手动插入主键值易重复,建议主键字段添加AUTO_INCREMENT约束。

后续将逐步更新MySQL进阶操作(如索引、事务、复杂查询),关注作者,全程干货输出,助力新手快速从入门到精通MySQL。

http://www.jsqmd.com/news/505905/

相关文章:

  • 记不住 Linux 命令?我写了个终端,点一下就行
  • 深度学习性能优化:GFLOPS与GPU选型实战指南
  • 《认知流形上的场方程及其在碳硅关系中的应用》(沙地实验)
  • 让数据说话:运营场景下高效产出专业图表工具推荐
  • MQ-6丙烷传感器在GD32E230上的ADC+DMA采集实现
  • 京东E卡回收攻略,教你如何快速兑换现金! - 团团收购物卡回收
  • 2026年3月,3公里内宠物医院哪家强?来评测 - 品牌推荐师
  • 手把手教你用Spiffo开发板搭建最小Linux系统(附全志H618避坑指南)
  • 效果对比:Qwen-Image-Edit-F2P在不同算力GPU下的生成速度与质量评测
  • 3分钟搭建专属Java在线编译器:零配置开发环境终极指南
  • FreeRTOS多任务调度下的温湿度监测系统设计
  • 国际航空货运合规之选,深圳聚鑫印刷涂炭空运单印刷专业靠谱 - 博客万
  • Dify平台集成CasRel模型实战:快速构建智能关系抽取应用
  • GitHub全界面中文化解决方案:突破语言障碍的开发效率提升指南
  • 3MF技术格式:重塑3D打印工作流的开源工具解决方案
  • 含风光储荷微电网多目标优化系统代码功能说明
  • AMS1117-3.3V稳压器是什么?有哪些应用
  • JeecgBoot低代码 AI工作流循环节点:批量处理与迭代控制的利器
  • PX4与Gazebo协同实现多无人机动态编队仿真实践
  • Ansys HFSS同轴电缆仿真全流程:从建模到结果分析(附参数设置)
  • Sentinel 注解支持:@SentinelResource 高级用法
  • Langchain架构解析:从文本到向量再到答案的完整流程详解
  • 2027国内MBA怎么选?从职场转型到能力跃迁 - 速递信息
  • 操盘五式:【一柱擎天】
  • VTK-9.3.0与Qt6.5.3集成编译实战:CMake配置与VS2022工程构建
  • Qt中直接嵌入OpenCV窗口的3种高效方法(附完整代码)
  • Elsevier Tracker:学术论文审稿状态智能监控的终极解决方案
  • 3个为什么APK Editor Studio是Android应用逆向工程的最佳选择
  • 渗透测试实战:用TPLMap一键检测SSTI漏洞(附CTFShow Web361解题实录)
  • 左值引用和右值引用