mysql怎么使用
MySQL安装好之后,第一件事不是建表,是学会怎么连上它。命令行敲 建库建表是基本功。写 插入数据用 更新和删除,一个 表结构不是一次定死的。加个字段: 索引是性能的关键。给经常查询的字段加索引: 事务控制别忽略。多条关联操作要原子性时,用 连接数别乱调。默认 字符集和排序规则,建表时定了就别随便改。 日常维护就三件事:备份、看慢查询日志、清理碎片。 最后说个新手容易栽的坑:MySQL默认的 MySQL这东西,用熟了就那几十条命令来回倒腾。关键在于理解每个操作背后的数据结构和锁机制,而非死记语法。多拿真实数据练手,比看十篇教程都管用。mysql -u root -p,输密码,回车,看到mysql>提示符,才算进门。图形工具如Navicat或DBeaver也行,但命令行能让你更清楚每一步在干什么。CREATE DATABASE shop DEFAULT CHARACTER SET utf8mb4;,别偷懒用默认字符集,中文乱码的坑多半是这一步埋下的。接着USE shop;切过去,再CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);。注意id字段——AUTO_INCREMENT加PRIMARY KEY,这是最常见的自增主键写法,别漏了。INSERT INTO users (name, email) VALUES ('张三', 'zhang@example.com');。查询是重头戏,SELECT * FROM users WHERE email = 'zhang@example.com';能精确匹配,但模糊搜索要用LIKE '%zhang%'。这里有个细节:WHERE条件里的索引字段查询快,非索引字段全表扫描——数据量小无所谓,上了百万行差距就是秒级和毫秒级的区别。UPDATE users SET name = '李四' WHERE id = 1;,一个DELETE FROM users WHERE id = 2;。但删除前务必确认WHERE条件写对了,不然DELETE FROM users;一条命令清空全表,连确认都不带弹的。真要清空表,用TRUNCATE TABLE users;更快,但它会重置自增ID,且不能回滚。ALTER TABLE users ADD COLUMN phone VARCHAR(20) AFTER email;。改字段类型:ALTER TABLE users MODIFY COLUMN phone VARCHAR(30);。删字段:ALTER TABLE users DROP COLUMN phone;。这些操作在开发环境随便玩,生产环境务必先备份——MySQL的mysqldump命令能导出整个库:mysqldump -u root -p shop > shop_backup.sql。CREATE INDEX idx_email ON users(email);。但别每个字段都加——写入时会额外维护索引结构,表越大代价越明显。判断标准就一条:WHERE子句里频繁出现的字段才值得建索引。START TRANSACTION;开始,执行若干语句后COMMIT;提交。中途出错就ROLLBACK;回滚,数据回到事务开始前的状态。典型场景是转账:扣钱和加钱必须同时成功或同时失败,单条语句做不到这一点。max_connections是151,遇到Too many connections报错时,先查代码里有没有连接泄漏——连接用完没关。盲目调高到1000只会让服务器内存吃紧,因为每个连接都占资源。排查命令:SHOW PROCESSLIST;看当前有哪些连接在跑。utf8mb4能存emoji,utf8存不了。排序规则utf8mb4_unicode_ci比utf8mb4_general_ci更准确,但速度略慢——实际差别微乎其微,选unicode_ci更稳。SHOW VARIABLES LIKE 'slow_query_log%';确认日志开着,慢查询语句会记录到文件里,针对性优化。表频繁删改后,执行OPTIMIZE TABLE users;整理碎片,但注意会锁表,别在业务高峰跑。sql_mode里带ONLY_FULL_GROUP_BY,写GROUP BY时SELECT的列必须都包含在GROUP BY里,不然直接报错。比如SELECT name, COUNT(*) FROM users GROUP BY name;没问题,但SELECT name, email, COUNT(*) FROM users GROUP BY name;就会炸。遇到这种报错先检查sql_mode,别急着改代码逻辑。
-
上一篇
-
下一篇
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-