【数据库系列】MySQL基础知识:深入理解DDL、DML与DQL操作

在这里插入图片描述

MySQL是一个开源的关系型数据库管理系统(RDBMS),广泛用于数据存储和管理。理解MySQL的基本操作至关重要,尤其是数据定义语言(DDL)、数据操作语言(DML)和数据查询语言(DQL)。本文将详细介绍这三种语言的概念、对应的操作及其具体的命令和用法。

一、DDL, DML, DQL概述

1. 数据定义语言(DDL)

数据定义语言(DDL)用于定义和管理数据库的结构和架构。它主要涉及数据库对象的创建、修改和删除,包括表、索引、视图等。DDL操作通常会立即生效,并且对数据库的结构进行永久性更改。

对应的操作

  • 创建数据库和表:使用CREATE命令定义新的数据库或表结构。
  • 修改表结构:使用ALTER命令对现有表的结构进行更改,比如添加新列、修改列类型或删除列。
  • 删除数据库或表:使用DROP命令彻底移除数据库或表,从而删除所有相关数据。

2. 数据操作语言(DML)

数据操作语言(DML)用于处理数据库中的数据。它允许用户对表中的数据进行插入、更新和删除等操作。DML操作通常会影响数据的内容,而不改变数据库的结构。

对应的操作

  • 插入新记录:使用INSERT命令将新数据添加到表中,可以是单条或多条记录。
  • 更新现有记录:使用UPDATE命令修改表中已有的记录,基于特定条件。
  • 删除记录:使用DELETE命令从表中移除特定的数据行。

3. 数据查询语言(DQL)

数据查询语言(DQL)用于从数据库中检索数据。最常用的DQL命令是SELECT,它允许用户选择特定的列或行,并根据条件过滤结果。DQL主要用于数据的读取和显示,不会对数据库中的数据造成任何更改。

对应的操作

  • 查询数据:使用SELECT命令从一个或多个表中提取数据,支持特定列的选择。
  • 过滤查询结果:通过WHERE子句指定条件,以限制返回的记录。
  • 排序和分组查询:使用ORDER BY对结果进行排序,使用GROUP BY对数据进行分组,以便进行聚合计算。

二、数据定义语言(DDL)

DDL是数据库管理的基础,主要用于定义数据库的结构。以下是一些常用的DDL命令的详细介绍:

1. CREATE

用于创建数据库和表。

创建数据库
CREATE DATABASE my_database;
  • 说明:创建一个名为my_database的新数据库。
创建表
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100),email VARCHAR(100) UNIQUE,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
  • 说明:创建一个名为users的表,包含四个字段:
    • id:自增主键。
    • name:用户姓名,最大长度100个字符。
    • email:用户邮箱,唯一字段。
    • created_at:创建时间,默认值为当前时间。

2. ALTER

用于修改现有数据库对象的结构。

修改表结构
-- 添加新列
ALTER TABLE users ADD COLUMN age INT;-- 修改列的数据类型
ALTER TABLE users MODIFY COLUMN name VARCHAR(150);-- 删除列
ALTER TABLE users DROP COLUMN age;
  • 说明
    • 添加新列age
    • 修改name列的数据类型。
    • 删除age列。

3. DROP

用于删除数据库或表。

-- 删除表
DROP TABLE users;-- 删除数据库
DROP DATABASE my_database;
  • 说明:删除users表和my_database数据库,将永久移除相关数据。

三、数据操作语言(DML)

DML用于对数据库中的数据进行操作。以下是DML的常用命令及其详细用法:

1. INSERT

用于向表中添加新记录。

插入单条记录
INSERT INTO users (name, email, age) VALUES ('Alice', 'alice@example.com', 25);
插入多条记录
INSERT INTO users (name, email, age) VALUES 
('Bob', 'bob@example.com', 30),
('Charlie', 'charlie@example.com', 22);
  • 说明:向users表中插入一条或多条新记录。

2. UPDATE

用于更新表中已有的记录。

UPDATE users SET age = 26 WHERE name = 'Alice';
  • 说明:将nameAlice的用户的age更新为26。

3. DELETE

用于从表中删除记录。

DELETE FROM users WHERE name = 'Alice';
  • 说明:删除nameAlice的用户记录。

四、数据查询语言(DQL)

DQL主要用于从数据库中检索数据,最常用的命令是SELECT。以下是DQL的详细介绍:

1. SELECT

用于查询表中的数据。

查询所有列
SELECT * FROM users;
  • 说明:查询users表中的所有列。
查询特定列
SELECT name, email FROM users;
  • 说明:仅查询nameemail两列。

2. WHERE

用于指定查询条件,过滤结果。

