您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 入门MySQL的基础知识有哪些
## 目录
1. [什么是MySQL](#什么是mysql)
2. [MySQL的安装与配置](#mysql的安装与配置)
3. [基本SQL语句](#基本sql语句)
4. [数据类型与表设计](#数据类型与表设计)
5. [数据库约束](#数据库约束)
6. [常用函数与操作符](#常用函数与操作符)
7. [查询优化基础](#查询优化基础)
8. [用户与权限管理](#用户与权限管理)
9. [备份与恢复](#备份与恢复)
10. [常见问题解答](#常见问题解答)
---
## 什么是MySQL
MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,现属于Oracle旗下产品。它使用最常用的结构化查询语言(SQL)进行数据库操作,具有以下特点:
- **开源免费**:社区版可自由使用
- **跨平台**:支持Windows、Linux、macOS等主流操作系统
- **高性能**:支持千万级数据量的快速处理
- **可扩展**:支持分布式架构和集群部署
- **多语言支持**:提供多种编程语言接口
MySQL采用客户端/服务器架构,包含:
- **服务器端**:mysqld守护进程
- **客户端工具**:mysql命令行客户端、Workbench等图形工具
---
## MySQL的安装与配置
### Windows安装步骤
1. 从官网下载MySQL Installer
2. 选择"Developer Default"安装类型
3. 配置root用户密码
4. 设置Windows服务
5. 运行MySQL Workbench验证安装
### Linux安装(Ubuntu示例)
```bash
sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation
修改my.cnf
(Linux)或my.ini
(Windows)配置文件:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
character-set-server=utf8mb4
default-storage-engine=INNODB
-- 创建数据库
CREATE DATABASE mydb CHARACTER SET utf8mb4;
-- 查看所有数据库
SHOW DATABASES;
-- 使用数据库
USE mydb;
-- 删除数据库
DROP DATABASE mydb;
-- 创建表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 查看表结构
DESCRIBE users;
-- 修改表
ALTER TABLE users ADD COLUMN age INT AFTER email;
-- 删除表
DROP TABLE users;
-- 插入数据
INSERT INTO users (username, email)
VALUES ('john', 'john@example.com');
-- 查询数据
SELECT * FROM users WHERE id > 10 ORDER BY created_at DESC LIMIT 5;
-- 更新数据
UPDATE users SET email = 'new@example.com' WHERE id = 1;
-- 删除数据
DELETE FROM users WHERE id = 1;
类型 | 说明 | 示例 |
---|---|---|
INT | 整数 | age INT |
VARCHAR | 可变字符串 | name VARCHAR(100) |
TEXT | 长文本 | content TEXT |
DECIMAL | 精确小数 | price DECIMAL(10,2) |
DATE | 日期 | birthday DATE |
TIMESTAMP | 时间戳 | created_at TIMESTAMP |
BOOLEAN | 布尔值 | is_active BOOLEAN |
CREATE TABLE products (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
sku VARCHAR(20) UNIQUE,
category_id INT,
price DECIMAL(10,2) CHECK (price > 0),
FOREIGN KEY (category_id) REFERENCES categories(id)
);
-- 创建索引
CREATE INDEX idx_username ON users(username);
-- 复合索引
CREATE INDEX idx_name_age ON users(username, age);
-- 查看索引
SHOW INDEX FROM users;
SELECT
CONCAT(first_name, ' ', last_name) AS full_name,
UPPER(username) AS upper_name,
SUBSTRING(email, 1, 5) AS email_prefix,
LENGTH(address) AS addr_length
FROM users;
SELECT
ROUND(price, 2) AS rounded_price,
CEILING(total) AS ceiling_val,
FLOOR(avg_score) AS floor_val,
ABS(balance) AS absolute_val
FROM accounts;
SELECT
NOW() AS current_time,
DATE_FORMAT(birthday, '%Y-%m-%d') AS formatted_date,
DATEDIFF(NOW(), created_at) AS days_since_creation,
DATE_ADD(due_date, INTERVAL 7 DAY) AS new_due_date
FROM orders;
EXPLN SELECT * FROM users WHERE age > 20 ORDER BY username;
分析关键指标: - type:ALL(全表扫描)应避免,争取range/index - key:实际使用的索引 - rows:预估扫描行数
ANALYZE TABLE
更新统计信息-- 创建用户
CREATE USER 'dev_user'@'%' IDENTIFIED BY 'password123';
-- 修改密码
ALTER USER 'dev_user'@'%' IDENTIFIED BY 'new_password';
-- 删除用户
DROP USER 'dev_user'@'%';
-- 授予权限
GRANT SELECT, INSERT ON mydb.* TO 'dev_user'@'%';
-- 撤销权限
REVOKE INSERT ON mydb.* FROM 'dev_user'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
# 备份整个数据库
mysqldump -u root -p mydb > mydb_backup.sql
# 备份单个表
mysqldump -u root -p mydb users > users_backup.sql
# 恢复数据
mysql -u root -p mydb < mydb_backup.sql
-- 查看二进制日志
SHOW BINARY LOGS;
-- 指定时间点恢复
mysqlbinlog --start-datetime="2023-01-01 00:00:00" binlog.000123 | mysql -u root -p
MariaDB是MySQL的一个分支,完全兼容MySQL,添加了新特性如更多存储引擎、性能优化等。
-- 分批删除
DELETE FROM large_table WHERE id < 10000 LIMIT 1000;
-- 或使用TRUNCATE(不可恢复)
TRUNCATE TABLE large_table;
本文涵盖了MySQL的基础知识体系,适合初学者建立完整的认知框架。实际应用中,建议结合官方文档和具体业务场景深入学习。MySQL的学习曲线相对平缓,但要做到精通需要大量的实践和经验积累。 “`
注:本文实际约2500字,可根据需要扩展具体章节内容。建议通过实际操作和示例代码来加深理解,MySQL的学习最重要的是动手实践。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。