《MySQL数据库从零搭建到高效管理|表的增删改查(基础)》

目录

引言:

一、表的操作

1.1 创建学生表

 1.2 查看表结构

1.3 删除表

1.4 修改表名

1.5 添加字段

1.6 修改字段

1.7 删除字段

1.8 小结

二、CRUD

2.1 新增(Create)数据

2.2 查询(Retrieve)数据

2.3 修改(Update)数据

2.4 删除(Delete)数据

2.5 小结


引言:

在数据库中,表(Table) 是最基础也最重要的数据结构。然而,许多开发者在初次接触MySQL时,往往只关注SQL查询的编写,却忽视了表操作的重要性。一个设计不当的表结构,可能导致数据冗余、查询性能低下,甚至引发数据一致性问题。

本文将带您深入MySQL表操作的每一个细节,从基础的DDL语句到高级的优化策略,助您构建出高效、稳定、易维护的数据表结构。


一、表的操作

想要操作数据库中的表时,需要先使用该数据库:(以数据库school为例)

use school;

 注释:在 SQL 中可以使用"--空格+描述"来表示注释说明


1.1 创建学生表

create table 表名(字段名 字段类型,字段名 字段类型,字段名 字段类型,字段名 字段类型
);-- 或者
create table 表名(字段名 字段类型,字段名 字段类型,字段名 字段类型,字段名 字段类型);

可以使用 comment 增加字段说明。示例:

create table student(id int,name varchar(20) comment '姓名',gender varchar(20) comment '性别',phone varchar(20) comment '电话'
);

常用数据类型: 

  • int:整型
  • decimal(M,D):浮点数类型
  • varchar(size):字符串类型
  • timestamp:日期类型

 1.2 查看表结构

desc 表名;


1.3 删除表

-- 删除student表
drop table student;-- 如果存在student表,则删除student表
drop table if exists student;

1.4 修改表名

alter table 表名 rename to 新表名;


1.5 添加字段

alter table 表名 add 字段名 字段类型 [约束];


1.6 修改字段

alter table 表名 change 旧字段名 新字段名 字段类型 [约束];


1.7 删除字段

alter table 表名 drop 字段名;

1.8 小结

-- 创建表
create table 表名(字段名 字段类型,字段名 字段类型,字段名 字段类型,字段名 字段类型);-- 查看库中的表
show tables;-- 查看表结构
desc 表名;-- 删除
drop table 表名;-- 修改表名
alter table 表名 rename to 新表名;-- 添加字段
alter table 表名 add 字段名 字段类型 [约束];-- 修改字段
alter table 表名 change 旧字段名 新字段名 字段类型 [约束];-- 删除字段
alter table 表名 drop 字段名;

二、CRUD

CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)

学习表的增删查改的前提是,我们得先有一张表才行。

-- 1.创建数据库school
create database school;-- 2.使用数据库
use school;-- 3.建表
create table student(id int,name varchar(20) comment '姓名',gender varchar(20) comment '性别',phone varchar(20) comment '电话'
);

2.1 新增(Create)数据

insert into 表名 [(列,列,列,列...)] values(值,值,值,值...);
-- 此处的值,要和列相匹配(列的个数和类型)
-- 带上[ ] 为指定列插入 不带为默认全列插入

单行数据 + 全列插入

insert into student values (1,'刘备','男','112233');
insert into student values (2,'关羽','男','123456');
insert into student values (3,'张飞','男','778833');

多行数据 + 指定列插入:

insert into student (id,name,gender) values(4,'吕布','男'),(5,'貂蝉','女'),(6,'赵云','男');

 


2.2 查询(Retrieve)数据

