MySQL基础使用教程文档

一、引言

在当今数据驱动的时代,数据库管理是一项至关重要的技能。MySQL作为最流行的开源关系型数据库管理系统之一,广泛应用于各种规模的项目中。对于刚接触数据库的小白来说,掌握MySQL的基础操作是迈向数据管理领域的第一步。本文将带你从零开始,轻松掌握MySQL的基础操作。

二、MySQL简介

什么是数据库?

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的API用于创建、访问、管理、搜索和复制所保存的数据。

什么是MySQL?

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样可以增加速度并提高灵活性。

三、安装MySQL

Windows系统安装

官网下载安装包

  1. 访问MySQL官网:https://dev.mysql.com/downloads/mysql/

  2. 选择适合你系统的版本下载

  3. 按照安装向导的提示进行安装

  4. 安装完成后确保MySQL服务已经启动

Linux系统安装

# CentOS/RHEL系统
yum install -y mysql-server
​
# Ubuntu/Debian系统  
apt-get install -y mysql-server

四、连接到MySQL服务器

使用命令行连接

mysql -u 用户名 -p

然后输入你的密码即可成功连接到MySQL服务器。

使用MySQL客户端工具

也可以直接找到安装的MySQL 8.0 Command Line Client,输入密码即可直接进入。

五、数据库操作

查看数据库

show databases;

注意:databases是复数形式

创建数据库

CREATE DATABASE 数据库名;

为了避免重复创建,可以使用:

CREATE DATABASE IF NOT EXISTS testdb CHARSET=utf8;

删除数据库

DROP DATABASE 数据库名;

注意:删除操作要谨慎,可能会丢失重要数据

选择数据库

USE 数据库名;

例如:

USE testdb;

六、表操作

查看数据库中的表

show tables;

创建表

CREATE TABLE 表名 (
    字段名 数据类型 [约束],
    字段名 数据类型 [约束],
    ...
);

例如,创建一个学生表:

CREATE TABLE students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    age INT,
    email VARCHAR(100)
);

字段类型说明:

  • INT:整数类型

  • VARCHAR(50):可变长度字符串类型,最多50个字符

  • PRIMARY KEY:主键约束

  • AUTO_INCREMENT:自动递增

  • NOT NULL:不能为空

查看表结构

desc 表名;

例如:

desc students;

删除表

DROP TABLE 表名;

七、数据操作

插入数据

INSERT INTO 表名 (字段名1, 字段名2, ...) 
VALUES (值1, 值2, ...);

例如:

INSERT INTO students (name, age, email) 
VALUES ('张三', 20, 'zhangsan@example.com');

插入多条数据:

INSERT INTO students (name, age, email) 
VALUES ('李四', 21, 'lisi@example.com'),
       ('王五', 22, 'wangwu@example.com');

查询数据

-- 查询所有字段
SELECT * FROM students;

-- 查询指定字段
SELECT name, age FROM students;

-- 使用别名
SELECT name as 姓名, age as 年龄 FROM students;

-- 去重查询
SELECT DISTINCT name FROM students;

更新数据

UPDATE 表名 SET 字段名 = 新值 WHERE 条件;

例如:

UPDATE students SET age = 21 WHERE id = 1;

注意:一定要使用WHERE条件,否则会更新所有记录

删除数据

DELETE FROM 表名 WHERE 条件;

例如:

DELETE FROM students WHERE id = 1;

注意:删除操作不可恢复,一定要谨慎使用

八、查询进阶

条件查询

-- 比较运算符
SELECT * FROM students WHERE age > 20;

-- 逻辑运算符
SELECT * FROM students WHERE age > 20 AND gender = '男';

-- 范围查询
SELECT * FROM students WHERE age BETWEEN 20 AND 25;

-- 模糊查询
SELECT * FROM students WHERE name LIKE '张%';

-- IN查询
SELECT * FROM students WHERE age IN (20, 21, 22);

排序查询

SELECT * FROM students ORDER BY age ASC;  -- 升序
SELECT * FROM students ORDER BY age DESC; -- 降序
SELECT * FROM students ORDER BY age DESC, name ASC; -- 多字段排序

分组查询

-- 按性别分组统计人数
SELECT gender, COUNT(*) as 人数 FROM students GROUP BY gender;

-- 按性别分组并筛选
SELECT gender, AVG(age) as 平均年龄 FROM students GROUP BY gender HAVING AVG(age) > 20;

聚合函数

-- COUNT:计数
SELECT COUNT(*) FROM students;

