數據庫造神計劃第五天---增刪改查(CRUD)(1)

??????🔥個人主頁:尋星探路

🎬作者簡介:Java研發方向學習者

📖個人專欄:《從青銅到王者,就差這講數據結構!!!》、?《JAVA(SE)----如此簡單!!!》、《數據庫那些事!!!》

??人生格言:沒有人生來就會編程,但我生來倔強!!!



目錄

一、Create 新增

1、語法

2、示例

2.1單行數據全列插入

2.2單行數據指定列插入

2.3多行數據指定列插入

二、Retrieve 檢索

1、語法

2、示例

2.1構造數據

3、Select

3.1全列查詢

3.2指定列查詢

3.3查詢字段為表達式

3.3.1常量表達式

3.3.2把所有學生的語文成績加10分

3.3.3計算所有學生語文、數學和英語成績的總分

3.4為查詢結果指定別名

3.4.1語法

3.4.2示例

3.5結果去重查詢

4、where條件查詢

4.1語法

4.2比較運算符

4.3邏輯運算符

4.4示例

4.4.1基本查詢

4.4.2AND和OR

4.4.3范圍查詢

4.4.4模糊查詢

4.4.5NULL的查詢


CURD是對數據庫中的記錄進?基本的增刪改查操作:

? Create(創建)

? Retrieve(讀取)

? Update(更新)

? Delete(刪除)

? ? ? ? 作為Java后端開發,未來的主要工作之一就是CRUD

一、Create 新增

1、語法

INSERT [INTO] table_name[(column [, column] ...)]
VALUES (value_list) [, (value_list)] ...value_list: value, [, value] ...

2、示例

# 創建?個?于演?的表
create table users (id bigint,name varchar(20) comment '?戶名'
);

2.1單行數據全列插入

????????value_list 中值的數量必須和定義表的列的數量及順序?致

# 插入第一條記錄
insert into users values (1, '張三');# 插入第二條記錄
insert into users values (2, '李四');

#注:

2.2單行數據指定列插入

????????value_list 中值的數量必須和指定列數量及順序?致

# 指定了具體要插?的列
insert into users(id, name) values (3, '王五');

2.3多行數據指定列插入

????????在?條INSERT語句中也可以指定多個value_list,實現?次插入多行數據

# 每個value_list表???數據
insert into users(id, name) values (4, '趙六'), (5, '錢七');

二、Retrieve 檢索

1、語法

SELECT[DISTINCT]select_expr [, select_expr] ...[FROM table_references][WHERE where_condition][GROUP BY {col_name | expr}, ...][HAVING where_condition][ORDER BY {col_name | expr } [ASC | DESC], ... ][LIMIT {[offset,] row_count | row_count OFFSET offset}]

2、示例

2.1構造數據

#創建表結構
CREATE TABLE exam (id BIGINT,name VARCHAR(20) COMMENT '同學姓名',chinese float COMMENT '語?成績',math float COMMENT '數學成績',english float COMMENT '英語成績'
);#插?測試數據 
INSERT INTO exam (name, chinese, math, english) VALUES(1, '唐三藏', 67, 98, 56),(2, '孫悟空', 87, 78, 77),(3, '豬悟能', 88, 98, 90),(4, '曹孟德', 82, 84, 67),(5, '劉?德', 55, 85, 45),(6, '孫權', 70, 73, 78),(7, '宋公明', 75, 65, 30);

3、Select

3.1全列查詢

????????查詢所有記錄

# 使? * 可以查詢表中所有列的值
select * from exam;

#注:上述屬于數據庫的危險操作!!!在公司中,會有很多的環境,同樣的代碼不同的環境運行的結果就可能不同,所以select * 在生產環境上執行很可能出現問題!!!

3.2指定列查詢

????????查詢所有?的編號、姓名和語?成績

select id,name,chinese from exam;

????????在select后面的查詢列表中指定希望查詢的列,可以是一個也可以是多個,中間?逗號隔開指定列的順序與表結構中的列的順序無關

3.3查詢字段為表達式

3.3.1常量表達式
# 表達式本?就是?個常數
select id,name,10 from exam;

# 也可以是常量的運算
select id,name,10+1 from exam;

3.3.2把所有學生的語文成績加10分
# 表達式中包含?個字段
select id,name,chinese+10 from exam;

3.3.3計算所有學生語文、數學和英語成績的總分
 # 表達式包含多個字段
