当前位置: 首页 > news >正文

数据库基础概述

一、数据库基础概述

1. 什么是数据库?

数据库(Database, DB)是长期存储在计算机内、有组织、可共享的大量数据集合,由数据库管理系统(DBMS)统一管理,确保数据的安全性、完整性和高效访问。

2. 数据库核心特点

  • 持久化存储:数据存储在磁盘中,断电不丢失。

  • 数据结构化:按表、行、列的形式组织,便于管理和查询。

  • 数据共享性:支持多用户同时访问,减少数据冗余。

  • 数据独立性:数据与应用程序分离,修改数据结构不影响上层应用。

3. 数据库分类

类型特点常见产品
关系型数据库以表格形式存储数据,表与表之间通过外键关联,支持 SQL 查询MySQL、Oracle、SQL Server、PostgreSQL
非关系型数据库(NoSQL)以键值对、文档、列族等形式存储数据,结构灵活,扩展性强Redis、MongoDB、Elasticsearch

4. 数据库系统结构

一个数据库系统包含以下层级:

数据库服务器 → 数据库(Database) → 表(Table) → 行(记录)和列(字段)
  • 一个服务器可包含多个数据库。

  • 一个数据库可包含多个表。

  • 一个表由多行(记录)和多列(字段)组成。


二、MySQL 安装与基础操作

1. MySQL 安装与卸载(Windows)

安装步骤
  1. 下载 MySQL 安装包(推荐 5.7/8.0 稳定版)。

  2. 解压到指定目录(如D:\mysql-8.0)。

  3. 配置环境变量:将bin目录路径添加到系统Path中。

  4. 初始化数据库:mysqld --initialize --console(记录初始密码)。

  5. 安装服务:mysqld --install

  6. 启动服务:net start mysql

卸载步骤
  1. 停止服务:net stop mysql

  2. 卸载服务:mysqld --remove

  3. 删除安装目录和环境变量。

  4. 删除注册表相关项(可选,清理残留配置)。

2. 数据库连接与测试

命令行连接
# 格式:mysql -u 用户名 -p 密码 -h 主机地址 -P 端口号 mysql -u root -p123456 -h localhost -P 3306
图形化工具(SQLyog)
  1. 新建连接,填写主机地址、端口、用户名、密码。

  2. 测试连接,成功后即可可视化管理数据库。


三、SQL 语言基础

SQL(Structured Query Language,结构化查询语言)是关系型数据库的标准操作语言,分为以下几类:

分类全称作用常用语句
DDLData Definition Language数据定义语言,用于定义数据库对象CREATEALTERDROP
DMLData Manipulation Language数据操作语言,用于增删改查数据INSERTUPDATEDELETESELECT
DQLData Query Language数据查询语言,用于查询数据SELECT(通常归为 DML)
DCLData Control Language数据控制语言,用于权限管理GRANTREVOKE

SQL 通用语法规范

  1. 不区分大小写,关键字建议大写(如CREATESELECT)。

  2. 语句以分号;结尾,可单行或多行书写。

  3. 支持注释:

    • 单行注释:-- 注释内容# 注释内容

    • 多行注释:/* 注释内容 */

MySQL 常用数据类型

类型说明示例
INT整数类型INT(11)(默认)、TINYINTBIGINT
VARCHAR可变长度字符串VARCHAR(20)(最大长度 20)
CHAR固定长度字符串CHAR(10)(不足长度用空格填充)
DATE日期类型'2024-05-20'
DATETIME日期时间类型'2024-05-20 12:30:00'
FLOAT/DOUBLE浮点类型FLOAT(5,2)(总长度 5,小数位 2)

四、DDL 数据定义语言

DDL 用于定义和管理数据库、表结构,核心操作包括数据库操作和表操作。

1. 数据库操作

(1)查看所有数据库
SHOW DATABASES;
(2)创建数据库
-- 基本语法 CREATE DATABASE 数据库名; ​ -- 若数据库不存在则创建(推荐,避免报错) CREATE DATABASE IF NOT EXISTS 数据库名; ​ -- 示例:创建名为test_db的数据库 CREATE DATABASE IF NOT EXISTS test_db;
(3)删除数据库
-- 基本语法 DROP DATABASE 数据库名; ​ -- 若数据库存在则删除(推荐) DROP DATABASE IF EXISTS 数据库名; ​ -- 示例:删除test_db数据库 DROP DATABASE IF EXISTS test_db;
(4)切换 / 使用数据库
USE 数据库名; ​ -- 示例:使用test_db数据库 USE test_db;
(5)查看当前使用的数据库
SELECT DATABASE();