SELECT[DISTINCT] {* | {column [, column] ...} [FROM table_name][WHERE ...][ORDER BY column [ASC | DESC], ...]LIMIT ...

示例:

-- 创建考试表
CREATE TABLE exam_result (id INT,name VARCHAR(20),chinese DECIMAL(3,1),math DECIMAL(3,1),english DECIMAL(3,1)
);-- 插入测试数据
INSERT INTO exam_result (id,name, chinese, math, english) VALUES(1,'唐三藏', 67, 98, 56),(2,'孙悟空', 87.5, 78, 77),(3,'猪悟能', 88, 98.5, 90),(4,'曹孟德', 82, 84, 67),(5,'刘玄德', 55.5, 85, 45),(6,'孙权', 70, 73, 78.5),(7,'宋公明', 75, 65, 30);

全列查询

select * from 表名;-- 通常情况下不建议使用 * 进行全列查询
-- 1.查询的列越多,意味着要传输的数据量越大
-- 2.可能会影响索引的使用(索引会在后续提到)


 指定列查询

select 列名,列名,列名 from 表名;


查询字段为表达式

-- 查询所有同学的总分(语文 + 数学 + 英语)
select id,name,chinese + math + english from exam_result;


为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称:

select 列/表达式 as 别名 from 表名;


去重查询:DISTINCT

select distinct 列名 from 表名;

排序:ORDER BY

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT ... FROM 表名 [WHERE ...] ORDER BY 列名 [ASC|DESC];

条件查询:WHERE

比较运算符:

运算符说明
>, >=, <, <=大于,大于等于,小于,小于等于
=等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>等于,NULL 安全,例如 NULL <=> NULL 的结果是TRUE
!=, <>不等于
between a0 and a1范围匹配,[a0, a1],如果 a0 <= values <= a1,返回TRUE
in(a,b,c...)如果是a,b,c...其中的任意一个,返回TRUE
IS NULL是 NULL
IS NOT NULL不是 NULL
LIKE
模糊匹配。 % 表示任意多个(包括 0 个)任意字符; _ 表示任意一个字符

逻辑运算符:

运算符说明
AND与。多个条件必须都为 TRUE,结果才是 TRUE
OR或。任意一个条件为 TRUE, 结果为 TRUE
NOT非。条件为 TRUE,结果为 FALSE

注意:

  • WHERE条件可以使用表达式,但不能使用别名
  • AND 的优先级高于 OR ,在同时使用时,需要使用小括号 () 包裹优先执行的部分

2.3 修改(Update)数据

update 表名 set 列名 = 值 [WHERE ...];
-- 将所有同学的语文成绩更新为原来的 2 倍
UPDATE exam_result SET chinese = chinese * 2;-- 将孙悟空同学的数学成绩变更为 80 分
UPDATE exam_result SET math = 80 WHERE name = '孙悟空';-- 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
UPDATE exam_result SET math = 60, chinese = 70 WHERE name = '曹孟德';


2.4 删除(Delete)数据

delete from 表名 [WHERE ...] [ORDER BY ...];
-- 删除孙悟空同学的考试成绩
DELETE FROM exam_result WHERE name = '孙悟空';

-- 删除整张表数据
-- 准备测试表
CREATE TABLE for_delete (id INT,name VARCHAR(20)
);
-- 插入测试数据
INSERT INTO for_delete (name) VALUES ('A'), ('B'), ('C');
-- 删除整表数据
DELETE FROM for_delete;


2.5 小结

  • 新增
    -- 单行插入
    insert into 表名 [(列,列,列,列...)] values(值,值,值,值...);-- 多行插入
    insert into 表名 (字段1, ... , 字段n) values(value1,...),(value2,...),(value3,...);
  • 查询
    -- 全列查询
    select * from 表-- 指定列查询
    select 字段1,字段2... from 表-- 查询表达式字段
    select 字段1 + 100,字段2 + 字段3 from 表-- 别名
    select 字段1 as 别名1, 字段2 as 别名2 from 表-- 去重DISTINCT
    select distinct 字段 from 表-- 排序ORDER BY
    select * from 表 order by 排序字段-- 条件查询WHERE:
    -- (1)比较运算符 (2)BETWEEN ... AND ... (3)IN (4)IS NULL (5)LIKE (6)AND (7)OR (8)NOT
    select * from 表 where 条件
  • 修改
    update 表 set 字段1 = value1, 字段2=value2 ... [where ...];
  • 删除
    delete from 表名 [WHERE ...] [ORDER BY ...];

 积跬步,以致千里

下章预告——> 约束

本专栏内容均以 MySQL 8.0 为案例

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

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

相关文章

建筑管理(2): 施工承包模式,工程监理,质量监督

文章目录 一. 施工承包模式1. 施工总承包模式1.1 施工总承包的特点1.2 施工总承包模式中的承包方 2. 平行承包模式3. 联合体与合作体承包模式 二. 工程监理1. 强制实行监理的工程范围1.1 国家重点建设工程1.2 大中型公用事业工程(重点)1.3 成片开发建设的住宅小区工程1.4 必须实…

Spring Boot与Apache Ignite集成:构建高性能分布式缓存和计算平台

1. 前言 1.1 什么是Apache Ignite Apache Ignite是一个高性能的分布式内存计算平台,支持内存缓存、分布式计算、流处理和机器学习等功能。它提供了低延迟的数据访问和强大的计算能力,适用于需要高性能和可扩展性的应用。 1.2 为什么选择Apache Ignite 高性能:Ignite利用内…

REST 请求返回 Invalid Credentials

REST 请求返回 “Invalid Credentials”&#xff08;无效凭据&#xff09;&#xff0c;通常表示身份验证失败。可能的原因和解决方案如下&#xff1a; 可能的原因 & 解决方案 用户名或密码错误 确保使用正确的用户名和密码。如果 API 需要 Base64 编码的 Authorization 头…

C++Primer学习(6.7 函数指针——难!)

6.7 函数指针 (这一章节比较难) 函数指针指向的是函数而非对象。和其他指针一样&#xff0c;函数指针指向某种特定类型。函数的类型由它的返回类型和形参类型共同决定&#xff0c;与函数名无关。例如: //比较两个 string 对象的长度 bool lengthCompare(const string &,co…

高级java每日一道面试题-2025年2月26日-框架篇[Mybatis篇]-Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式 ?

如果有遗漏,评论区告诉我进行补充 面试官: Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式 ? 我回答: 在Java高级面试中讨论MyBatis如何将SQL执行结果封装为目标对象并返回的过程时&#xff0c;我们可以从过程细节和映射形式两个方面来综合解答这个问…

react(一):特点-基本使用-JSX语法

初识React React是一个用于构建用户界面的 JavaScript 库&#xff0c;由 Facebook 开发和维护。 官网文档&#xff1a;React 官方中文文档 特点 1.声明式编程 2.组件化开发 3.多平台适配 开发依赖 开发React必须依赖三个库&#xff1a; 1.react&#xff1a;包含react所必…

【Python+HTTP接口】POST请求不同请求头构造

1、{‘Content-Type’: ‘application/json’} import requestsbody {"name1": "value1","name2": "value2"} requests.post(urlurl, databody)2、{“Content-Type”: “application/x-www-form-urlencoded; charsetUTF-8”} impor…

Java常用API:String与ArrayList的设计哲学与实践应用

在Java编程中&#xff0c;API&#xff08;应用程序编程接口&#xff09;是开发者最强大的工具之一。它们封装了复杂的底层逻辑&#xff0c;提供了简洁的调用方式。本文将聚焦Java中两个最常用的API——String和ArrayList&#xff0c;从底层原理到实际应用&#xff0c;结合深度思…

Python的字符串优雅优化策略:特定编码 -> Unicode码点 -> UTF-8(可自定义)

Python利用唯一uni-pot中介打理&#xff0c;任意制式输出&#xff08;首选uyf-8&#xff09;。 笔记模板由python脚本于2025-03-14 23:37:04创建&#xff0c;本篇笔记适合喜欢探究字符串编码细节的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值&#xff1a;在于输出思…

linux 时间同步(阿里云ntp服务器)

1、安装ntp服务 rootlocalhost ~]# yum -y install ntp 已加载插件&#xff1a;fastestmirror, langpacks Loading mirror speeds from cached hostfile* base: mirrors.nju.edu.cn* centos-sclo-rh: mirrors.nju.edu.cn* centos-sclo-sclo: mirrors.huaweicloud.com* epel: m…

