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

数分-MySQL基础01

数分-MySQL基础01

  • 基础概念
    • MySQL数据库对象
  • MySQL的架构
    • MySQL客户端和服务器端连接方式
      • 命令行连接方式
      • 图形化客户端连接
  • SQL语言
    • 分类
    • 通用语法(所有数据库)
    • DDL语句
      • 数据库DDL
      • 数据表DDL
      • 表字段DDL
    • 数据类型
    • 字段约束

基础概念

  1. 数据库(Database, DB):按照一定数据结构组织、存储、管理数据的集合。
  2. 数据库管理系统(DBMS)
    (1)定义:管理数据库的软件系统,负责数据的增删改查、安全、备份、恢复等。
    (2)MySQL(开源免费、轻量级、高性能)就是一个典型的关系型数据库管理系统。
    (3)核心功能:数据定义(创建库、表、字段);数据操作(增删改查);数据控制(用户权限、事务);数据备份与恢复
  3. 关系型数据库(RDBMS):基于关系模型的数据库,用行列二维表格的形式存储数据。
    核心特点:
    → 数据以表为单位存储;
    → 表与表之间通过关系关联;
    → 使用SQL(结构化查询语言)操作数据。

MySQL数据库对象

  1. (Table):数据库中最基本的数据存储单位,由行和列组成的二维表格。
  2. (Column)/字段(Field):表中的标题,表示数据的一个属性。
    属性:
    → 数据类型(int、varchar、datetime 等);
    → 长度;
    → 是否允许为空(null/not null);
    → 默认值(default);
    → 约束(主键、外键、唯一键等)
    例如:用户表中的id、username、password、create_time。
  3. (Row)/记录(Record):表中的水平方向,表示一条完整的数据。
    例如:用户表中(1, ‘Ming’, ‘123456’, ‘2026-05-12 20:00:00’)就是一条记录。
  4. 主键(Primary Key):表中唯一标识一条记录的列或列组合。
    特性:
    → 唯一性(主键值不能重复);
    → 非空性(主键值不能为null);
    → 一个表只能有一个主键。
    作用:快速定位一条记录;建立表之间的关联。
  5. 外键(Foreign Key):引用另一个表主键的列,用于建立表与表之间的关系。
  6. 索引(Index):为了提高数据查询速度而建立的一种数据结构。

MySQL的架构

MySQL 采用客户端-服务器(C/S)架构,分为客户端和服务器两部分:

  1. 客户端(Client):向服务器发送 SQL 请求,接收并显示结果。
    常见客户端:命令行客户端(mysql.exe);图形化客户端(DataGrip、Navicat、DBeaver);编程语言客户端(Python、Java、PHP 等)。
  2. 服务器端(Server):接收客户端请求,处理 SQL 语句,返回结果。
  3. 存储引擎(Storage Engine):MySQL 中负责数据存储和提取的底层软件模块。
    MySQL 的独特优势:支持插件式存储引擎,可以根据不同需求选择不同的引擎。
    最常用的存储引擎:
存储引擎特点适用场景
InnoDB支持事务、行级锁、外键、崩溃恢复默认引擎,绝大多数业务场景
MyISAM不支持事务,表级锁,速度快只读数据、临时表、日志表
Memory数据存在内存中,速度极快,断电丢失缓存、临时计算

MySQL客户端和服务器端连接方式

命令行连接方式

命令格式(远程服务器连接):mysql -h 主机地址 -P 端口号 -u 用户名 -p [密码] [数据库名]

参数说明默认值
主机地址(Host)MySQL 服务器的 IP 地址或域名localhost(本地)
端口(Port)MySQL 服务监听的端口3306
用户名(Username)数据库账号root(默认管理员)
密码(Password)对应账号的密码安装时设置
数据库名(Database)要连接的具体数据库(可选)不指定则连接到服务器

连接成功标志:出现mysql>
退出连接:mysql> exit/quit
本地默认连接:mysql -u 用户名 -p[密码] [数据库名]
注意:密码推荐不在命令行明文输入,回车后再输入
例如:

# 密码不在命令行明文输入,回车后再输入mysql-uroot-p# 连接本地的 sakila 数据库mysql-uroot-psakila# 连接 IP 为 192.168.1.100,端口为 3306 的远程服务器mysql-h192.168.1.100-P3306-uanalyst-p

图形化客户端连接

MySQL与PyCharm连接(社区版PyCharm-右侧未有Database选项,Python,MySQL均已安装):

  1. 下载插件Database Navigator,并应用;
  2. 点击DB Navigator -> Database Browser;
  3. 点击“+” -> MySQL;
  4. 在弹出的窗口中依次完成下图中的1-5个步骤;
  5. 弹出连接成功的窗口,即完成连接。

