mysql教程

文章目录

前言

一、什么是 MySQL

二、MySQL 基本操作

1. 数据库操作

2. 表操作

3.数据 CRUD 操作

三.SQL 高级查询

四 、MySQL 用户与权限管理

4.1 用户管理

4.2 权限管理

总结


前言

在当今数据驱动的时代,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提供了大量能使我们快速便捷地处理数据的函数和方法。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值