MySQL 数据库操作

MySQL 数据库操作

前提:已安装 MySQL,推荐使用 MySQL 8.0+,命令行 / Navicat/DBeaver 等工具通用。

连接 MySQL 数据库

1.本地连接(命令行)

打开终端 / CMD,输入登录命令,回车后输入密码(安装时设置的 root 密码):

bash 复制代码
mysql -u 用户名 -p
# 示例:默认管理员用户 root
mysql -u root -p

2.远程连接

bash 复制代码
mysql -h 数据库IP -p 端口 -u 用户名 -p
# 示例:连接 192.168.1.100 的 3306 默认mysql端口
mysql -h 192.168.1.100 -p 3306 -u root -p

3.推出连接

bash 复制代码
exit;
# 或
quit

数据库核心操作

MySQL 中库是存放表的容器,先操作库,再操作表。

1.查看所有数据库

sql 复制代码
show databases;

2.创建数据库

语法:create database [if not exists] 库名 [字符集] [排序规则];

  • if not exists:避免重复创建报错
  • 字符集推荐 utf8mb4(支持 emoji 表情,MySQL 标准字符集)
sql 复制代码
# 创建名为 test_db 的数据库
create database if not exists test_db
default character set utf8mb4
collate utf8mb4_unicode_ci;

3.使用数据库

操作表 / 数据前,必须先切换到目标库:

sql 复制代码
use test_db;

4.查看数据库定义

sql 复制代码
show create database test_db;

5.删除数据库

sql 复制代码
drop database if exists test_db

数据表核心操作

表是存储数据的载体,需定义字段名、数据类型、约束。

1.常用数据类型

类型 说明 示例
INT 整数(年龄、ID) age INT
VARCHAR(n) 可变字符串(姓名、手机号) name VARCHAR(20)
TEXT 长文本(描述、文章) content TEXT
DECIMAL(m,n) 高精度小数(金额) price DECIMAL(10,2)
DATE 日期(2025-01-01) birth DATE
DATETIME 日期 + 时间(2025-01-01 12:00) create_time DATETIME

2.创建数据表

语法:create table 表名(字段一 类型 约束,字段二 类型 约束,...) 字符集;

示例:创建用户表 user

sql 复制代码
create table if not exists user (
	id int primary key auto_increment,	--主键、自增(唯一标识)
    name varchar(20) not null,			--姓名,非空
    age int default 18,					--年龄,默认18
    gender char(1) default '男',			--性别,默认男
    phone varchar(11) unique,			--手机号,唯一
    create_time datetime default NOW()	--创建时间,默认当前时间
) engine=InnoDB DEFAULT CHARSET=utf8mb4;

关键字:

  • PRIMARY KEY:主键(唯一、非空,一张表只有一个)
  • AUTO_INCREMENT:自增(仅配合主键整数使用)
  • NOT NULL:非空
  • UNIQUE:唯一
  • DEFAULT:默认值
  • ENGINE=InnoDB:默认存储引擎(支持事务、外键)

3.查看表

sql 复制代码
-- 查看当前库所有表
SHOW TABLES;

-- 查看表结构(字段、类型、约束)
DESC user;

-- 查看表创建语句
SHOW CREATE TABLE user;

4.修改表(user 表)

sql 复制代码
-- 1. 添加字段
ALTER TABLE user ADD email VARCHAR(50);

-- 2. 修改字段类型/约束
ALTER TABLE user MODIFY age INT NOT NULL;

-- 3. 重命名字段
ALTER TABLE user CHANGE phone mobile VARCHAR(11);

-- 4. 删除字段
ALTER TABLE user DROP email;

-- 5. 重命名表
ALTER TABLE user RENAME TO user_info;

5.删除表

sql 复制代码
DROP TABLE IF EXISTS user;

数据增删改查(CRUD)核心操作

这是最常用的数据操作 ,简称 CRUD

  • C(Create):新增
  • R(Read):查询
  • U(Update):修改
  • D(Delete):删除

1.新增数据

sql 复制代码
-- 1. 全字段新增(按表字段顺序)
INSERT INTO user VALUES (NULL, '张三', 20, '男', '13800138000', NOW());

-- 2. 指定字段新增(推荐,灵活)
INSERT INTO user (name, age, mobile) VALUES ('李四', 22, '13900139000');

-- 3. 批量新增(效率高)
INSERT INTO user (name, mobile) VALUES 
('王五', '13700137000'),
('赵六', '13600136000');