SQL语言

分类

SQL(Structured Query Language,结构化查询语言)是操作关系型数据库的标准通用语言。

  1. 数据定义语言(DDL,Data Definition Language)
    用于定义数据库对象,包括数据库、数据表、字段/列等。
  2. 数据操作语言(DML,Data Manipulation Language)
    用于操作数据库中的表记录,包括新增、修改、删除。
  3. 数据查询语言(DQL,Data Query Language)
    用于查询数据库中的表记录。
  4. 数据控制语言(DCL,Data Control Language)
    用于管理数据库用户的权限和安全,包括创建用户、授权、撤销权限等。

通用语法(所有数据库)

  1. SQL 不区分大小写。
    关键字:SELECT / select 完全一样。
    习惯:关键字大写,表名字段小写,方便阅读。
  2. 一条语句可以单行或多行书写,但语句结尾必须加分号“;”,代表一条 SQL 结束;
  3. 单行注释:-- 注释内容(注释内容与符号中间必须有空格);# 注释内容;
  4. 多行注释:/* 多行注释 */;
  5. 空格、换行不影响执行,可随意换行排版,增强语句的可读性;
  6. 字符串必须用单引号’',不用双引号;
  7. 字段别名、表别名直接空格隔开。

DDL语句

作用:用来定义、修改、删除数据库/表/索引等数据库结构,不操作表里的数据。
核心关键字create创建,drop删除,alter修改,show查看,truncate清空表结构数据。

数据库DDL

  1. 创建数据库
# 创建数据库createdatabase数据库名称;# 数据库不存在时,创建数据库createdatabaseifnotexists数据库名称;# 指定编码创建createdatabase数据库名称charset='utf8';createdatabaseifnotexists数据库名称defaultcharactersetutf8mb4;
  1. 查看、使用数据库
# 查看目前所有数据库showdatabases;# 切换使用指定的数据库use数据库名称;# 查看当前正在使用的数据库selectdatabase();# 查看指定数据库创建信息,例如码表showcreatedatabase数据库名称;
  1. 删除数据库
# 不存在则不删除,避免报错dropdatabaseifexists数据库名称

注意:删除后数据库内所有数据表与数据全部永久丢失,无法回复。

  1. 修改数据库字符集
alterdatabase数据库名称defaultcharactersetutf8mb4;

数据表DDL

  1. 创建数据表
-- []中的内容可选createtable[ifnotexists]表名(字段名1数据类型[约束条件],字段名2数据类型[约束条件]);

常用字段约束:primary key主键(唯一性,非空),auto_increment自增长,not null非空,unique唯一,default设置默认值
示例:

createtableifnotexistsstudent(-- 字段名1为sid, 数据类型为int, 约束条件为主键、自增长, 添加备注'学生编号'(用户看)sidintprimarykeyauto_incrementcomment'学生编号',-- 字段名2为sname, 数据类型为varchar,最大长度为100, 约束条件非空snamevarchar(100)notnullcomment'学生姓名',ageintdefault18comment'学生年龄',genderchar(2)comment'性别',emailvarchar(50)uniquecomment'邮箱')engine=innodbdefaultcharset=utf8mb4comment'学生信息表';
  1. 查看表相关信息
-- 查看当前库中的所有数据表showtables;-- 快速查看指定数据表的具体结构,包括字段、类型、约束desc表名;-- 查看完整建表语句showcreatetable表名;
  1. 修改表名、删除数据表
-- 修改指定数据表名称altertable表名renameto新表名;renametable表名to新表名;-- 删除指定的数据表droptable[ifexists]表名;

注意:删除后表结构和表里所有数据全部清空。

表字段DDL

  1. 添加表字段
# 格式altertable表名add字段名 数据类型[约束条件];# 示例altertablestudentaddphonechar(11)notnullunique;
  1. 修改字段

——修改字段 数据类型 / 约束

# 格式altertable表名modify字段名 新数据类型[新约束条件];# 示例altertablestudentmodifysnamevarchar(30)notnull;

——修改字段 名 + 数据类型/约束

# 格式altertable表名 change 旧字段名 新字段名 数据类型[新约束条件];# 示例altertablestudent change age stu_ageint;

注意:修改字段未写入新约束条件时,原有全部约束会直接丢失清空,例如原有的 not null 非空约束消失,变回默认 null 状态。
3. 删除字段

