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

掌握 MySQL:从命令行操作到数据类型与字段管理

掌握 MySQL:从命令行操作到数据类型与字段管理

MySQL 作为全球最流行的开源关系型数据库管理系统,广泛应用于 Web 开发、数据分析和企业级应用中。无论是初学者还是资深开发者,掌握 MySQL 的基本命令行操作、了解其数据库类型、数据类型、字段管理以及外键的使用,都是必不可少的技能。本文将带你深入探索 MySQL 的核心功能,帮助你在数据库管理中游刃有余。


目录

  1. MySQL 基本命令行操作
  2. 数据库类型
  3. 数据类型字段
  4. 修改字段
  5. 删除字段
  6. 外键(Foreign Key)
  7. 总结

MySQL 基本命令行操作

1. 连接到 MySQL 服务器

要开始使用 MySQL,首先需要连接到 MySQL 服务器。使用以下命令:

mysql -u 用户名 -p

输入密码后,你将进入 MySQL 命令行界面。

2. 创建和删除数据库

  • 创建数据库

    CREATE DATABASE 数据库名;
    
  • 删除数据库

    DROP DATABASE 数据库名;
    

3. 选择数据库

在操作表之前,需要选择要使用的数据库:

USE 数据库名;

4. 创建和删除表

  • 创建表

    CREATE TABLE 表名 (列名1 数据类型,列名2 数据类型,...
    );
    
  • 删除表

    DROP TABLE 表名;
    

5. 查看表结构

DESCRIBE 表名;

数据库类型

MySQL 支持多种存储引擎,每种引擎都有其特点和适用场景。常见的存储引擎包括:

  • InnoDB:支持事务、行级锁定和外键,适合高并发和事务性应用。
  • MyISAM:不支持事务,但查询速度快,适合读密集型应用。
  • Memory:将数据存储在内存中,速度极快,但数据不持久。

在创建表时,可以指定存储引擎:

CREATE TABLE 表名 (...
) ENGINE=InnoDB;

数据类型字段

MySQL 支持多种数据类型,合理选择数据类型可以优化存储和性能。

1. 数值类型

  • INT:整数类型,如 INT, TINYINT, BIGINT
  • FLOAT / DOUBLE:浮点数类型。
  • DECIMAL:精确小数类型,适用于金融数据。

2. 字符串类型

  • CHAR:固定长度字符串,适合存储固定长度的值,如电话号码。
  • VARCHAR:可变长度字符串,适合存储长度不固定的文本。
  • TEXT:大文本类型,适合存储长篇文章。

3. 日期和时间类型

  • DATE:日期,格式为 YYYY-MM-DD
  • TIME:时间,格式为 HH:MM:SS
  • DATETIME:日期和时间,格式为 YYYY-MM-DD HH:MM:SS

4. 其他类型

  • BLOB:二进制大对象,适合存储图片、音频等。
  • ENUM:枚举类型,适合存储有限的选项,如性别、状态等。

示例:创建一个用户表

CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) NOT NULL,email VARCHAR(100) UNIQUE,age TINYINT,created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

在这个例子中:

  • id 是自增的主键,使用 INT 类型。
  • username 是变长字符串,最大长度为 50。
  • email 是唯一的变长字符串,最大长度为 100。
  • age 使用 TINYINT 来存储年龄,范围为 0-255。
  • created_at 使用 DATETIME 类型,默认值为当前时间。

修改字段

在数据库设计中,经常需要对表的字段进行修改。MySQL 提供了 ALTER TABLE 语句来实现这一功能。

1. 添加字段

ALTER TABLE 表名 ADD 列名 数据类型;

示例:为 users 表添加 address 字段

ALTER TABLE users ADD address VARCHAR(255);

2. 修改字段类型

ALTER TABLE 表名 MODIFY 列名 新数据类型;

示例:将 age 字段的类型从 TINYINT 改为 INT

ALTER TABLE users MODIFY age INT;

3. 重命名字段

ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型;

示例:将 username 字段重命名为 user_name

ALTER TABLE users CHANGE username user_name VARCHAR(50);

4. 删除字段

