# MySQL基础知识点整理 ## 一、MySQL简介 ### 1.1 什么是MySQL MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,现属于Oracle旗下产品。它使用最常用的结构化查询语言SQL进行数据库操作。 主要特点: - 开源免费(社区版) - 性能高、可靠性好 - 支持跨平台(Windows/Linux/macOS等) - 支持多种编程语言接口 - 支持多用户、多线程 ### 1.2 MySQL版本 - 社区版(MySQL Community Server):免费开源 - 企业版(MySQL Enterprise Edition):收费,提供技术支持 - 集群版(MySQL Cluster) 当前主流版本:MySQL 5.7、MySQL 8.0(推荐使用8.0+版本) ## 二、MySQL安装与配置 ### 2.1 Windows安装 1. 下载MySQL安装包(.msi) 2. 运行安装向导 3. 配置root密码 4. 选择服务启动类型 5. 完成安装 ### 2.2 Linux安装(以Ubuntu为例) ```bash # 更新软件包列表 sudo apt update # 安装MySQL服务器 sudo apt install mysql-server # 安全配置 sudo mysql_secure_installation # 启动服务 sudo systemctl start mysql
配置文件位置: - Windows: my.ini - Linux: /etc/mysql/my.cnf
常用配置项:
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock port=3306 character-set-server=utf8mb4 default-storage-engine=INNODB
mysql -u 用户名 -p
-- 创建用户 CREATE USER 'username'@'host' IDENTIFIED BY 'password'; -- 授权 GRANT ALL PRIVILEGES ON database.* TO 'username'@'host'; -- 刷新权限 FLUSH PRIVILEGES; -- 查看用户权限 SHOW GRANTS FOR 'username'@'host'; -- 撤销权限 REVOKE ALL PRIVILEGES ON database.* FROM 'username'@'host'; -- 删除用户 DROP USER 'username'@'host';
-- 查看所有数据库 SHOW DATABASES; -- 创建数据库 CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 选择数据库 USE dbname; -- 删除数据库 DROP DATABASE dbname;
常见数据类型: - 整数:TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT - 浮点数:FLOAT, DOUBLE, DECIMAL - 字符串:CHAR, VARCHAR, TEXT, BLOB - 日期时间:DATE, TIME, DATETIME, TIMESTAMP - 其他:ENUM, SET, JSON
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, email VARCHAR(100), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, status TINYINT DEFAULT 1 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 添加列 ALTER TABLE users ADD COLUMN phone VARCHAR(20) AFTER email; -- 修改列 ALTER TABLE users MODIFY COLUMN phone VARCHAR(15); -- 删除列 ALTER TABLE users DROP COLUMN phone; -- 重命名表 RENAME TABLE users TO customers;
-- 单条插入 INSERT INTO users (username, password, email) VALUES ('admin', '123456', 'admin@example.com'); -- 批量插入 INSERT INTO users (username, password, email) VALUES ('user1', '111111', 'user1@example.com'), ('user2', '222222', 'user2@example.com');
-- 基本查询 SELECT * FROM users; -- 条件查询 SELECT username, email FROM users WHERE status = 1; -- 排序 SELECT * FROM users ORDER BY created_at DESC; -- 分页 SELECT * FROM users LIMIT 10 OFFSET 20; -- 第3页,每页10条 -- 分组 SELECT status, COUNT(*) FROM users GROUP BY status; -- 连接查询 SELECT u.username, o.order_id FROM users u JOIN orders o ON u.id = o.user_id;
UPDATE users SET password = 'newpassword', status = 0 WHERE id = 1;
DELETE FROM users WHERE id = 1; -- 清空表(不可恢复) TRUNCATE TABLE users;
-- 创建普通索引 CREATE INDEX idx_username ON users(username); -- 创建唯一索引 CREATE UNIQUE INDEX idx_email ON users(email); -- 创建组合索引 CREATE INDEX idx_name_status ON users(username, status);
SHOW INDEX FROM users;
DROP INDEX idx_username ON users;
START TRANSACTION; -- 执行SQL语句 COMMIT; -- 或 ROLLBACK;
设置隔离级别:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
mysqldump -u root -p dbname > backup.sql
SELECT * INTO OUTFILE '/tmp/users.csv' FIELDS TERMINATED BY ',' FROM users;
mysql -u root -p dbname < backup.sql
# 缓冲区设置 innodb_buffer_pool_size = 4G key_buffer_size = 256M # 连接数设置 max_connections = 200 thread_cache_size = 10 # 日志设置 slow_query_log = 1 long_query_time = 2
建议使用utf8mb4字符集,支持完整的Unicode(包括emoji)
SET GLOBAL time_zone = '+8:00';
本文整理了MySQL的基础知识点,适合初学者快速了解MySQL的核心概念和基本操作。实际应用中,还需要结合具体业务场景深入学习高级特性和优化技巧。 “`
注:本文约2500字,采用Markdown格式编写,包含代码块、列表、标题等格式。内容涵盖MySQL安装、配置、基本操作、CRUD、索引、事务、存储引擎等核心知识点。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。