MySQL 是世界上最流行的开源关系型数据库管理系统之一,广泛应用于各种应用程序。本文将从 MySQL 的安装、基本操作到高级特性进行详细介绍,帮助初学者快速掌握 MySQL 的使用。
1. Win10 与 Ubuntu 安装
1.1 Windows 10 安装
在 Windows 系统中,MySQL 提供了图形化安装程序,安装过程简单直观。
-
下载 MySQL Installer:
-
访问 MySQL 官方网站,下载 MySQL Installer。
-
-
运行安装程序:
-
启动安装程序,选择“自定义安装”。
-
选择安装组件,包括 MySQL Server、MySQL Workbench 等。
-
配置 MySQL Server,设置 root 用户密码。
-
完成安装后,启动 MySQL Server。
-
1.2 Ubuntu 安装
在 Ubuntu 系统中,可以通过命令行快速安装 MySQL。
-
更新软件包列表:
sudo apt install mysql-server
2.安装 MySQL Server
sudo mysql_secure_installation
3.运行安全脚本:
sudo mysql_secure_installation
4.验证 MySQL 是否安装成功:
sudo systemctl status mysql
2. Navicat 客户端连接
Navicat 是一款功能强大的数据库管理工具,支持 MySQL、PostgreSQL、SQLite 等多种数据库。
-
下载并安装 Navicat:
-
访问 Navicat 官方网站,下载并安装 Navicat。
-
-
连接 MySQL 数据库:
-
打开 Navicat,点击“新建连接”。
-
输入连接名称、主机名/IP 地址、端口(默认为 3306)、用户名和密码。
-
点击“测试连接”,验证是否连接成功。
-
3. DDL(数据定义语言)
DDL 用于定义和修改数据库结构,包括创建、修改和删除数据库、表等。
3.1 创建数据库
CREATE DATABASE mydatabase;
3.2 创建表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
passwd VARCHAR(100)
);
3.3 修改表
ALTER TABLE users ADD COLUMN age INT;
3.4 删除表
DROP TABLE users;
4. DML(数据操纵语言)
DML 用于操作数据库中的数据,包括插入、更新、删除和查询数据。
4.1 插入数据
INSERT INTO users (name, passwd, age) VALUES ('张三', 123456, 25);
4.2 更新数据
UPDATE users SET age = 26 WHERE name = '张三';
4.3 删除数据
DELETE FROM users WHERE name = '张三';
4.4 查询数据
SELECT * FROM users WHERE age > 20;
5. DCL(数据控制语言)
DCL 用于控制用户对数据库的访问权限。
5.1 创建用户
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
5.2 授予权限
GRANT ALL PRIVILEGES ON mydatabase.* TO 'newuser'@'localhost';
5.3 撤销权限
REVOKE SELECT ON mydatabase.* FROM 'newuser'@'localhost';
6. 外键
外键用于建立表与表之间的关联关系。
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT
FOREIGN KEY (user_id) REFERENCES users(id)
);
7. 查询语句
查询语句是 SQL 中最常用的部分,用于从数据库中检索数据。
7.1 基本查询
SELECT name, email FROM users WHERE age > 20;
7.2 排序
SELECT * FROM users ORDER BY age DESC;
7.3 分组与聚合
SELECT age, COUNT(*) FROM users GROUP BY age;
8. 数据类型
MySQL 提供了多种数据类型,包括整数、浮点数、字符串、日期等。
8.1 常见数据类型
-
INT
:整数类型。 -
VARCHAR
:可变长度字符串。 -
DATE
:日期类型。 -
DECIMAL
:定点数类型。
9. 扩展知识
9.1 视图
视图是一个虚拟表,其内容由 SQL 查询定义。
CREATE VIEW user_summary AS
SELECT name, age FROM users WHERE age > 20;
9.2 函数与存储过程
函数和存储过程可以封装复杂的逻辑,方便重复使用。
9.2.1 创建存储过程
向user表中插入1000个用户,从4开始
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_user`()
BEGIN
DECLARE i INT DEFAULT 4; -- 声明变量i,默认值为4
WHILE i <= 1003 DO
-- 插入用户数据
INSERT INTO user (username, password)
VALUES (CONCAT('u', i), '123456');
-- i加1
SET i = i + 1;
END WHILE;
END
9.2.2 调用存储过程
call insert_user();
9.3 索引
索引用于加速查询操作。
CREATE INDEX idx_email ON users(passwd);
9.4 存储引擎
MySQL 支持多种存储引擎,如 InnoDB 和 MyISAM。
-
InnoDB:支持事务、外键和行级锁。
-
MyISAM:不支持事务,但读取速度较快。
9.5 事务
事务用于确保数据操作的原子性、一致性和持久性。
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;
COMMIT;
10. PyMySQL 使用
PyMySQL 是一个 Python 库,用于连接和操作 MySQL 数据库。
10.1 安装 PyMySQL
pip install pymysql
10.2 连接数据库
import pymysql
connection = pymysql.connect( #创建数据库连接
host='localhost', #连接地址
user='root', #用户名
password='password', #密码
database='mydatabase' #数据库名称
)
cursor = connection.cursor() #创建游标
10.3 插入数据
sql = "INSERT INTO users (name, email) VALUES (%s, %s)" #sql语句
cursor.execute(sql, ('Alice', 'alice@example.com')) #执行sql语句,并添加实参
connection.commit() #提交执行内容
10.4 查询数据
sql = "SELECT * FROM users" #sql查询语句
cursor.execute(sql) #执行sql语句
results = cursor.fetchall() #获取查询信息
for row in results: #遍历查询信息
print(row) #打印遍历出的信息
10.5 关闭连接
cursor.close() #关闭游标
connection.close() #关闭连接
结语
通过本文的介绍,你已经掌握了 MySQL 的基本安装、操作和一些高级特性。无论是数据库管理员还是开发者,MySQL 都是一个强大的工具,值得深入学习。希望本文能帮助你快速入门 MySQL,并在实际项目中应用所学知识。
如果你有任何问题或需要进一步的帮助,欢迎在评论区留言!