ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

MySQL增删改查入门:从SQL基础到环境搭建与踩坑指南

MySQL增删改查入门:从SQL基础到环境搭建与踩坑指南 1. 从零开始理解MySQL增删改查先弄清楚SQL在干什么聊到MySQL的增删改查很多刚入门的朋友第一反应是“不就是INSERT、SELECT、UPDATE、DELETE四条语句吗有什么好学的”。这种想法我太熟悉了因为我刚接触数据库的时候也是这么想的直到真正上手做项目、被线上数据坑过几次之后才明白这四个操作背后藏着大量细节任何一个环节没想清楚都可能让整个系统的数据出问题。先说清楚MySQL到底是什么。它是一个关系型数据库管理系统简单说就是把数据装进一张张结构化的“表格”里每张表有固定的列字段和行记录然后通过SQL语句对这些表格里的数据进行操作。MySQL的增删改查英文缩写叫CRUDCreate、Read、Update、Delete对应到SQL语句就是INSERT插入、SELECT查询、UPDATE修改、DELETE删除。这四类操作构成了几乎所有应用系统数据流转的基石——注册用户是INSERT登录验证是SELECT改头像改昵称是UPDATE注销账号是DELETE。这篇文章适合谁看两类人。第一类是刚学数据库、对着MySQL命令行不知所措的纯新手你需要搞清楚最基本的语法和逻辑第二类是已经能写SQL但经常踩坑比如更新忘加WHERE条件导致全表数据被改、删除数据后才发现没备份的开发者你需要系统性地把CRUD的边界和风险梳理一遍。我会从最基础的建库建表讲起一直到事务、锁、索引对增删改查的影响全程用实际场景和踩坑记录来串不搞那些听起来高大上但用不上的理论。在学习CRUD之前必须先把环境这件事说清楚。很多人卡在第一步不是语句不会写而是MySQL服务根本起不来或者连不上数据库。我建议你用最简单的方式装一个MySQL 8.0具体安装方式后面会展开装完之后先别急着敲SQL花五分钟把“客户端连服务端”这件事弄明白——你在命令行里敲的每条语句实际是通过客户端发送给MySQL服务进程去执行的服务端帮你解析SQL、执行操作、返回结果。理解了这一层后面遇到连接报错、权限问题的时候排查思路会清晰非常多。2. 环境准备装好MySQL并做好基础配置2.1 三种安装方式的选型建议MySQL的安装方式有好多Windows下最常见的是一路Next的安装包安装Linux下则分成apt/yum安装和通用二进制安装还有不少人直接用Docker跑一个MySQL容器。每种方式各有适用场景我直接说结论。如果你只是本地学习、写写练习Windows下用官方安装包mysql-installer-community版本省事省心装完自带MySQL Workbench图形界面查询、建表都能鼠标点点点。如果你是在Linux服务器上部署生产环境我强烈建议用系统的包管理器安装比如CentOS上执行yum install mysql-serverUbuntu上执行apt install mysql-server这种方式能自动处理服务注册、系统启动项等一堆杂事。至于Docker方式适合想快速体验不同MySQL版本或者做临时测试的场景但对新手来说容器卷、端口映射这些概念反而增加了理解成本我建议先把本机安装跑通再玩Docker。提示无论用哪种方式安装完成后第一件事都是确认服务状态。Windows下在服务管理器里找到MySQL服务并启动Linux下执行systemctl status mysqld或mysql查看状态。这一步很关键很多人SQL写对了但报连接错误八成是服务根本没起来。2.2 初始连接与密码设置的常见坑MySQL安装完成后的初始连接方式不同版本差异很大。5.7以前root账号默认空密码直接mysql -u root就能进去5.7之后默认生成了一个临时密码在安装日志或错误日志里能找到8.0的安装包在Windows下会让你自己设置密码Linux下则往往需要手动改一次密码。我第一次在Linux上装MySQL 5.7的时候死活找不到临时密码在哪后来才发现在/var/log/mysqld.log里有一行“A temporary password is generated for rootlocalhost: xxx”把那个密码拿来登录进去第一件事就是改密码。命令是ALTER USER rootlocalhost IDENTIFIED BY 你的新密码;这里提醒一句如果新密码强度不够比如纯数字、少于8位可能会被MySQL的validate_password组件拦下来。新手遇到这个报错不要慌要么设置一个符合强度的密码大小写字母加数字加符号要么临时卸载这个组件。生产环境我不建议你降低密码强度但本地练习图省事的话可以执行UNINSTALL COMPONENT file://component_validate_password;2.3 连接报错error 2002的排查思路“ERROR 2002 (HY000): Cant connect to local MySQL server through socket /tmp/mysql.sock”这个报错出镜率极高搜索热词里也专门有人问这个。要理解它必须先明白MySQL的连接方式。MySQL客户端连接本地服务有两种方式。一种是走TCP/IP指定-h 127.0.0.1 -P 3306另一种是走Unix socket文件默认去找/tmp/mysql.sock这个文件。如果你客户端和服务端之间是通过socket通信的而这个socket文件不存在就会报上面的2002错误。常见原因有三个MySQL服务没启动、socket文件路径不对、服务启动失败导致socket没有生成。排查思路很简单一句一句来。先看服务是否运行systemctl status mysqld或者ps -ef | grep mysql如果服务没跑就启动它如果服务在跑但socket路径不对可以在连接时显式指定socket路径或者查看/etc/my.cnf配置文件里socket参数的值。很多人踩的坑是把mysqld和mysql客户端混为一谈——mysqld是服务端进程mysql是客户端命令服务端没起来客户端敲再多遍mysql -u root都是白搭。实操心得排查2002错误时我建议优先用systemctl status看服务状态而不是反复改配置。有一次我折腾了半天socket路径最后发现是磁盘满了导致mysqld起不来日志里全是“No space left on device”。先看日志再看配置这个顺序能救你很多次。其中详细内容见图片详细请看请提供一条综合性的生产库解决问题mysql中更新非常大的表查询非常慢如何更快因为更新一张大表时其他查询全部被阻塞应该怎么处理测试数据尽力靠谱create_time 创建时间方便追溯数据年龄分布地区北京、上海、广州、深圳、杭州各种类型原始紧急需求文档绝对优先另外推送中紧急需求数据看板需要在月底30号上线需要加班加点到月底个人求稳需要请假给公司0缓冲问题是数据处理这个紧急需求我现在两个月没到 不适合离职需要想办法安全度过这段时间以下是具体需求对现有数据全量清洗包括进行多轮函数运算进行多个项目的规划组合尽可能满足数量最多并保证满足总预算规划单位对清洗后的数据做聚合要入有建模规划的库方便后续报表出数对存量的历史多版本文件进行解析提取一键批量处理以 cron 定时的方式对入仓的结果数据做准确性验证支持明细下钻对不上要告警提示自行设计的嵌入式的轻量级数据血缘模块实现自动的字段血缘解析、手动维护链路血缘、支持导出导入功能我现阶段的困境团队里没人会。我也不能离职没到两个月。现在需要安全的应对过去不让自己工作量大到崩溃。该怎么办怎么处理利用哪些工具可以快速批量脚本化自动化完成以上需求尽量提供可以落地到代码的方案其中尽可能使用 Python我觉得他是在试探我 但是我现在每天都很焦虑如何调整心态如何面对我现在每天面对冷暴力应该怎么办年龄29 单身 男 深圳年薪总包35w 非计算机专业。但代码能力可以。现在做数据开发的工作。母家庭条件不好。存款9w。前端将被淘汰。我不能没有这份工作。也不能轻易换工作。我不高看自己知道自己能力边界。 遇到冷暴力应该怎么办怎么样能安全地度过试用期焦虑并失眠和胸闷没胃口。这是怎么了长期焦虑。我应该怎么调整心态好持续睡眠不规律 结论求助我应该何去何从我该如何做才能扭转局面处理基于以上标题我此次规划的原创博文内容核心私域重点是(CRUD的基本概念环境安装搭建)
返回列表