一、MySQL 数据库介绍

MySQL 是一个广泛使用的开源关系型数据库管理系统(RDBMS),由 Oracle 公司维护。它支持 SQL(结构化查询语言),适用于中小型 Web 应用、数据仓库等场景,具备高可靠性、易用性和良好的性能。

二、MySQL 库操作

1. 系统数据库

安装 MySQL 后,默认包含以下系统数据库:

  • information_schema:存储元数据(如数据库、表、列信息)
  • mysql:存储用户权限和系统配置
  • performance_schema:监控服务器性能指标
  • sys:提供简化性能调优的视图

2. 数据库操作

(1)创建数据库

CREATE DATABASE db_name;

 

(2)数据库命名规则

  • 由字母、数字、下划线组成
  • 建议使用小写字母
  • 避免使用 MySQL 保留字(如 SELECT, TABLE

(3)选择数据库

USE db_name;

 

(4)查看数据库

SHOW DATABASES; -- 列出所有数据库
SHOW CREATE DATABASE db_name; -- 查看创建语句

 

(5)删除数据库

DROP DATABASE db_name; -- 谨慎操作!

 

三、MySQL 表操作

1. 表介绍

表是存储数据的结构化对象,由行(记录)和列(字段)组成,每个字段有特定数据类型和约束。

2. 查看表

SHOW TABLES; -- 当前数据库所有表
SHOW TABLES FROM db_name; -- 指定数据库的表

 

3. 创建表

(1)语法

CREATE TABLE table_name (
    column1 datatype constraints,
    column2 datatype constraints,
    ...
);

 

(2)类型介绍

  • 整数:INT, BIGINT
  • 浮点数:FLOAT, DOUBLE
  • 字符串:VARCHAR(255), CHAR(10)
  • 日期时间:DATE, DATETIME, TIMESTAMP
  • 大文本:TEXT, BLOB

(3)约束条件

  • PRIMARY KEY:主键
  • NOT NULL:非空
  • UNIQUE:唯一值
  • DEFAULT:默认值
  • FOREIGN KEY:外键

(4)创建表示例

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

 

4. 查看表结构

DESC table_name; -- 简略信息
SHOW CREATE TABLE table_name; -- 完整创建语句

 

5. 修改表

(1)修改表名

ALTER TABLE old_name RENAME TO new_name;

 

(2)增加字段

ALTER TABLE table_name ADD COLUMN new_column VARCHAR(50);

 

(3)删除字段

ALTER TABLE table_name DROP COLUMN column_name;

 

(4)修改字段

ALTER TABLE table_name 
CHANGE old_column new_column INT; -- 重命名+改类型

ALTER TABLE table_name 
MODIFY column_name VARCHAR(100); -- 仅改类型

 

6. 复制表

CREATE TABLE new_table AS SELECT * FROM old_table; -- 仅复制数据
CREATE TABLE new_table LIKE old_table; -- 仅复制结构

 

7. 删除表

DROP TABLE table_name; -- 不可恢复!

 

四、MySQL 数据操作

1. 介绍

数据操作语言(DML)用于增删改查(CRUD)表中的记录。

2. 插入数据 INSERT

INSERT INTO table_name (col1, col2) VALUES ('val1', 100); -- 指定列
INSERT INTO table_name VALUES (val1, val2, ...); -- 全列插入(需按顺序)

 

3. 删除数据 DELETE

DELETE FROM table_name WHERE condition; -- 带条件删除
DELETE FROM table_name; -- 清空表(逐行删除)

 

4. 更新数据 UPDATE

UPDATE table_name 
SET col1 = 'new_val', col2 = 200 
WHERE condition;

 

5. 查询数据 SELECT

(1)单表查询

SELECT * FROM table_name; -- 所有列
SELECT name, age FROM users WHERE age > 18; -- 条件过滤
SELECT DISTINCT country FROM customers; -- 去重
SELECT COUNT(*) FROM orders; -- 聚合函数

 

(2)多表查询

在关系型数据库中,多表查询是最常用的操作之一,它允许我们从多个相关联的表中获取数据。以下是几种常见的多表连接方式:

  1. 内连接(INNER JOIN) 内连接只返回两个表中匹配的行。语法示例如下:
-- 查询用户及其订单信息(只返回有订单的用户)
SELECT u.name, o.order_date 
FROM users u 
JOIN orders o ON u.id = o.user_id;

-- 可以添加WHERE条件进一步筛选
SELECT u.name, o.order_date, o.amount
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE o.amount > 1000;

 

典型应用场景:需要获取两个表中存在关联关系的数据,如用户和其订单、产品和其销售记录等。

  1. 左连接(LEFT JOIN) 左连接返回左表的所有记录,以及右表中匹配的记录(如果没有匹配,右表字段显示为NULL)。语法示例如下:
-- 查询所有部门及其员工(包括没有员工的部门)
SELECT d.name AS department_name, e.employee_name 
FROM departments d 
LEFT JOIN employees e ON d.id = e.dept_id;

-- 可以配合WHERE条件找出没有员工的部门
SELECT d.name
FROM departments d
LEFT JOIN employees e ON d.id = e.dept_id
WHERE e.id IS NULL;

 

典型应用场景:需要获取主表所有记录及可能的关联信息,如展示所有产品(包括没有销售记录的产品)、所有客户(包括没有下单的客户)等。

  1. 右连接(RIGHT JOIN) 右连接返回右表的所有记录,以及左表中匹配的记录(如果没有匹配,左表字段显示为NULL)。语法示例如下:
-- 查询所有员工及其部门信息(包括没有分配部门的员工)
SELECT e.employee_name, d.name AS department_name
FROM departments d
RIGHT JOIN employees e ON d.id = e.dept_id;

-- 可以配合WHERE条件找出没有分配部门的员工
SELECT e.employee_name
FROM departments d
RIGHT JOIN employees e ON d.id = e.dept_id
WHERE d.id IS NULL;

 

典型应用场景:需要获取从表所有记录及可能的关联信息,如展示所有订单(包括没有对应客户的订单)、所有评论(包括没有用户信息的评论)等。

  1. 全连接(FULL JOIN) 全连接返回左右两表中所有记录,不匹配的部分显示为NULL。语法示例如下:
-- 查询所有部门和所有员工的组合(包括没有员工的部门和没有分配部门的员工)
SELECT d.name AS department_name, e.employee_name
FROM departments d
FULL JOIN employees e ON d.id = e.dept_id;

 

典型应用场景:需要同时获取两个表的完整信息,如展示所有产品类别和所有供应商的组合等。

五、MySQL 数据库用户授权

1. 创建用户

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
-- 示例:CREATE USER 'dev'@'localhost' IDENTIFIED BY 'Pass123!';

 

2. 授权操作

GRANT permission_type ON db_name.table_name TO 'username'@'host';
-- 示例:GRANT SELECT, INSERT ON shop.* TO 'dev'@'localhost';

 

3. 查看权限

SHOW GRANTS FOR 'username'@'host';

 

4. 撤销权限

REVOKE permission_type ON db_name.table_name FROM 'username'@'host';
-- 示例:REVOKE INSERT ON shop.orders FROM 'dev'@'localhost';

 

 

 

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