select id, name, chinese + math + english  from exam;

3.4為查詢結果指定別名

3.4.1語法
 SELECT column [AS] alias_name [, ...] FROM table_name;

AS 可以省略,別名如果包含空格必須用單引號包裹

3.4.2示例

????????為總分這?列指定別名

#為總分這?列指定別名
select id, name, chinese + math + english as 總分 from exam;

#注:

(1)不僅可以給表達式起別名,還可以給表起別名!!!

(2)起別名是為了增強代碼的可讀性(代碼的可讀性>代碼的高效執行)

3.5結果去重查詢

????????行與行之間去重(記錄和記錄之間去重)

(1)查詢當前所有的數學成績

# 通過觀察有兩條98的記錄
select math from exam;

(2)在結果集中去除重復記錄,可以使用DISTINCT

# 去重查詢
select distinct math from exam;

#注:

(1)使用DISCTINCT去重時,只有查詢列表中所有列的值都相同才會判定為重復

(2)查詢時不加限制條件會返回表中所有結果,如果表中的數據量過大,會把服務器的資源消耗殆盡

(3)在生產環境不要使不加限制條件的查詢

4、where條件查詢

????????查詢的時候,指定條件,符合條件的行被查詢出來,不符合條件的就跳過~~

4.1語法

SELECTselect_expr [, select_expr] ... [FROM table_references]WHERE where_condition

4.2比較運算符

#注:

(1)NULL可以參與運算,但是運算結果都是NULL

(2)(NULL==NULL=>NULL=>false)(NULL<=>NULL=>true)

(3)我們談到區間,大多數時候都是“前閉后開”,但是between and是“前閉后閉”!!!

4.3邏輯運算符

4.4示例

4.4.1基本查詢

????????查詢英語不及格的同學及英語成績(<60)

select name, english from exam where english < 60;

條件查詢執行過程:
????????1)遍歷這個表的每一行數據~~
????????2)把這一行數據, 代入到條件中
????????3)如果條件成立(true),此時把這個行加入到結果集合中,如果條件不成立(false),這一行直接跳過
????????4)當完成所有的遍歷過程之后,此時得到了結果集合,還需要根據 select 指定的列/表達式/別名/去重操作
????????5)再針對結果集合做進一步處理~~

????????查詢語文成績高于英語成績的同學

select name, chinese, english from exam where chinese > english;

????????總分在200分以下的同學

select name, chinese + math + english as 總分 from exam where chinese + math + english < 200;

4.4.2AND和OR

????????查詢語文成績大于80分且英語成績大于80分的同學

select * from exam where chinese > 80 and english > 80;

????????查詢語文成績大于80分或英語成績大于80分的同學

select * from exam where chinese > 80 OR english > 80;

????????觀察AND和OR的優先級

select * from exam where chinese > 80 or math > 70 and english > 70;

select * from exam where (chinese > 80 or math > 70) and english > 70;

? ? ? ? 由此可見,and優先級要更高一些,但是和前面一樣,盡量加括號,不要去記優先級

4.4.3范圍查詢

????????語文成績在[80,90]分的同學及語文成績

# 使?BETWEEN AND 實現
select name, chinese from exam where chinese between 80 and 90;
# 使? AND 實現
select name, chinese from exam where chinese >= 80 and chinese <= 90;

????????數學成績是78或者79或者98或者99分的同學及數學成績

# 使?IN實現
select name, math from exam where math in (78, 79, 98, 99);
# 使?OR實現
select name, math from exam where math = 78 or math = 79 or math = 98 or math = 99;

#注:

? ? ? ? between and 描述的是連續的區間~~
????????in 描述的是離散的集合~~

4.4.4模糊查詢

%:0個或者任意個任意字符
_:1 個任意字符

????????查詢所有姓孫的同學

select * from exam where name like '孫%';

????????查詢姓孫且姓名共有兩個字同學

 select * from exam where name like '孫_';

#注:SQL 使用 like 進行模糊匹配, 通常是一個"低效操作"

????????SQL 的模糊匹配功能其實是非常弱的~~
????????編程圈子中,對于模糊匹配, 有一套成熟的解決方案,正則表達式~~

例:

4.4.5NULL的查詢

????????構造數據

 # 寫??條數據,英語成績為NULLinsert into exam values (8, '張?', 27, 0, NULL);

????????查詢英語成績為NULL的記錄?????

????????查詢英語成績不為NULL的記錄

 # 使?is not null
