《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.pswp.cn/news/897814.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897814.shtml
英文地址,請注明出處:http://en.pswp.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;尤其是那些用于運行人…