前言
在当今数据驱动的时代,MySQL 作为最流行的关系型数据库之一,已成为开发者必备的技能之一。无论是前端工程师、后端开发者还是数据分析师,掌握 MySQL 都能显著提升工作效率和职业竞争力。优快云 作为国内知名的技术社区,汇聚了大量优质的 MySQL 学习资源,其中许多博客以其通俗易懂的讲解、丰富的实例和实用的技巧深受开发者喜爱。
一、什么是 MySQL
MySQL 是一个开源的关系型数据库管理系统 (RDBMS),由 Oracle 公司开发、发布和支持。它具有以下特点:
- 开源免费,社区版可自由使用
- 跨平台,支持 Windows、Linux、Mac OS 等
- 高性能,处理速度快
- 支持多用户、多线程操作
- 良好的安全性和可靠性
二、MySQL 基本操作
1. 数据库操作
-- 创建数据库
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 查看所有数据库
SHOW DATABASES;
-- 选择数据库
USE mydb;
-- 删除数据库(谨慎操作)
DROP DATABASE mydb;
2. 表操作
-- 创建表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 查看表结构
DESCRIBE users;
-- 查看所有表
SHOW TABLES;
-- 修改表(添加字段)
ALTER TABLE users ADD COLUMN age INT;
-- 修改字段
ALTER TABLE users MODIFY COLUMN age TINYINT;
-- 删除字段
ALTER TABLE users DROP COLUMN age;
-- 删除表(谨慎操作)
DROP TABLE users;
3.数据 CRUD 操作
-- 插入单条数据
INSERT INTO users (username, email, password)
VALUES ('zhangsan', 'zhangsan@example.com', '123456');
-- 插入多条数据
INSERT INTO users (username, email, password)
VALUES
('lisi', 'lisi@example.com', '654321'),
('wangwu', 'wangwu@example.com', 'abcdef');
查询数据:
-- 查询所有数据
SELECT * FROM users;
-- 条件查询
SELECT username, email FROM users WHERE id > 1;
-- 排序
SELECT * FROM users ORDER BY created_at DESC;
-- 限制结果数量
SELECT * FROM users LIMIT 10;
-- 模糊查询
SELECT * FROM users WHERE username LIKE '%zhang%';
-- 聚合查询
SELECT COUNT(*) AS user_count FROM users;
更新数据:
-- 更新数据(务必加WHERE条件,否则会更新所有记录)
UPDATE users
SET password = 'newpassword'
WHERE id = 1;
删除数据:
-- 删除数据(必须加WHERE条件)
DELETE FROM users WHERE id = 3;
三.SQL 高级查询
3.1 连接查询
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
product_name VARCHAR(100),
amount DECIMAL(10,2),
FOREIGN KEY (user_id) REFERENCES users(id)
);
-- 内连接
SELECT u.username, o.product_name, o.amount
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
-- 左连接
SELECT u.username, o.product_name
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;
SELECT * FROM users
WHERE id IN (SELECT user_id FROM orders WHERE amount > 100);
SELECT * FROM (
SELECT username, COUNT(*) AS order_count
FROM users u
JOIN orders o ON u.id = o.user_id
GROUP BY u.id
) AS user_orders
WHERE order_count > 5;
四 、MySQL 用户与权限管理
4.1 用户管理
-- 创建用户
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
-- 允许远程访问
CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'password';
-- 修改密码
ALTER USER 'newuser'@'localhost' IDENTIFIED BY 'newpassword';
-- 删除用户
DROP USER 'newuser'@'localhost';
4.2 权限管理
-- 授予权限
GRANT SELECT, INSERT ON mydb.users TO 'newuser'@'localhost';
-- 授予所有权限
GRANT ALL PRIVILEGES ON mydb.* TO 'newuser'@'localhost';
-- 撤销权限
REVOKE INSERT ON mydb.users FROM 'newuser'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
-- 查看用户权限
SHOW GRANTS FOR 'newuser'@'localhost';
五、关联关系
5.1 一对一关系 (One-to-One)
-
特点:表A的一条记录对应表B的一条记录,反之亦然
-
示例:用户表 和 用户详情表
CREATE TABLE users (
user_id INT PRIMARY KEY,
username VARCHAR(50)
);
CREATE TABLE user_profiles (
profile_id INT PRIMARY KEY,
user_id INT UNIQUE,
address VARCHAR(100),
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
5.2. 一对多关系 (One-to-Many)
特点:表A的一条记录对应表B的多条记录,但表B的一条记录只对应表A的一条记录
例:部门表 和 员工表
CREATE TABLE departments (
dept_id INT PRIMARY KEY,
dept_name VARCHAR(50)
);
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
emp_name VARCHAR(50),
dept_id INT,
FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);
5.3 多对多关系(Many-to-Many)
特点:表A的一条记录对应表B的多条记录,表B的一条记录也对应表A的多条记录
示例:学生表 和 课程表
CREATE TABLE students (
student_id INT PRIMARY KEY,
student_name VARCHAR(50)
);
CREATE TABLE courses (
course_id INT PRIMARY KEY,
course_name VARCHAR(50)
);
CREATE TABLE student_courses (
student_id INT,
course_id INT,
PRIMARY KEY (student_id, course_id),
FOREIGN KEY (student_id) REFERENCES students(student_id),
FOREIGN KEY (course_id) REFERENCES courses(course_id)
);
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

被折叠的 条评论
为什么被折叠?