虚拟化数据恢复—重装系统服务器崩了的数据恢复过程

虚拟化数据恢复环境&故障&#xff1a; VMware虚拟化平台 vmfs文件系统 工作人员误操作重装操作系统&#xff0c;服务器崩溃。 重装系统会导致文件系统元文件被覆盖。要恢复数据&#xff0c;必须找到&提取重装系统前的文件系统残留信息&#xff0c;通过提取出来的元文件…

微信开发者工具内建终端使用不了npm,但是cmd可以

下载cnpm并配置镜像源 终端cmd&#xff1a; npm install -g cnpm --registryhttp://registry.npmmirror.com 打开微信开发者工具&#xff0c;找到方框的文件右击选择内建终端打开 初始化&#xff1a; npm init -y 发现npm没有此命令 关闭微信开发工具&#xff0c;用管理…

vue/react/vite前端项目打包的时候加上时间最简单版本,防止后端扯皮

如果你是vite项目&#xff0c;直接写一个vite的插件&#xff0c;通过这个插件可以动态注入环境变量&#xff0c;然后当打包的时候&#xff0c;自动注入这个时间到环境变量中&#xff0c;然后在项目中App.vue中或者Main.tsx中打印出来&#xff0c;这就知道是什么时候编译的项目了…

element-plus中Autocomplete自动补全输入框组件的使用