-- MAX:最大值
SELECT MAX(age) FROM students;

-- MIN:最小值
SELECT MIN(age) FROM students;

-- AVG:平均值
SELECT AVG(age) FROM students;

-- SUM:求和
SELECT SUM(age) FROM students;

分页查询

-- 查询前5条记录
SELECT * FROM students LIMIT 5;

-- 查询第3条开始的3条记录
SELECT * FROM students LIMIT 2, 3;

九、表约束

常见约束类型

  1. 非空约束 (NOT NULL)

    CREATE TABLE students (
        id INT PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(50) NOT NULL  -- 不能为空
    );
  2. 唯一约束 (UNIQUE)

    CREATE TABLE students (
        id INT PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(50) UNIQUE  -- 不能重复
    );
  3. 主键约束 (PRIMARY KEY)

    CREATE TABLE students (
        id INT PRIMARY KEY AUTO_INCREMENT  -- 主键,自动递增
    );
  4. 外键约束 (FOREIGN KEY)

    CREATE TABLE orders (
        id INT PRIMARY KEY AUTO_INCREMENT,
        user_id INT,
        product_name VARCHAR(50),
        FOREIGN KEY (user_id) REFERENCES users(id)
    );
  5. 默认值约束 (DEFAULT)

    CREATE TABLE students (
        gender VARCHAR(10) DEFAULT '未知'  -- 默认值
    );

十、用户权限管理

创建用户

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

例如:

CREATE USER 'testuser'@'localhost' IDENTIFIED BY '123456';

授予权限

GRANT 权限 ON 数据库.表 TO '用户名'@'主机';

例如:

GRANT ALL ON testdb.* TO 'testuser'@'localhost';

刷新权限

FLUSH PRIVILEGES;

查看用户权限

SHOW GRANTS FOR 'username'@'host';

例如:

SHOW GRANTS FOR 'testuser'@'localhost';

十一、数据备份与恢复

备份数据库

mysqldump -u 用户名 -p 数据库名 > 备份文件.sql

例如:

mysqldump -u root -p testdb > testdb_backup.sql

恢复数据库

mysql -u 用户名 -p 数据库名 < 备份文件.sql

例如:

mysql -u root -p testdb < testdb_backup.sql

十二、常用函数

字符串函数

-- 字符串连接
SELECT CONCAT('Hello', ' ', 'World');

-- 获取字符串长度
SELECT LENGTH('Hello');

-- 转换大小写
SELECT UPPER('hello');
SELECT LOWER('HELLO');

数学函数

-- 绝对值
SELECT ABS(-10);

-- 四舍五入
SELECT ROUND(3.14159, 2);

-- 平方根
SELECT SQRT(16);

日期函数

-- 获取当前日期
SELECT CURDATE();

-- 获取当前时间
SELECT NOW();

-- 日期格式化
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');

十三、实战练习

创建一个完整的用户管理系统

-- 创建数据库
CREATE DATABASE IF NOT EXISTS user_manager;

-- 使用数据库
USE user_manager;

-- 创建用户表
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) UNIQUE NOT NULL,
    password VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 插入测试数据
INSERT INTO users (username, password, email) VALUES 
('admin', '123456', 'admin@example.com'),
('user1', 'password1', 'user1@example.com');

-- 查询所有用户
SELECT id, username, email, created_at FROM users;

-- 查询特定用户
SELECT * FROM users WHERE username = 'admin';

-- 更新用户信息
UPDATE users SET email = 'newadmin@example.com' WHERE username = 'admin';

-- 删除用户
DELETE FROM users WHERE username = 'user1';

十四、学习建议

  1. 勤动手练习:理论知识结合实际操作,多写SQL语句

  2. 从小项目开始:从简单的数据管理开始,逐步深入

  3. 学习SQL优化:了解索引、查询优化等高级概念

  4. 安全意识:注意SQL注入防护,合理设置权限

  5. 持续学习:关注MySQL新特性和最佳实践

十五、总结

通过本教程的学习,你已经掌握了MySQL的基础操作,包括安装、连接、数据库和表的创建、数据的基本操作(增删改查)、以及一些高级查询技巧。MySQL是一个非常强大的工具,掌握了这些基础操作后,你可以继续深入学习更多高级特性,如存储过程、触发器、视图等。

记住,数据库管理是一个实践性很强的技能,只有通过不断的练习才能真正掌握。希望这篇教程能帮助你顺利入门MySQL,为后续的学习和工作打下坚实的基础。