2.查询数据

基础查询

sql 复制代码
-- 查询所有字段(* 代表所有)
SELECT * FROM user;

-- 查询指定字段
SELECT name, age, mobile FROM user;

-- 去重查询
SELECT DISTINCT gender FROM user;

条件查询

sql 复制代码
-- 1. 等值查询
SELECT * FROM user WHERE name = '张三';

-- 2. 范围查询
SELECT * FROM user WHERE age BETWEEN 18 AND 25;

-- 3. 模糊查询(% 匹配任意字符,_ 匹配单个字符)
SELECT * FROM user WHERE name LIKE '张%';

-- 4. 多条件查询(AND/OR)
SELECT * FROM user WHERE age > 20 AND gender = '男';

3.修改数据

必须加 WHERE 条件,否则会修改全表数据

sql 复制代码
-- 修改单字段
UPDATE user SET age = 23 WHERE name = '李四';

-- 修改多字段
UPDATE user SET gender = '女', age = 21 WHERE id = 2;

删除数据

必须加 WHERE 条件,否则会删除全表数据

sql 复制代码
-- 删除指定数据
DELETE FROM user WHERE id = 3;

-- 清空表数据(保留表结构,自增ID重置)
TRUNCATE TABLE user;

高级查询

1.排序

sql 复制代码
-- 升序(ASC,默认)
SELECT * FROM user ORDER BY age ASC;

-- 降序(DESC)
SELECT * FROM user ORDER BY create_time DESC;

2.分页查询

语法:LIMIT 起始索引, 每页条数(起始索引从 0 开始)

sql 复制代码
-- 查询第1页,每页2条数据
SELECT * FROM user LIMIT 0, 2;

-- 查询第2页
SELECT * FROM user LIMIT 2, 2;

3.聚合函数

sql 复制代码
-- 总条数
SELECT COUNT(*) FROM user;

-- 平均年龄
SELECT AVG(age) FROM user;

-- 最大/最小年龄
SELECT MAX(age), MIN(age) FROM user;

-- 求和
SELECT SUM(age) FROM user;

4.分组查询

sql 复制代码
-- 按性别分组,统计每组人数
SELECT gender, COUNT(*) FROM user GROUP BY gender;

-- 分组后过滤(HAVING 必须配合 GROUP BY)
SELECT gender, COUNT(*) FROM user GROUP BY gender HAVING COUNT(*) > 1;

5.多表联查

示例 :创建订单表 order,关联用户表

sql 复制代码
-- 创建订单表
CREATE TABLE orders (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT,
    order_no VARCHAR(30),
    FOREIGN KEY (user_id) REFERENCES user(id) -- 外键关联用户表
);

常用联查

  1. 内连接(INNER JOIN):查询两张表匹配的数据

    sql 复制代码
    SELECT u.name, o.order_no FROM user u
    INNER JOIN orders o ON u.id = o.user_id;
  2. 左连接(LEFT JOIN):左表全量数据,右表匹配数据

    sql 复制代码
    SELECT u.name, o.order_no FROM user u
    LEFT JOIN orders o ON u.id = o.user_id;
  3. 右连接(RIGHT JOIN):右表全量数据,左表匹配数据

    sql 复制代码
    SELECT u.name, o.order_no FROM user u
    RIGHT JOIN orders o ON u.id = o.user_id;
相关推荐
赵渝强老师2 小时前
【赵渝强老师】高斯数据库(openGauss)的逻辑存储结构
数据库·postgresql·opengauss·gaussdb·国产数据库·高斯数据库
Aawy1202 小时前
Python生成器(Generator)与Yield关键字:惰性求值之美
jvm·数据库·python
梦想的旅途22 小时前
API 驱动:实现企业微信外部群自动化管理与效率升级
数据库·windows
飞鱼计划3 小时前
MySQL如何释放sql
数据库·sql·mysql
x***r1513 小时前
MySQL 8.0安装教程 Windows版:解压+自定义组件+传统认证+密码设置+命令行快捷方式创建指南
数据库·windows·mysql
路溪非溪3 小时前
adb的安装和基本使用总结
adb
czlczl200209253 小时前
Redis数据编码
数据库·redis·缓存
Wpa.wk3 小时前
pb协议接口测试
数据库·redis·缓存
IpdataCloud4 小时前
资源受限设备上轻量级IP查询模块的部署方法
网络·数据库·网络协议·tcp/ip