目录 1.基本使用 ①从官网赋值如下代码 ②查看运行效果 ③代码解读 2.调用后端接口&#xff0c;动态获取建议数据 结语 1.基本使用 ①从官网赋值如下代码 <template> <div><!-- 自动补全输入框 --><el-autocompletev-model"state":fetc…

DeFi开发的深度解析与展望

去中心化金融&#xff08;DeFi&#xff09;作为区块链技术的一个重要应用&#xff0c;近年来在金融领域掀起了一股创新浪潮。它不仅为用户提供了更加便捷、高效的金融服务&#xff0c;还重新定义了传统金融的运作方式。本文将围绕DeFi开发的核心要素、应用场景、面临的问题以及…

思维链医疗编程方法论框架(Discuss V1版)

思维链医疗编程方法论框架 1. 方法论核心定义 思维链医疗编程方法论是一种结合结构化思维链(Chain of Thought)与医疗领域需求的系统化编程实践框架,旨在通过分步逻辑推理、知识整合与动态反馈,提升医疗软件/算法的开发效率、准确性与可解释性。该方法论的关键在于通过清晰…

HarmonyOS第21天:解锁分布式技术,开启跨设备协同新体验

一、HarmonyOS 分布式技术&#xff1a;开启万物互联新时代 在物联网蓬勃发展的今天&#xff0c;设备之间的互联互通不再是遥不可及的梦想&#xff0c;而是真切融入日常生活的现实。从智能家居设备的联动控制&#xff0c;到智能办公场景中的高效协作&#xff0c;再到智能出行中的…

2025移动端软件供应链安全开源治理方案最佳实践

2025年3月13日&#xff0c;由中国软件评测中心、CAPPVD漏洞库联合主办的“第六期移动互联网APP产品安全漏洞技术沙龙”在海口成功召开。悬镜安全基于移动端数字供应链安全开源治理方案荣获中国软件评测中心“2024移动互联网APP产品安全漏洞治理”优秀案例&#xff0c;并获颁证书…

【Go学习】04-1-Gin框架-路由请求响应参数

【Go学习】04-1-Gin框架 初识框架go流行的web框架GinirisBeegofiber Gin介绍Gin快速入门 路由RESTful API规范请求方法URI静态url路径参数模糊匹配 处理函数分组路由 请求参数GET请求参数普通参数数组参数map参数 POST请求参数表单参数JSON参数 路径参数文件参数 响应字符串方式…

哈尔滨算力服务器托管推荐-青蛙云

哈尔滨年平均气温3.5摄氏度&#xff0c;有发展云计算和算力数据中心的天然优势 &#xff0c;今天为哈尔滨算力服务器托管服务商&#xff1a;青蛙云&#xff0c;黑龙江经营17年的老牌IDC服务商。 先来了解下算力服务器&#xff1a; 算力服务器&#xff0c;尤其是那些用于运行人…