select * from exam where english is not null;

????????NULL與其他值進?運算結果為NULL

 # 觀察結果中的總分
select name, chinese + math + english as 總分 from exam;

#注:

(1)WHERE條件中可以使用表達式,但不能使用別名

(2)AND的優先級高于OR,在同時使用時,建議使用小括號()包裹優先執行的部分

(3)過濾NULL時不要使用等于號(=)與不等于號(!=,<>)

(4)NULL與任何值運算結果都為NULL

????????由于內容較多,會分為多篇講解,預知后續內容,請看后續博客!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/100427.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/100427.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/100427.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于Vue3的人工智能生成內容標識服務平臺前端頁面設計

效果圖&#xff1a;素材庫&#xff1a;App.vue<template><div id"app"><!-- 頭部導航 --><Header /><!-- 主要內容區域 --><main class"main-content"><div class"container"><!-- 強制性國家標準…

使用 MyCat 實現 MySQL 主從讀寫分離

文章目錄使用 MyCat 實現 MySQL 主從讀寫分離完整指南一、MySQL 讀寫分離基礎概述1.1 讀寫分離工作原理1.2 為什么需要讀寫分離1.3 讀寫分離的兩種實現方式主流讀寫分離中間件對比二、MyCat 中間件簡介2.1 MyCat 核心功能2.2 MyCat 適用場景三、環境準備與 MyCat 安裝3.1 前提&…

物聯網傳感器檢測實驗