ALTER TABLE 表名 DROP 列名;

示例:删除 address 字段

ALTER TABLE users DROP address;

提示:在修改字段时,务必备份数据,以防意外丢失。


删除字段

删除字段是数据库管理中的一项重要操作,特别是在优化表结构或移除不再需要的数据时。

删除字段示例

ALTER TABLE 表名 DROP 列名;

注意:删除字段将永久删除该字段及其数据,请谨慎操作。


外键(Foreign Key)

外键是用于在两个表之间建立关联的字段,确保数据的一致性和完整性。外键通常指向另一个表的主键。

1. 创建外键

在创建表时,可以通过 FOREIGN KEY 约束来定义外键。

示例:创建 orders 表,并将 user_id 作为外键关联到 users 表的 id

CREATE TABLE orders (order_id INT PRIMARY KEY AUTO_INCREMENT,user_id INT,order_date DATETIME,FOREIGN KEY (user_id) REFERENCES users(id)
);

2. 添加外键约束

如果表已经存在,可以使用 ALTER TABLE 语句添加外键约束。

示例

ALTER TABLE orders
ADD CONSTRAINT fk_user
FOREIGN KEY (user_id) REFERENCES users(id);

3. 外键的约束作用

  • 引用完整性:确保外键字段的值在被引用的表中存在。
  • 级联操作:可以通过设置 ON DELETEON UPDATE 来定义级联操作,如 CASCADESET NULL 等。

示例:设置级联删除

ALTER TABLE orders
ADD CONSTRAINT fk_user
FOREIGN KEY (user_id) REFERENCES users(id)
ON DELETE CASCADE;

这意味着当 users 表中的某条记录被删除时,orders 表中所有关联的记录也会被自动删除。

4. 删除外键约束

ALTER TABLE 表名 DROP FOREIGN KEY 约束名;

示例

ALTER TABLE orders DROP FOREIGN KEY fk_user;

总结

MySQL 作为一款功能强大的数据库管理系统,其命令行操作、数据库类型、数据类型、字段管理以及外键功能为开发者提供了极大的灵活性。通过本文的介绍,你应该已经掌握了 MySQL 的基本操作、字段管理方法以及外键的使用。外键在数据库设计中尤为重要,它不仅帮助维护数据的一致性,还能通过级联操作简化数据管理。

无论是构建简单的 Web 应用还是管理复杂的企业级数据库,MySQL 都是你不可或缺的工具。希望这篇博客能帮助你在 MySQL 的学习和应用中更进一步!如果你有任何问题或建议,欢迎在评论区留言。


关键词:MySQL, 命令行操作, 数据库类型, 数据类型, 字段管理, 外键, Foreign Key, ALTER TABLE, CSDN

相关文章:

掌握 MySQL:从命令行操作到数据类型与字段管理

掌握 MySQL:从命令行操作到数据类型与字段管理 MySQL 作为全球最流行的开源关系型数据库管理系统,广泛应用于 Web 开发、数据分析和企业级应用中。无论是初学者还是资深开发者,掌握 MySQL 的基本命令行操作、了解其数据库类型、数据类型、字…...

基于大语言模型的自动化单元测试生成系统及测试套件评估方法

A System for Automated Unit Test Generation Using Large Language Models and Assessment of Generated Test Suites 翻译于上述论文 基于大语言模型的自动化单元测试生成系统及测试套件评估方法 摘要 单元测试是软件测试生命周期中最基础的测试层级,对确保软…...

使用vue2技术写了一个纯前端的静态网站商城-鲜花销售商城

先给大家看一下网站的整体效果截图: 这个前端静态网站项目主要实现了以下功能: 商城首页、商品分类页、登录注册页、个人中心页、我的收藏页、我的订单页、商品详情页等功能。 最近不是在学习前端开发嘛,肯定要做一些项目来练习以下自己学…...

PyTorch深度学习框架60天进阶学习计划 - 第46天:自动化模型设计(一)

PyTorch深度学习框架60天进阶学习计划 - 第46天:自动化模型设计(一) 第一部分:使用ENAS算法生成图像分类网络 大家好!欢迎来到我们PyTorch深度学习框架60天进阶学习计划的第46天。今天我们要深入探讨一个话题——使用…...