SELECT * FROM users WHERE age > 20;
  • 说明:查询age大于20岁的用户。

3. ORDER BY

用于对查询结果进行排序。

SELECT * FROM users ORDER BY created_at DESC;
  • 说明:按照created_at字段降序排列查询结果。

4. JOIN

用于连接多个表,以获取更复杂的数据。

SELECT users.name, orders.total
FROM users
JOIN orders ON users.id = orders.user_id;
  • 说明:查询users表和orders表中用户姓名和订单总额,通过user_id连接。

5. GROUP BY

用于对结果进行分组。

SELECT age, COUNT(*) AS count
FROM users
GROUP BY age;
  • 说明:统计每个年龄段的用户数量。

总结

MySQL的DDL、DML和DQL构成了数据库操作的基础。掌握这些基本命令,能够帮助开发者有效地创建和管理数据库、处理数据以及进行复杂的查询。不论是在个人项目还是在企业级应用中,了解这些基础知识都是至关重要的。通过实践和不断的学习,用户可以更好地利用MySQL进行数据管理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/61139.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PAT1085 Perfect Sequence(25)

//判断是否是连续的数 //判断是否只能第一个数是最小值 #include <cstdio> #include <algorithm> typedef long long ll; using namespace std; int n,p; const int maxn 100010; int arr[maxn];int binary(int l, int r, ll tgt){if(arr[n-1] < tgt) return n…

Shell 编程基础知识

为什么要学 Shell&#xff1f; 学一个东西&#xff0c;我们大部分情况都是往实用性方向着想。从工作角度来讲&#xff0c;学习 Shell 是为了提高我们自己工作效率&#xff0c;提高产出&#xff0c;让我们在更少的时间完成更多的事情。 很多人会说 Shell 编程属于运维方面的知…

深入浅出UART驱动开发与调试:从基础调试到虚拟驱动实现

往期内容 本专栏往期内容&#xff1a;Uart子系统 UART串口硬件介绍深入理解TTY体系&#xff1a;设备节点与驱动程序框架详解Linux串口应用编程&#xff1a;从UART到GPS模块及字符设备驱动 解UART 子系统&#xff1a;Linux Kernel 4.9.88 中的核心结构体与设计详解IMX 平台UART驱…

Linux网络——IO模型和多路转接

通常所谓的IO&#xff0c;其本质就是等待通信和进行通信&#xff0c;即IO 等 拷贝。 那么想要做到高效的IO&#xff0c;就要在单位时间内&#xff0c;减少“等”的比重。 一.五种IO模型 阻塞 IO: 在内核将数据准备好之前, 系统调用会一直等待. 所有的套接字, 默认都是阻塞方…

VM Virutal Box的Ubuntu虚拟机与windows宿主机之间设置共享文件夹(自动挂载,永久有效)

本文参考如下链接 How to access a shared folder in VirtualBox? - Ask Ubuntu &#xff08;1&#xff09;安装增强功能&#xff08;Guest Additions&#xff09; 首先&#xff0c;在网上下载VBoxGuestAdditions光盘映像文件 下载地址&#xff1a;Index of http://…

AI的魔力:如何为开源软件注入智慧,开启无限可能

“AI的魔力&#xff1a;如何为开源软件注入智慧&#xff0c;开启无限可能” 引言&#xff1a; 在科技发展的浪潮中&#xff0c;开源软件生态一直扮演着推动创新与共享的重要角色。从Linux到Python&#xff0c;开源项目赋予了开发者全球协作的机会&#xff0c;推动了技术的飞速…

IThenticate 查重有无免费午餐?深度解析

经历过论文“折磨”的过来人&#xff0c;深知查重工具是写论文不可或缺的助手。而 iThenticate 查重系统&#xff0c;深受出版商、学术机构和研究人员喜爱。不过&#xff0c;每次看到它那昂贵的价格&#xff0c;就让很多小伙伴直呼&#xff0c;IThenticate查重系统就没有免费的…

启动SpringBoot

前言&#xff1a;大家好我是小帅&#xff0c;今天我们来学习SpringBoot 文章目录 1. 环境准备2. Maven2.1 什么是Maven2.2 创建⼀个Maven项⽬2.3 依赖管理2.3.1 依赖配置2.3.2 依赖传递2.3.4 依赖排除2.3.5 Maven Help插件&#xff08;plugin&#xff09; 2.4 Maven 仓库2.6 中…

DHCP服务(包含配置过程)

目录 一、 DHCP的定义 二、 使用DHCP的好处 三、 DHCP的分配方式 四、 DHCP的租约过程 1. 客户机请求IP 2. 服务器响应 3. 客户机选择IP 4. 服务器确定租约 5. 重新登录 6. 更新租约 五、 DHCP服务配置过程 一、 DHCP的定义 DHCP&#xff08;Dynamic Host Configur…