/*------------------------------------------------------------------------------ * @文件名 : handle * @描述 : 用戶處理函數 * @作者 : 物聯網項目組 * @日期 : 2023/04/01 * @版本 : V0.0.2 *****************************…

什么是dirsearch、xray、durpsuite、sqlmap?

你提到的 dirsearch、xray、durpsuite&#xff08;可能為筆誤&#xff0c;推測是 ??Burp Suite??&#xff09;和 sqlmap 均為網絡安全領域中常用的工具&#xff0c;主要用于 Web 應用的安全測試、漏洞檢測或滲透測試。以下分別詳細說明&#xff1a;??1. dirsearch????…

lamp腳本部署

#!/bin/bash #關閉防火墻和selinux systemctl stop firewalld systemctl disable firewalld setenforce 0 #配置yum網絡源 echo “正在配置yum倉庫” rm -rf /etc/yum.repos.d/* wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &am…

Redis Hash數據類型深度解析:從命令、原理到實戰場景

前言 在Redis的眾多數據結構中&#xff0c;Hash&#xff08;哈希&#xff09;類型占據著至關重要的地位。Redis本身就是一個高性能的鍵值&#xff08;Key-Value&#xff09;數據庫&#xff0c;其底層的鍵值對便是通過哈希方式組織的。而Hash數據類型則更進一步&#xff0c;它允…

【C++實戰?】解鎖C++文件操作:從基礎到實戰的進階之路

目錄一、文件操作的基本概念1.1 文件的分類與打開方式1.2 文件流的概念與相關類&#xff08;ifstream、ofstream、fstream&#xff09;1.3 文件操作的基本流程二、文本文件的讀寫實戰2.1 文本文件的打開與關閉2.2 文本文件的寫入操作&#xff08;<< 運算符、write 函數&a…

從C++開始的編程生活(9)——模板初階

前言 本系列文章承接C語言的學習&#xff0c;需要有C語言的基礎才能學會哦~ 第8篇主要講的是有關于C的模板初階。 C才起步&#xff0c;都很簡單&#xff01;&#xff01; 目錄 前言 模板初階 基本語法 函數模板的實例化 顯式實例化的作用 類模板 基本語法 模板初階 模板…

計算機網絡——傳輸層(25王道最新版)

傳輸層傳輸層提供的服務進程 端口號 傳輸層協議之間的關系socket套接字有鏈接 VS 無連接 | 可靠 VS 不可靠UDP數據報及檢驗數據報格式檢驗方法TCPTCP協議的三大階段TCP報文段格式&#xff08;很重要&#xff09;建立連接&#xff08;三次握手&#xff09;&#xff08;超級超級重…

羽毛球地板:從專業運動場景到全民健身市場的技術躍遷與產業重構

在全球體育產業向“專業化大眾化”雙軌并行的趨勢下&#xff0c;羽毛球地板作為運動場景的核心基礎設施&#xff0c;正經歷從單一功能型產品向“性能優化場景適配智能管理”一體化解決方案的轉型。據QYResearch統計&#xff0c;2031年全球羽毛球地板市場規模將達15.95億元&…

R 語言查看類庫源碼的方法

你想查看 getGEO&#xff08;來自 R 語言 GEOquery 包&#xff09;的源碼&#xff0c;這能幫你更好理解其工作原理和數據處理細節。由于 getGEO 是 R 函數&#xff0c;查看方法與 Python 有所不同。下面為你提供幾種主要方法。 方法 適用場景 關鍵命令/操作 在 R 控制臺直接查看…

SQL,posexplode 用法示例

示例1 -- 創建測試數據 WITH test_data AS (SELECT array(apple, banana, cherry) as fruits ) SELECT pos, col FROM test_data LATERAL VIEW posexplode(fruits) t AS pos, col;結果 pos | col ----|------- 0 | apple 1 | banana 2 | cherry示例2 -- 假設有一個用戶表…

數據庫造神計劃第十天---數據庫約束(1)

&#x1f525;個人主頁&#xff1a;尋星探路 &#x1f3ac;作者簡介&#xff1a;Java研發方向學習者 &#x1f4d6;個人專欄&#xff1a;《從青銅到王者&#xff0c;就差這講數據結構&#xff01;&#xff01;&#xff01;》、 《JAVA&#xff08;SE&#xff09;----如此簡單&a…

知微傳感Dkam系列3D相機SDK例程篇:CSharp連接相機及保存數據

序言 寫在前面 本人從事機器視覺細分的3D相機行業。編寫此系列文章主要目的有&#xff1a; 1、便利他人應用相機&#xff0c;本系列文章包含公司所出售相機的SDK的使用例程及詳細注釋&#xff1b;2、促進行業發展及交流。 知微傳感Dkam系列3D相機可以應用于定位分揀、焊接焊縫提…

[筆記] 系統分析師 第十二章 軟件架構設計(分析師主要工作)

文章目錄前言12.1 軟件架構概述12.1.1 軟件架構的意義12.1.2 軟件架構的發展史12.2 軟件架構建模12.3 軟件架構風格12.3.1 軟件架構風格概述12.3.2 數據流體系結構風格1.批處理體系結構風格2.管道-過濾體系結構風格12.3.3 調用/返回體系結構風格1.主程序/子程序風格2.面向對象體…

C++---存儲周期,作用域,鏈接性

在C程序設計中&#xff0c;變量的行為不僅由其類型決定&#xff0c;還由存儲周期&#xff08;變量在內存中存在的時間&#xff09;、作用域&#xff08;變量可被訪問的代碼范圍&#xff09;和鏈接性&#xff08;變量在多文件程序中的可見性&#xff09;共同約束。 一、存儲周期…

基于Python的商品爬取與可視化系統

本系統是基于Python的商品數據爬取與價格分析可視化系統&#xff0c;集成了數據爬取、數據存儲、數據展示和可視化分析等功能。下面介紹一下系統主要功能和技術棧。一、主要功能&#xff1a;1、數據爬取功能 支持淘寶美妝商品數據爬取 可配置搜索關鍵詞和爬取頁數 實時顯示爬取…

聯邦學習過程中,了解清楚影響準確率的因素有哪些也很重要

影響模型準確率的因素有很多&#xff0c;下面是一些主要的因素&#xff0c;它們可以從數據、模型設計、訓練策略以及超參數等多個層面來考慮。1. 學習率作用&#xff1a;學習率直接影響模型的訓練速度、穩定性和最終表現。過高的學習率可能導致模型不收斂或收斂不穩定&#xff…

C# WPF中使用System.Management.Automation類調用Powershell報錯解決辦法

在WPF開發中&#xff0c;需要使用powershell進行自動化管理&#xff0c;以下為開發環境 1、.NET framework 4.7.2 2、VS2019 社區版 使用System.Management.Automation類 遇到的問題&#xff1a; 需要引用 System.Management.Automation類&#xff0c;但是在使用using指令時無法…

從 Pump.fun「直播」看熱點幣的生與死

在加密市場里&#xff0c;熱點就是流量&#xff0c;流量就是價值。最近&#xff0c;Solana 生態的 Pump.fun 推出了「直播」板塊&#xff0c;讓發幣這件事變得像看秀一樣&#xff1a;一個個新幣在鏈上實時登場&#xff0c;社區即時互動&#xff0c;玩家實時下注。這種形式不僅帶…