MySQL基础使用教程文档
一、引言
在当今数据驱动的时代,数据库管理是一项至关重要的技能。MySQL作为最流行的开源关系型数据库管理系统之一,广泛应用于各种规模的项目中。对于刚接触数据库的小白来说,掌握MySQL的基础操作是迈向数据管理领域的第一步。本文将带你从零开始,轻松掌握MySQL的基础操作。
二、MySQL简介
什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的API用于创建、访问、管理、搜索和复制所保存的数据。
什么是MySQL?
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样可以增加速度并提高灵活性。
三、安装MySQL
Windows系统安装
官网下载安装包
访问MySQL官网:https://dev.mysql.com/downloads/mysql/
选择适合你系统的版本下载
按照安装向导的提示进行安装
安装完成后确保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;九、表约束
常见约束类型
非空约束 (NOT NULL)
CREATE TABLE students ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL -- 不能为空 );唯一约束 (UNIQUE)
CREATE TABLE students ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) UNIQUE -- 不能重复 );主键约束 (PRIMARY KEY)
CREATE TABLE students ( id INT PRIMARY KEY AUTO_INCREMENT -- 主键,自动递增 );外键约束 (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) );默认值约束 (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';十四、学习建议
勤动手练习:理论知识结合实际操作,多写SQL语句
从小项目开始:从简单的数据管理开始,逐步深入
学习SQL优化:了解索引、查询优化等高级概念
安全意识:注意SQL注入防护,合理设置权限
持续学习:关注MySQL新特性和最佳实践
十五、总结
通过本教程的学习,你已经掌握了MySQL的基础操作,包括安装、连接、数据库和表的创建、数据的基本操作(增删改查)、以及一些高级查询技巧。MySQL是一个非常强大的工具,掌握了这些基础操作后,你可以继续深入学习更多高级特性,如存储过程、触发器、视图等。
记住,数据库管理是一个实践性很强的技能,只有通过不断的练习才能真正掌握。希望这篇教程能帮助你顺利入门MySQL,为后续的学习和工作打下坚实的基础。
评论