【上海大学计算机系统结构实验报告】多机环境下MPI并行编程

实验目的 学习编制多进程并行程序实现如下功能: 创建多进程,输出进程号和进程数。运行多进程并行例子程序。编程实现大规模矩阵的并行计算。 实验过程及结果分析 实验环境 操作系统:Ubuntu 20.04开发工具:GCC 9.3.0、OpenMPI…...

实用电脑工具,轻松实现定时操作

软件介绍 如果你的电脑有时候需要像个听话的小助手一样,按照你的指令在特定时间做些事情,比如到了点就关机、开机,或者自动打开某个软件,那你可得了解下这个小帮手啦! 小巧功能却不少 程序定时器是一款超实用的电脑…...

jQuery — 动画和事件

介绍 jQuery动画与事件是提升网页交互的核心工具。动画方面,jQuery通过简洁API实现平滑过渡效果,提供预设方法如slideUp(),支持.animate()自定义CSS属性动画,并内置队列系统实现动画链式执行。开发者可精准控制动画速度、回调时机…...

Kubernetes相关的名词解释kube-proxy插件(3)

什么是kube-proxy? kube-proxy 是一个网络代理组件,运行在每个节点(Node)上,是 Kubernetes 服务(Service)功能的核心实现之一。它的主要职责是通过维护网络规则,实现集群内服务&…...

第3章 垃圾收集器与内存分配策略《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》

第3章 垃圾收集器与内存分配策略 3.2 对象已死 Java世界中的所有对象实例,垃圾收集器进行回收前就是确定对象哪些是活着的,哪些已经死去。 3.2.1 引用计数算法 常见的回答是:给对象中添加一个引用计数器,有地方引用&#xff0…...

MCP是什么?为什么突然那么火?

什么是MCP? MCP全称为Model Context Protocol(模型上下文协议),是由Anthropic公司在2024年11月推出的一个开源协议。Anthropic是一家以其开发的Claude大语言模型而闻名的公司。MCP旨在提供一个通用的开放标准,以简化大型语言模型…...

与终端同居日记:Linux指令の进阶撩拨手册

前情提要: 当你和终端的关系从「早安打卡」进阶到「深夜代码同居」,那些曾经高冷的指令开始展露致命の反差萌—— man 是那个永远在线的钢铁直男说明书,只会说:"想懂我?自己看文档!"&#xff08…...

STM32单片机入门学习——第42节: [12-2] BKP备份寄存器RTC实时时钟

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.19 STM32开发板学习——第42节: [12-2] BKP备份寄存器&RTC实时时钟 前言开发板说…...

AI 驱动抗生素发现:从靶点到化合物测试

AI 驱动抗生素发现:从靶点到化合物测试 目录 基于 AI 驱动的研发流程发现抗生素,整合靶点选择和深度学习分子生成,显著提升了候选药物发现效率。结合数据平衡技术,机器学习和 AutoML 能有效提升不平衡数据集分类性能。RibbonFold 是一种新的 AI 模型,可以准确预测淀粉样蛋…...

群晖威联通飞牛等nas如何把宿主机硬盘挂接到可道云docker容器中

可道云系统是用户常用的一款面向个人用户的轻量级私有云存储工具,以高效管理和安全存储为核心,打造便捷的数字化办公体验。但是用户希望把原有其他磁盘中文件挂接到这个新系统中有很大的难度,主要是对linux文件系统理解有很大的误区,认为目录结构是固定的…...

用 R 语言打造交互式叙事地图:讲述黄河源区生态变化的故事

目录 🌟 项目背景:黄河源头的生态变迁 🧰 技术栈介绍 🗺️ 最终效果预览 💻 项目构建步骤 1️⃣ 数据准备 2️⃣ 构建 Leaflet 地图 3️⃣ 使用 scrollama 实现滚动触发事件 4️⃣ 使用 R Markdown / Quarto 打包发布 🎬 效果展示截图 📦 完整代码仓库 …...