2. 表操作

(1)查看当前数据库中的所有表
SHOW TABLES;
(2)创建表
-- 基本语法 CREATE TABLE IF NOT EXISTS 表名 ( 列名1 数据类型 [约束条件], 列名2 数据类型 [约束条件], ... 列名n 数据类型 [约束条件] ); ​ -- 示例:创建学生表student CREATE TABLE IF NOT EXISTS student ( sid INT PRIMARY KEY AUTO_INCREMENT, -- 学号,主键,自增 sname VARCHAR(20) NOT NULL, -- 姓名,非空 age INT, -- 年龄 gender CHAR(1) DEFAULT '男', -- 性别,默认男 email VARCHAR(30) UNIQUE -- 邮箱,唯一 );
(3)查看表结构
-- 方式1:查看表字段信息 DESC 表名; ​ -- 方式2:查看创建表的SQL语句 SHOW CREATE TABLE 表名; ​ -- 示例:查看student表结构 DESC student;
(4)删除表
-- 基本语法 DROP TABLE 表名; ​ -- 若表存在则删除(推荐) DROP TABLE IF EXISTS 表名; ​ -- 示例:删除student表 DROP TABLE IF EXISTS student;
(5)修改表结构(ALTER TABLE
  • 添加列

    ALTER TABLE 表名 ADD 列名 数据类型 [约束条件]; ​ -- 示例:给student表添加address列 ALTER TABLE student ADD address VARCHAR(50);
  • 修改列数据类型 / 长度

    ALTER TABLE 表名 MODIFY 列名 新数据类型 [约束条件]; ​ -- 示例:将sname列长度修改为30 ALTER TABLE student MODIFY sname VARCHAR(30) NOT NULL;
  • 修改列名

    ALTER TABLE 表名 CHANGE 旧列名 新列名 新数据类型 [约束条件]; ​ -- 示例:将gender列名修改为sex ALTER TABLE student CHANGE gender sex CHAR(1) DEFAULT '男';
  • 删除列

    ALTER TABLE 表名 DROP 列名; ​ -- 示例:删除address列 ALTER TABLE student DROP address;
  • 修改表名

    RENAME TABLE 旧表名 TO 新表名; ​ -- 示例:将student表重命名为stu RENAME TABLE student TO stu;

五、DML 数据操作语言

DML 用于对表中的数据进行增、删、改操作,是日常开发中最常用的 SQL 操作。

1. 插入数据(INSERT

(1)插入单条数据(指定列)
INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...); ​ -- 示例:向student表插入一条数据 INSERT INTO student (sname, age, sex, email) VALUES ('张三', 20, '男', 'zhangsan@example.com');
(2)插入单条数据(全列插入)
INSERT INTO 表名 VALUES (值1, 值2, ...); -- 必须按表中列的顺序填写所有值 ​ -- 示例:全列插入(sid为自增列,可写NULL或DEFAULT) INSERT INTO student VALUES (NULL, '李四', 21, '女', 'lisi@example.com');
(3)批量插入数据
INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...); ​ -- 示例:批量插入3条数据 INSERT INTO student (sname, age, sex, email) VALUES ('王五', 22, '男', 'wangwu@example.com'), ('赵六', 20, '女', 'zhaoliu@example.com'), ('孙七', 23, '男', 'sunqi@example.com');

