MySQL数据库基础介绍
作者: 字符空间 发布时间: 2025-11-05 阅读: 11
一、什么是MySQL
MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,目前属于Oracle公司。它使用SQL(结构化查询语言)进行数据库管理。
主要特点:
二、数据库基本概念
2.1 数据库组成
| 组件 | 描述 |
|---|
| 数据库(Database) | 数据存储的容器,包含多个数据表 |
| 数据表(Table) | 数据的二维矩阵,由行和列组成 |
| 列(Column) | 表的字段,定义数据的属性 |
| 行(Row) | 表的记录,包含具体的数据 |
2.2 常见数据类型
| 分类 | 数据类型 | 描述 |
|---|
| 数值类型 | INT | 整数 |
| DECIMAL | 精确小数 |
| FLOAT | 浮点数 |
| 字符串类型 | VARCHAR | 可变长度字符串 |
| CHAR | 固定长度字符串 |
| TEXT | 长文本数据 |
| 日期时间 | DATE | 日期(YYYY-MM-DD) |
| DATETIME | 日期和时间 |
三、SQL基础语法
3.1 数据库操作
-- 创建数据库
CREATE DATABASE school;
-- 使用数据库
USE school;
-- 删除数据库
DROP DATABASE school;
3.2 数据表操作
-- 创建学生表
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT,
gender ENUM('男','女'),
class_id INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 创建班级表
CREATE TABLE classes (
id INT PRIMARY KEY AUTO_INCREMENT,
class_name VARCHAR(50) NOT NULL,
teacher VARCHAR(50)
);
3.3 数据操作语言(DML)
-- 插入数据
INSERT INTO students (name, age, gender, class_id)
VALUES ('张三', 18, '男', 1);
-- 查询数据
SELECT * FROM students;
SELECT name, age FROM students WHERE age > 18;
-- 更新数据
UPDATE students SET age = 19 WHERE name = '张三';
-- 删除数据
DELETE FROM students WHERE id = 1;
四、约束和索引
4.1 常用约束
| 约束类型 | 说明 | 示例 |
|---|
| PRIMARY KEY | 主键,唯一标识 | id INT PRIMARY KEY |
| FOREIGN KEY | 外键,关联其他表 | FOREIGN KEY (class_id) REFERENCES classes(id) |
| NOT NULL | 非空约束 | name VARCHAR(50) NOT NULL |
| UNIQUE | 唯一约束 | email VARCHAR(100) UNIQUE |
| DEFAULT | 默认值 | status INT DEFAULT 1 |
4.2 索引
-- 创建索引
CREATE INDEX idx_name ON students(name);
-- 创建唯一索引
CREATE UNIQUE INDEX idx_email ON users(email);
-- 删除索引
DROP INDEX idx_name ON students;
五、查询进阶
5.1 多表查询
-- 内连接
SELECT s.name, c.class_name
FROM students s
INNER JOIN classes c ON s.class_id = c.id;
-- 左连接
SELECT s.name, c.class_name
FROM students s
LEFT JOIN classes c ON s.class_id = c.id;
5.2 聚合函数
| 函数 | 描述 | 示例 |
|---|
| COUNT() | 计数 | SELECT COUNT(*) FROM students; |
| SUM() | 求和 | SELECT SUM(score) FROM grades; |
| AVG() | 平均值 | SELECT AVG(age) FROM students; |
| MAX() | 最大值 | SELECT MAX(score) FROM grades; |
| MIN() | 最小值 | SELECT MIN(age) FROM students; |
5.3 分组和排序
-- 按班级分组统计学生人数
SELECT class_id, COUNT(*) as student_count
FROM students
GROUP BY class_id
HAVING COUNT(*) > 5;
-- 按年龄排序
SELECT * FROM students ORDER BY age DESC;
-- 分页查询
SELECT * FROM students LIMIT 10 OFFSET 0;
六、示例数据表结构
学生管理系统表结构示例
| 表名 | 字段 | 类型 | 说明 |
|---|
| students | id | INT | 学生ID(主键) |
| name | VARCHAR(50) | 学生姓名 |
| age | INT | 年龄 |
| class_id | INT | 班级ID(外键) |
| created_at | TIMESTAMP | 创建时间 |
| classes | id | INT | 班级ID(主键) |
| class_name | VARCHAR(50) | 班级名称 |
| teacher | VARCHAR(50) | 班主任 |
七、常用函数
7.1 字符串函数
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM users;
SELECT UPPER(name) FROM students;
SELECT LENGTH(name) FROM students;
SELECT SUBSTRING(name, 1, 3) FROM students;
7.2 日期函数
SELECT NOW(); -- 当前日期时间
SELECT CURDATE(); -- 当前日期
SELECT DATE_FORMAT(created_at, '%Y-%m-%d') FROM students;
SELECT DATEDIFF(NOW(), created_at) FROM students;
八、数据库设计原则
- 规范化设计:减少数据冗余
- 适当使用索引:提高查询性能
- 选择合适的数据类型:节省存储空间
- 建立外键关系:保证数据完整性
- 考虑扩展性:为未来发展留出空间
九、学习建议
- 从基础SQL语法开始学习
- 多动手实践,创建测试数据库
- 理解关系型数据库的设计理念
- 学习数据库优化技巧
- 关注数据库安全知识
MySQL作为最流行的开源数据库之一,掌握其基础知识对于任何从事Web开发或数据分析的人员都是必不可少的。通过不断实践,你将能够熟练运用MySQL来管理和操作数据。
❤️收藏
👍点赞
用户评论
发表评论