一文入门 MySQL:从安装到高级应用

MySQL 是世界上最流行的开源关系型数据库管理系统之一,广泛应用于各种应用程序。本文将从 MySQL 的安装、基本操作到高级特性进行详细介绍,帮助初学者快速掌握 MySQL 的使用。

1. Win10 与 Ubuntu 安装

1.1 Windows 10 安装

在 Windows 系统中,MySQL 提供了图形化安装程序,安装过程简单直观。

  1. 下载 MySQL Installer

  2. 运行安装程序

    • 启动安装程序,选择“自定义安装”。

    • 选择安装组件,包括 MySQL Server、MySQL Workbench 等。

    • 配置 MySQL Server,设置 root 用户密码。

    • 完成安装后,启动 MySQL Server。

1.2 Ubuntu 安装

在 Ubuntu 系统中,可以通过命令行快速安装 MySQL。

 

  1. 更新软件包列表:

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 等多种数据库。

  1. 下载并安装 Navicat

  2. 连接 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,并在实际项目中应用所学知识。

如果你有任何问题或需要进一步的帮助,欢迎在评论区留言!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值