opencv(双线性插值原理)

双线性插值是一种图像缩放、旋转或平移时进行像素值估计的插值方法。当需要对图像进行变换时,特别是尺寸变化时,原始图像的某些像素坐标可能不再是新图像中的整数位置,这时就需要使用插值算法来确定这些非整数坐标的像素值。 双线性插值的工…...

Flutter 弹窗队列管理:实现一个线程安全的通用弹窗队列系统

在开发复杂的 Flutter 应用时,弹窗的管理往往是一个令人头疼的问题。尤其是在多个弹窗需要按顺序显示,或者弹窗的显示需要满足特定条件时,手动管理弹窗的显示和隐藏不仅繁琐,还容易出错。为了解决这个问题,我们可以实现…...

Linux压缩与解压命令完全指南:tar.gz、zip等格式详解

Linux压缩与解压命令完全指南:tar.gz、zip等格式详解 在Linux系统中,文件压缩和解压是日常操作中不可或缺的一部分。本文将全面介绍Linux下常用的压缩和解压命令,包括tar.gz、tar、zip等格式的区别和使用方法,帮助你高效管理文件…...

doris/clickhouse常用sql

一、doris常用SQL 1、doris统计数据库的总大小(单位:MB) SELECT table_schema AS database_name,ROUND(SUM(data_length) / 1024 / 1024, 2) AS database_size_MB FROM information_schema.tables WHERE table_schema NOT IN (information…...

实现AWS Lambda函数安全地请求企业内部API返回数据

需要编写一个Lambda函数在AWS云上运行,它需要访问企业内部的API获取JSON格式的数据,企业有网关和防火墙,API有公司的okta身份认证,通过公司的域账号来授权访问,现在需要创建一个专用的域账号,让Lambda函数访…...

【Easylive】Interact与Web服务调用实例及网关安全拦截机制解析

【Easylive】项目常见问题解答(自用&持续更新中…) 汇总版 easylive-cloud-interacteasylive-cloud-web 1. 不同服务(web和interact)之间的调用方式 调用流程 • 角色分工: • easylive-cloud-web:作…...

【HDFS】EC重构过程中的校验功能:DecodingValidator

一、动机 DecodingValidator是在HDFS-15759中引入的一个用于校验EC数据重构正确性的组件。 先说下引入DecodingValidator的动机,据很多已知的ISSUE(如HDFS-14768, HDFS-15186, HDFS-15240,这些目前都已经fix了)反馈, EC在重构的时候可能会有各种各样的问题,导致数据错误…...

Chromium 134 编译指南 macOS篇:编译优化技巧(六)

1. 引言 在Chromium 134的开发过程中,优化编译速度是提升开发效率的关键因素。本文将重点介绍如何使用ccache工具来加速C/C代码的编译过程,特别是在频繁切换分支和修改代码时。通过合理配置和使用这些工具,您将能够显著减少编译时间&#xf…...

FPGA——基于DE2_115实现DDS信号发生器

FPGA——基于DE2_115实现DDS信号发生器 文章目录 FPGA——基于DE2_115实现DDS信号发生器一、实验要求二、实现过程(1)新建工程 二、波形存储器ROM(1)方波模块(2)正弦波形存储器(3)锁…...

PHP中的ReflectionClass讲解【详细版】

快餐: ReflectionClass精简版 在PHP中,ReflectionClass是一个功能强大的反射类,它就像是一个类的“X光透视镜”,能让我们在程序运行时深入了解类的内部结构和各种细节。 一、反射类的基本概念和重要性 反射是指在程序运行期间获…...

嵌入式面试题解析:常见基础知识点详解

在嵌入式领域的面试中,基础知识点的考察尤为重要。下面对一些常见面试题进行详细解析,帮助新手一步步理解。 一、原码、反码、补码及补码的好处 题目 什么叫原码、反码、补码?计算机学科引入补码有什么好处? 在计算机科学中&a…...

GPU渲染阶段介绍+Shader基础结构实现

GPU是什么 (CPU)Center Processing Unit:逻辑编程 (GPU)Graphics Processing Unit:图形处理(矩阵运算,数据公式运算,光栅化) 渲染管线 渲染管线也称为渲染流水线&#x…...

08-DevOps-向Harbor上传自定义镜像

harbor创建完成,往harbor镜像仓库中上传自定义的镜像,包括新建项目、docker配置镜像地址、镜像重命名、登录harbor、推送镜像这几个步骤,具体操作如下: harbor中新建项目 访问级别公开,代表任何人都可以拉取仓库中的镜…...

C++学习之路,从0到精通的征途:vector类的模拟实现

目录 一.vector的介绍 二.vector的接口实现 1.成员变量 2.迭代器 (1)begin (2)end 3.容量操作 (1)size,capacity (2)reserve (3)resize…...

嵌入式软件--stm32 DAY 2

大家学习嵌入式的时候,多多学习用KEIL写代码,虽然作为编译器,大家常用vscode等常用工具关联编码,但目前keil仍然是主流工具之一,学习掌握十分必要。 1.再次创建项目 1.1编译器自动生成文件 1.2初始文件 这样下次创建新…...

多模态大语言模型arxiv论文略读(二十九)

Temporal Insight Enhancement: Mitigating Temporal Hallucination in Multimodal Large Language Models ➡️ 论文标题:Temporal Insight Enhancement: Mitigating Temporal Hallucination in Multimodal Large Language Models ➡️ 论文作者:Li Su…...

【人工智能学习-01-01】20250419《数字图像处理》复习材料的word合并PDF,添加页码

前情提要 20250419今天是上师大继续教育人工智能专升本第一学期的第一次线下课。 三位老师把视频课的内容提炼重点再面授。(我先看了一遍视频,但是算法和图像都看不懂,后来就直接挂分刷满时间,不看了) 今天是面对面授…...

B端APP设计:打破传统限制,为企业开启便捷新通道

B端APP设计:打破传统限制,为企业开启便捷新通道 在数字化转型浪潮中,企业级移动应用正突破传统管理系统的功能边界,演变为连接产业链各环节的核心枢纽。本文从技术架构革新、交互模式进化、安全防护升级三个维度,系统…...

【多线程5】面试常考锁知识点

文章目录 悲观/乐观锁挂起等待锁/自旋锁偏向锁轻量级/重量级锁锁升级CASCAS引发的ABA问题解决方案 原子类 公平/不公平锁可重入锁ReentrantLock读写锁 Callable接口 这里的“悲观”“乐观”“挂起等待”“自旋”“轻量级”“重量级”“公平”“非公平”“可重入”仅代表某个锁的…...

Linux第一个系统程序——进度条

1.回车与换行 回车(CR, \r): 作用:将光标移动到当前行的行首(最左侧),但不换到下一行。 历史来源:源自打字机的“回车”操作——打字机的滑架(Carriage)需…...

C 语 言 --- 指 针 3

C 语 言 --- 指 针 3 函 数 指 针函 数 指 针 数 组代 码 解 释回 调 函 数 - - - qsort模 拟 实 现 qsort 函 数 总结 💻作 者 简 介:曾 与 你 一 样 迷 茫,现 以 经 验 助 你 入 门 C 语 言 💡个 人 主 页:笑口常开x…...

蓝桥杯之递归

1.数字三角形 题目描述 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和(路径上的每一步只可沿左斜线向下或右斜线向下走)。 输…...

学习笔记十八——Rust 封装

🧱 Rust 封装终极指南:结构体、模块、Trait、目录结构与模块引用 🧭 目录导航 什么是封装?Rust 的封装理念Rust 的封装工具总览模块(mod)和访问控制(pub)详解结构体和枚举&#xff…...

【面试向】点积与注意力机制,逐步编码理解自注意力机制

点积(dot product)两个向量点积的数学公式点积(dot product)与 Attention 注意力机制(Attention)注意力机制的核心思想注意力机制中的缩放点积自注意力机制中,谁注意谁? 逐步编码理解…...

基础数学知识-线性代数

1. 矩阵相乘 c i j = a i k ∗ b k j c_{ij} = a_{ik} * b_{kj} cij​=aik​∗bkj​ 1. 范数 1. 向量的范数 任意一组向量设为 x ⃗ = ( x 1 , x 2 , . . . , x N ) \vec{x}=(x_1,x_2,...,x_N) x =(x1​,x2​,...,xN​) 如下: 向量的1范数: 向量的各个元素的绝对值之和∥ …...

【KWDB 创作者计划】_上位机知识篇---Docker容器

文章目录 前言1. Docker 容器是什么?隔离性轻量级可移植性可复用性 2. Docker 核心概念镜像容器仓库Dockerfile 3. Docker 基本使用(1) 安装 Docker(2) 容器生命周期管理(3) 镜像管理(4) 进入容器内部(5) 数据持久化(挂载卷)(6) 网络管理 4. …...

指针函数和函数指针

指针函数本质是一个函数,只是函数的返回值是指针类型 函数指针本质是一个指针,只是这个指针指向的是一个函数 指针函数 函数有很多类型的返回值,例如 short funcA(参数列表) // 表示该函数返回值是一个short类型 void funcA(参数列表) // 表…...

案例驱动的 IT 团队管理:创新与突破之路:第六章 组织进化:从案例沉淀到管理体系-6.1 案例库建设方法论-6.1.2案例分级与标签体系

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 案例分级与标签体系构建方法论:IT团队知识管理的结构化实践1. 案例库建设的战略价值与核心挑战1.1 案例管理的战略定位1.2 分级标签体系的核心价值 2. 案例分级体…...

sqlilabs-Less之HTTP头部参数的注入——基础篇

Less-18 user-agent报错注入 这一关的代码漏洞点出现在了insert语句,因为这里没有对user-agent和ip_address进行过滤,,并且输出了mysql的错误信息 补充知识点 PHP里用来获取客户端IP的变量 $_SERVER[HTTP_CLIENT_IP] #这个很少使用&#xf…...

java多线程相关内容

java线程创建的方式 一共有四种方式 继承 Thread 类:本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例 启动线程的唯一方 法就是通过 **Thread 类的 start()**实例方法。start()方法是一个 native 方法,它将启动一个新线 程&…...

Windows Server .NET Core 应用程序部署到 IIS 解决首次访问加载慢的问题

第一篇: Windows .NET Core 应用程序部署到 IIS 解决首次访问加载慢的问题 第二篇:Windows Server .NET Core 应用程序部署到 IIS 解决首次访问加载慢的问题 第三篇:Windows .NET Core 应用程序部署到 IIS 解决首次访问加载慢的问题 设置…...

ubuntu24.04上使用qemu+buildroot+uboot+linux+tftp+nfs模拟搭建vexpress-ca9嵌入式linux开发环境

1 准备工作 1.1 安装依赖工具 sudo apt-get update && sudo apt-get install build-essential git bc flex libncurses5-dev libssl-dev device-tree-compiler1.2 安装arm交叉编译工具链 sudo apt install gcc-arm-linux-gnueabihf安装之后,在终端输入ar…...

Cocos Creater打包安卓App添加隐私弹窗详细步骤+常见问题处理

最终演示效果,包含所有代码内容 + 常见错误问题处理 点击服务协议、隐私政策,跳转到相关网页, 点击同意进入游戏,不同意关闭应用 一,添加Activity,命名为MyLaunchActivity 二,编写MyLaunchActivity.java的内容 package com.cocos.game.launch;import android.os.Bund…...

UI文件上传

1、文件上传:文件上传是自动化中比较麻烦棘手的部分。 有些场景我们需要上传本地文件到项目里。这种比较麻烦,因为需要点开文件上传的窗口后,打开的是windows的文件选择窗口, 而selenium是无法操作这个窗口的。 selenium只能操作…...

2.凸包优化求解

1.减而治之(Decrease and Conquer) 插入排序 典型的减而治之算法就是插入排序方法 插入排序法: 在未排序中选择一个元素,插入到已经排序号的序列中 将凸包也采用减而治之的方法 2.In-Convex-Polygon Test 怎么判断引入的极点存在于多边形里面还是外面&#xff1…...