# 格式altertable表名drop字段名;# 示例altertablestudentdropaddress;

数据类型

  1. 数值类型(存数字)
类型占用空间使用场景
tinyint1字节年龄、状态、少量数字
int4字节编号、id、数量、常用整数
bigint8字节订单号、长数字
float4字节普通小数,不精准
double8字节双精度小数,不精准
decimal(m,d)自定义金额、价格、财务数据,精准小数

注意:存钱、金额一律用 decimal,不用 float/double;decimal(10,2) 表示共存10位数,小数占2位。

  1. 字符串类型(存文字)
类型特点用法
char(n)固定长度手机号、身份证、性别,长度固定
varchar(n)可变长度姓名、地址、简介
text长文本文章内容、长篇备注

区别:char 写多少占多少空间,查询快;varchar 用多少占多少,节省空间。

  1. 日期时间类型
类型格式用法
dateyyyy-mm-dd只存日期
timehh:mm:ss只存时间
datetime日期 + 时间登录时间、创建时间等

字段约束

在数据类型限制的基础上额外增加的要求。

  1. primary key 主键约束
    ——唯一标识一条数据,非空且唯一,一张表只能有一个主键。
  2. auto_increment 自增约束
    ——数值自动往上累加,不用手动赋值,只能用于整型主键。
  3. unique 唯一约束
    ——字段值不能重复,但可以为空;手机号、邮箱、身份证常用。
  4. default 默认值约束
    ——不填数据时,自动使用默认值。
  5. foreign key 外键约束
    ——让两张表建立关联,保证数据完整性,只能在 innodb 引擎使用,从表字段引用主表主键。
    即:对关系字段进行约束,当为关系字段赋值时,会到关联的表中查询此值是否存在,若存在则填写成功,不存在则填写失败,抛出异常。
  6. 空值约束
    ——null:允许为空,默认状态
    ——not null:禁止为空,必须赋值。
  7. comment 字段 / 表注释
    ——字段后:comment '说明'给字段添加备注;表末尾:comment '表用途'给整张表加备注。只做阅读提示,不限制数据。
http://www.jsqmd.com/news/862079/

相关文章:

  • Allen-Bradley 280D-F12Z-10B-CR启动控制模块
  • Go语言并发编程:sync包深度解析与实践
  • 升官发财送开封汴绣礼品推荐
  • 【Linux驱动开发】第10天:设备树零基础入门——DTS/DTB/DTC全解+编译流程
  • AI论文软件的实战手册:什么程度算学术不端?
  • Aeneas终极指南:3步搞定音频文本自动对齐,准确率超95%
  • 【Linux驱动开发】第11天:设备树(Device Tree)超详细全解:从诞生背景到工作原理
  • 如何构建更接近真实交通的自动驾驶仿真世界:数字孪生、风险重构与物理感知全栈实践
  • 编译和链接+预处理
  • 从塑料感→博物馆级质感,Midjourney材质进阶全路径:Chaos=0.3+Texture Boost+--style raw三重锁频技术,限时公开
  • ElevenLabs高棉文语音私有化部署终极方案(含Docker+Khmer IPA音素映射表),仅限前200位技术负责人获取
  • 为什么这款文档转换工具能同时实现高效与精准?揭秘Marker的核心优势
  • 2026.5.12【芯片设计面试经验分享】上海车载芯片设计公司
  • 079.自监督学习预训练:在无标签数据上预训练YOLO骨干网络
  • ElevenLabs挪威文语音API调用全链路拆解,从HTTP头配置到SSML韵律标记实战,零基础30分钟上线商用级语音
  • rk3588/rk3576使用rkllm推理大模型,提供OpenAI服务
  • VCG Mesh平滑整形
  • AI赋能光伏电站智能运维:边缘计算网关如何成为运维中枢?
  • AI 的持续学习:从会话中提取可复用知识
  • 一文搞懂 Linux 驱动并发与竞争(学习笔记)
  • 2026年工业胶粘材料国产化趋势白皮书:PI 金手指胶带的高温性能与应用突破
  • 深入拆解 MySQL InnoDB 隔离级别:从 MVCC 到临键锁
  • Go语言内存管理:从tcmalloc到GC优化
  • 2026年AI写作辅助网站实测排行,哪款真正适合写论文?
  • AI 术语通俗词典:LSTM
  • 注释与常用快捷键
  • Harness Engineering:智能体异常处理机制
  • 080.领域自适应:当你的YOLO在新车间“水土不服”时
  • 算法28,前缀和,寻找数组中的中心下标
  • C语言06(操作符)