MySQL 基础用法(上):库表管理与数据增删改

本篇为 MySQL 入门第一篇,覆盖数据库核心概念、库级操作、表结构管理与数据增删改,是所有 MySQL 操作的基础。

一、MySQL 概述与连接方式

MySQL 是一款开源关系型数据库管理系统(RDBMS),采用客户端 - 服务器架构,通过 SQL(结构化查询语言)进行数据管理。

1. 命令行连接数据库

安装 MySQL 服务端后,通过终端执行连接命令:

sql

cpp 复制代码
-- 基础连接,-u 指定用户名,-p 表示需要输入密码
mysql -u root -p

回车后输入密码即可进入 MySQL 命令行交互界面。

2. 常用环境命令

sql

cpp 复制代码
-- 查看 MySQL 版本
SELECT VERSION();

-- 查看当前用户
SELECT USER();

-- 退出 MySQL
exit;

二、数据库(Database)基本操作

数据库是数据表的容器,一个 MySQL 服务可以管理多个独立数据库。

1. 查看所有数据库

sql

复制代码
SHOW DATABASES;

默认会包含 mysqlinformation_schemaperformance_schema 等系统库,请勿随意修改。

2. 创建数据库

sql

cpp 复制代码
-- 创建数据库并指定字符集(推荐 utf8mb4,支持完整 emoji 等字符)
CREATE DATABASE IF NOT EXISTS test_db DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
  • IF NOT EXISTS:避免重复创建报错
  • CHARSET:指定字符集
  • COLLATE:指定排序规则

3. 切换 / 进入数据库

操作数据表前必须先指定数据库:

sql

复制代码
USE test_db;

4. 删除数据库

sql

复制代码
DROP DATABASE IF EXISTS test_db;

⚠️ 删除操作不可逆,生产环境严禁随意执行。

三、数据表(Table)基本操作

数据表是存储数据的核心单元,由行(记录)和列(字段)组成。

1. 常用数据类型

表格

类型分类 代表类型 说明
数值型 INT、BIGINT、DECIMAL 整数用 INT/BIGINT,金额用 DECIMAL
字符串型 VARCHAR、TEXT 定长用 CHAR,变长用 VARCHAR,长文本用 TEXT
日期时间 DATE、DATETIME、TIMESTAMP DATE 仅存日期,DATETIME 存日期 + 时间

2. 创建数据表

sql

cpp 复制代码
CREATE TABLE IF NOT EXISTS student (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
    name VARCHAR(50) NOT NULL COMMENT '姓名',
    age INT DEFAULT 0 COMMENT '年龄',
    gender CHAR(1) COMMENT '性别',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生表';

关键字说明:

  • PRIMARY KEY:主键,唯一标识一条记录
  • AUTO_INCREMENT:自增,每插入一条数据自动 + 1
  • NOT NULL:非空约束,该字段不允许为空
  • DEFAULT:默认值
  • COMMENT:字段 / 表注释

3. 查看表信息

sql

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

-- 查看表结构
DESC student;

-- 查看建表语句
SHOW CREATE TABLE student;

4. 修改表结构

sql

cpp 复制代码
-- 添加字段
ALTER TABLE student ADD COLUMN email VARCHAR(100) COMMENT '邮箱';

-- 修改字段类型/属性
ALTER TABLE student MODIFY COLUMN age TINYINT COMMENT '年龄';

-- 修改字段名
ALTER TABLE student CHANGE COLUMN email user_email VARCHAR(100) COMMENT '用户邮箱';

-- 删除字段
ALTER TABLE student DROP COLUMN user_email;

-- 修改表名
ALTER TABLE student RENAME TO student_info;

5. 删除数据表

sql

复制代码
DROP TABLE IF EXISTS student;

四、数据操作:增、删、改

对表内数据进行写入操作,属于 DML(数据操作语言)范畴。

1. 插入数据(INSERT)

sql

cpp 复制代码
-- 插入单条(指定字段)
INSERT INTO student(name, age, gender) VALUES ('张三', 18, '男');

-- 插入多条
INSERT INTO student(name, age, gender) VALUES
('李四', 20, '女'),
('王五', 19, '男'),
('赵六', 21, '女');

-- 全字段插入(不推荐,表结构变更后易出错)
INSERT INTO student VALUES (5, '孙七', 22, '男', NOW());

2. 更新数据(UPDATE)

sql

cpp 复制代码
-- 更新单条记录(必须加 WHERE 条件,否则会更新全表!)
UPDATE student SET age = 20 WHERE id = 1;

-- 同时更新多个字段
UPDATE student SET name = '张三三', gender = '女' WHERE id = 1;

⚠️ 严禁省略 WHERE 子句执行 UPDATE,会导致全表数据被覆盖。

3. 删除数据(DELETE)

sql

复制代码
-- 删除指定记录
DELETE FROM student WHERE id = 5;

-- 清空整张表(保留表结构)
DELETE FROM student;

4. TRUNCATE 与 DELETE 的区别

  • DELETE FROM 表名:逐行删除,可加 WHERE 条件,速度慢,自增主键不会重置
  • TRUNCATE TABLE 表名:直接销毁并重建表,速度极快,自增主键重置,不可加 WHERE,无法回滚

谢谢

相关推荐
李永奉1 小时前
C语言-嵌入式开发C语言常用预处理指令合集
c语言·开发语言
光源【时光寸寸又逢君】2 小时前
第三方平台预览我方级联监控点串流问题排查
c++·iot
jnrjian2 小时前
postgres database 更换用户
数据库·postgresql
键盘会跳舞2 小时前
C++:容器适配器 queue 的源码级拆解
开发语言·c++·queue
無a伟3 小时前
redis缓存完整详解
数据库·redis·缓存
YuforiaCode3 小时前
第十六届蓝桥杯 2025 C/C++组 数列差分
c语言·c++·蓝桥杯
千里之行,始于足下sanhai3 小时前
P8686 [蓝桥杯 2019 省 A] 修改数组 - 数字魔法大冒险 题解
c++·算法·动态规划
小星星闪亮登场3 小时前
Codeforces Round 1115 ( Div. 2)
数据结构·c++·算法·贪心算法·排序算法·codeforces
Loge编程生活3 小时前
打卡信奥刷题(3449)用C++实现信奥题 P10429 [蓝桥杯 2024 省 B] 拔河
开发语言·数据结构·c++·算法·青少年编程