使用 Certbot 为 Nginx 自动配置 SSL 证书

1.安装Certbot和Nginx插件 sudo apt-get update sudo apt-get install certbot python3-certbot-nginx 2.获取和安装证书 运行Certbot自动安装SSL证书。注意替换 your_domain sudo certbot --nginx -d your_domain Certbot将自动与Lets Encrypt的服务器通信&#xff0c;验证域…

ros2键盘实现车辆: 简单的油门_刹车_挡位_前后左右移动控制

参考: ROS python 实现键盘控制 底盘移动 https://blog.csdn.net/u011326325/article/details/131609340游戏手柄控制 1.背景与需求 1.之前实现过 键盘控制 底盘移动的程序, 底盘是线速度控制, 效果还不错. 2.新的底盘 只支持油门控制, 使用线速度控制问题比较多, 和底盘适配…

DICOM医学影像应用篇——窗宽窗位概念、原理及实现详解

目录 窗宽窗位调整&#xff08;Windowing&#xff09;在DICOM医学影像中的应用 窗宽窗位的基本概念 窗宽&#xff08;Window Width, WW&#xff09; 窗位&#xff08;Window Level, WL&#xff09; 窗宽窗位调整的基本原理 映射逻辑 数学公式 窗宽窗位调整的C实现 代码…

天锐绿盾加密软件与Ping32联合打造企业级安全保护系统,确保敏感数据防泄密与加密管理

随着信息技术的飞速发展&#xff0c;企业在日常经营过程中产生和处理的大量敏感数据&#xff0c;面临着越来越复杂的安全威胁。尤其是在金融、医疗、法律等领域&#xff0c;数据泄漏不仅会造成企业巨大的经济损失&#xff0c;还可能破坏企业的信誉和客户信任。因此&#xff0c;…

HarmonyOS:@Provide装饰器和@Consume装饰器:与后代组件双向同步

一、前言 Provide和Consume&#xff0c;应用于与后代组件的双向数据同步&#xff0c;应用于状态数据在多个层级之间传递的场景。不同于上文提到的父子组件之间通过命名参数机制传递&#xff0c;Provide和Consume摆脱参数传递机制的束缚&#xff0c;实现跨层级传递。 其中Provi…

【Spring MVC】如何运用应用分层思想实现简单图书管理系统前后端交互工作

前言 &#x1f31f;&#x1f31f;本期讲解关于SpringMVC的编程思想之应用分层~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那…

【Linux】项目自动化构建工具-make/Makefile

【Linux】项目自动化构建工具-make/Makefile make 和 makefile 的概念如何清理项目推导过程Linux第⼀个小程序−倒计时 &#x1f30f;个人博客主页&#xff1a;个人主页 make 和 makefile 的概念 make是一个命令工具&#xff0c;是一个解释makefile中指令的命令工具&#xf…

arcgis for js点击聚合要素查询其包含的所有要素

功能说明 上一篇讲了实现聚合效果, 但是点击聚合效果无法获取到该聚合点包含的所有点信息 这一篇是对如何实现该功能的案例 实现 各属性说明需要自行去官网查阅 官网案例 聚合API 没空说废话了, 加班到12点,得休息了, 直接运行代码看效果就行, 相关重点和注意事项都在代码注…

【计算机视觉】图像基本操作

1. 数字图像表示 一幅尺寸为MN的图像可以用矩阵表示&#xff0c;每个矩阵元素代表一个像素&#xff0c;元素的值代表这个位置图像的亮度&#xff1b;其中&#xff0c;彩色图像使用3维矩阵MN3表示&#xff1b;对于图像显示来说&#xff0c;一般使用无符号8位整数来表示图像亮度&…

javaweb-day03-前端零碎

1.Ajax &#xff08;1&#xff09;概述 &#xff08;2&#xff09;原生Ajax-繁琐&#xff0c;现已基本弃用 2.Ajax-Axios &#xff08;2&#xff09;案例 3.前端工程化 3.1 基础 3.2 vue项目 &#xff08;1&#xff09;项目目录结构 &#xff08;2&#xff09;主要开发…

论文阅读:A Software Platform for Manipulating theCamera Imaging Pipeline

论文代码开源链接&#xff1a; A Software Platform for Manipulating the Camera Imaging Pipelinehttps://karaimer.github.io/camera-pipeline/摘要&#xff1a;论文提出了一个Pipline软件平台&#xff0c;可以方便地访问相机成像Pipline的每个阶段。该软件允许修改单个模块…