2. 修改数据(UPDATE

基本语法
UPDATE 表名 SET 列名1 = 新值1, 列名2 = 新值2, ... WHERE 条件; -- 条件可选,不写条件会修改所有行(慎用!)
示例
-- 修改单个数据:将学号为1的学生年龄改为21 UPDATE student SET age = 21 WHERE sid = 1; ​ -- 修改多个数据:将所有男生的年龄加1 UPDATE student SET age = age + 1 WHERE sex = '男'; ​ -- 修改所有数据(慎用!):将所有学生的性别改为男 UPDATE student SET sex = '男';

3. 删除数据(DELETE&TRUNCATE

(1)DELETE删除数据
-- 基本语法 DELETE FROM 表名 WHERE 条件; -- 条件可选,不写条件会删除所有行(慎用!) ​ -- 示例:删除学号为1的学生数据 DELETE FROM student WHERE sid = 1; ​ -- 删除所有数据(保留表结构,可回滚) DELETE FROM student;
(2)TRUNCATE清空表
TRUNCATE TABLE 表名; -- 清空表中所有数据,重置自增主键,不可回滚 ​ -- 示例:清空student表 TRUNCATE TABLE student;
DELETEvsTRUNCATE区别
特性DELETETRUNCATE
作用删除指定条件的数据,或清空表清空整个表,重置自增主键
事务支持支持事务,可回滚不支持事务,不可回滚
效率逐条删除,效率较低直接删除表再重建,效率高
自增主键保留当前值重置为初始值(如 1)

六、核心记忆要点

  1. 数据库基础:数据库是长期存储数据的仓库,MySQL 是关系型数据库,支持 SQL 语言。

  2. DDL 操作:创建 / 删除数据库、表,修改表结构(CREATE/ALTER/DROP)。

  3. DML 操作:插入 / 修改 / 删除数据(INSERT/UPDATE/DELETE),注意WHERE条件,避免误操作。

  4. 易错点:

    • UPDATEDELETE不写WHERE条件会修改 / 删除所有数据,务必谨慎。

    • TRUNCATE不可回滚,清空数据前需确认。

    • 字符串类型数据需用单引号包裹,日期类型需符合'YYYY-MM-DD'格式.

http://www.jsqmd.com/news/905896/

相关文章:

  • 2026 排烟防火阀厂家推荐盘点:3C 全认证 + GB15930-2024合规 - 资讯快报
  • 体验TaoToken聚合API的稳定性,在多日连续调用中观察延迟表现
  • 代码即玩法:非典型游戏开发的英文提示词实践
  • 卖真空泵怎么找客户?下游工厂都在哪里
  • Veo 2 API沙箱环境即将下线倒计时!仅剩最后14天迁移窗口,这份跨版本兼容性迁移矩阵请立刻保存
  • CAXA 标注间距
  • 揭秘Java世界中safepoint之调用过程和生命周期解析
  • 基于Arduino与NRF24L01的厨房油烟机智能联动控制系统设计与实现
  • 对比使用前后Taotoken如何让我的模型API账单变得清晰易懂
  • 2025-2026 AI全媒体营销服务商选型 - 资讯快报
  • Arduino驱动MAX7219点阵屏:从SPI通信原理到动态显示实战
  • 【TSP问题】基于遗传算法GA求解TSP问题附Matlab代码
  • 2026国内全域线上推广头部服务商评测:从技术到转化的全方位对决 - GEO优化
  • 基于Arduino与MAX6675的K型热电偶温度监测系统设计与实现
  • 2026论文双降终极榜单:10款降AI率平台,智能改写快速定稿成文
  • 【DeepSeek华为云部署实战指南】:20年架构师亲授5大避坑要点与3小时极速上线方案
  • 卖换热器怎么找客户?下游工厂在哪里
  • 3步解决B站缓存视频播放难题:m4s-converter一站式智能转换方案
  • 拒绝模板化:极具挑战性的英文前端页面需求
  • 什么是扫码出入库?从原理到落地一次讲清楚
  • 卖工业空压机怎么找客户?下游工厂在哪里
  • 3D打印机改造笔式绘图仪:硬件组装、固件配置与G代码生成全攻略
  • 2026年合肥高新区废品回收公司推荐排行榜TOP5 - 速递信息
  • 仅限首批200位架构师获取:Claude原生消息队列设计规范V2.1(含OpenTelemetry埋点模板+Schema Registry治理策略)
  • 算力时代结束,判断力时代开始
  • ctf show web入门260
  • LangGraph 动态工作流:如何在运行时修改 Agent 的执行图谱?
  • 基于Arduino的智能冰箱门未关提醒系统DIY全攻略
  • 火灾动力学方向核心期刊及文献阅读方法整理
  • 基于Arduino与蓝牙模块的无线LCD显示系统:从串口通信到物联网终端实践