【MySQL】超詳細-基礎操作

?數據庫定義

數據庫是一類軟件,用來管理數據,組織數據;

  • 關系型數據庫MySQL(Oracle,SQL Server,SQLite)以表格形式組織數據,數據格式要求嚴格;
  • 非關系型數據庫Redis(MongoDB,HBase)以鍵值對/文檔形式組織數據,數據格式較松散,性能高,運用在分布式場景中;
  • 多維數據庫:essbase;
  • 分布式數據庫:DB2是IBM開發的一種大型關系型數據庫平臺;
  • (在軟件開發領域中,經典結論:沒有銀彈)

?MySQL基本結構

MySQL的基本結構:客服端-服務端?結構的程序

客戶端(client):發出請求的一方

服務端(server):被動接受請求一方

請求(request):客戶端主動給服務端發的數據

響應(response):服務端給客戶端返回數據

服務器的基本特點:

1:7*24小時運行(引用分布式系統,做高可用支持);

2:服務器是不知道客戶端什么時候給他發請求,服務器是被動的一方;

3:服務器(負責存儲和管理數據,是數據庫的本體)可以給多個客戶端(和用戶交互的界面)提供服務;

(服務器本質就是一臺電腦(計算機);

計算機怎么構成的:

CPU(中央處理器),

主板(一塊大的電路板,cup裝在上面),

內存,硬盤 ->負責存儲數據的,

電源,散熱器,機箱,

顯卡(GPU 專門負責圖形渲染相關的計算的,最貴的),

顯示器,鼠標,鍵盤;

存儲數據:

1:內存->存儲空間較小,訪問速度較快,成本高,數據易失(斷電數據丟失);

2:硬盤->存儲空間較大,訪問速度較慢(速度比內存慢速度慢好幾個數量級,一個數量級就是10倍),成本低,數據持久(斷電數據不會丟失,持久是相對的,并不是永久存在);

  • 硬盤分類:機械硬盤,固態硬盤(固態硬盤比機械硬盤快一個數量級);
  • 外存:外存是一個“統稱”,硬盤只是典型代表,還有U盤,軟盤,光盤;
  • CPU:中央處理器,用于各種邏輯判斷和算術運算(CPU是人類當前科技領域的巔峰之作,能相提并論的就是氫彈)是通用運算芯片;
  • 顯卡(GPU是專用計算芯片,專門用來計算圖形圖像,GPU速度比CPU快;
  • 顯存:顯存就是專門給顯卡使用的內存(平時內存是給CPU使用的,為了不沖突,會在顯卡上單獨焊上內存單元);
  • AI:顯卡用于AI領域中;

MySQL數據庫存儲數據,數據存儲在硬盤(空間大,持久化存儲)上;

Redis是將數據存儲在內存上,很特殊*;

大數據:一個機器存不了的數據,使用多個機器來存儲,這個操作數據的一系列技術體系叫做大數據;

數據庫的基本操作

SQL是大小寫不明感的,寫成大寫或者小寫都可以;

各種命名名稱不能是SQL中的關鍵字-〉如果非要使用,可以使用反引號進行引起來;

一個漢字占幾個字節-〉這是不確定的,要根據字符集(GBK使用2個字節表示一個漢字,UTF8變長編碼,一般是3個字節表示一個漢字);

?誤刪數據庫

  • 控制好權限,MySQL支持豐富的權限配置功能,根據賬號限制權限;

  • 備份,重要的數據多備份幾份;

線上數據:表示真實的用戶數據;

線下數據:用來測試的數據,數據是假的;

直觀基本操作(簡單)

1:show databases; 查看現有的數據庫

2:create database 數據庫名;創建數據庫

3:create database 數據庫名 charset 字符集名;創建數據庫指定字符集

4:use 數據庫名;選中數據庫

5:drop database 數據庫名;刪除數據庫

額外補充知識點(實際工作)

2_26

線上環境/生產環境

一、線下環境

1:辦公環境-〉開會,做PPT,發郵件,寫日報周報,軟件聊天;

2:開發環境-〉

  • 簡單項目,開發環境就是辦公環境;

  • 項目對環境要求較高,公司會發單獨的服務器,通過辦公電腦連到服務器上開發;

3:測試環境-〉類似于開發環境

二、線上環境

1:生產環境-〉

  • 程序會放到上面,就可以被外面用戶真實訪問到,如果用戶訪問量比較大,對于配置比較高;

  • 在生產環境上的程序出現bug了,會被外面的用戶直接訪問到;

  • 把寫好的程序發布到生產環境上,這個過程成為“上線”;

  • 上線是一個非常重要的操作,“誤操作”引出的生產環境的問題;

編程語言體系-〉“武當”,“少林”

C(代碼好理解,代碼好寫,不保證代碼的正確性);Lisp(更好的能保證代碼的正確性,代碼不好理解,代碼不好寫,思考能力極強);

MySQL中的數據類型

1:數字

bit 1

tinyint 1

smallint 2

int 4

bigint 8

float(m,d) 4 (m表示長度,d表示小數位數)

double(m,d) 8

decimal(m,d) m/d最大值+2(要最大值)

numeric(m,d) m/d最大值+2

  • float和double不能精確存儲小數,所以避免在金錢,計算機科學前使用;

  • decimal和numeric是能夠精確存儲小數的,但是需要消耗的空間和時間更多;

慎重使用 浮點數 比較相等-〉0.1+0.2=0.3?false

2:字符串

varchar(自定義可存放最大值) 可變長的字符串類型,varchar的單位是“字符”,而不是字節,一個漢字就是一個字符;

text 長文本數據,長度靠自適應的,會自動擴容,但是實際開發中會明確數據存儲的上限;

mediumtext 更長文本數據,和text一樣,謹慎使用;

blob 存儲二進制數據,指的是(圖片,音頻,視頻,可執行程序,.class文件),謹慎使用;

3:時間

datetime 8 1000到9999年,不會進行時區的檢索及轉換;

timestamp 4 1970到2038,自動檢索當前時區并轉換;

4:null

null-〉數據庫中的null表示“這個單元格沒填”

MySQL核心操作(增、查、改、刪 -> 詳細)

🦠create table 表名(列名 類型,列名 類型,....);創建表

🦠desc 表名;查看表結構(desc-〉describe描述;在查詢有一個desc-〉descend下降)

🦠drop table 表名;刪除表(不僅刪除了表,還刪除了表中的數據)

MySQL中的注釋#和-- (兩橫杠加一空格)

額外補充知識點(類型)

強類型和弱類型-〉

  • 越支持隱式類型轉換的是弱類型,越不支持的是強類型(隱式類型轉換就是不需要寫代碼就就能自動轉換類型的);

靜態類型和動態類型-〉

  • 一個變量的類型,能否在程序運行過程中發生改變。允許發生改變,就是動態類型;不允許發生改變的就是靜態類型;

1:新增

insert into 表名 values (值,值,...);

insert into 表名 (列名,列名...) values (值,值...);

insert into 表名 values(值,值...),(值,值...);

insert into 表名 (列名,列名...) values (值,值...);

MySQL中有一個專門的函數now()來獲取當前系統時間;

sql作為一個編程函數,提供了一些庫函數;

時間加入的標準是:“2024-3-2 16:01:00”

2:查詢

select * from 表名;全列查詢(select*是一個危險操作,實際工作中,生產環境上要慎用)

select 列名,列名... from 表名;指定列的查詢(列名必須存在于要查的表中)

(select只是查詢,是讀操作,不會影響數據庫服務器硬盤上存儲的數據)

(decimal限制的是硬盤上的數據,而不是臨時表的數據,臨時表能夠盡可能保證最終計算結果是正確的)

1:select*from 表名;全列查詢

2:select 列名,列名 from 表名;指定列查詢

3:select destinct 列名 from 表名;去重查詢(destinct)

4:select 列名,列名+列名 as 重命名 from 表名;計算查詢

5:select * from 表名 order by 列名/表達式;排序查詢(order by)默認升序排序

select * from 表名 order by 列名/表達式 desc;降序排序(descend)

?在SQL中進行算術運算,如果其中某個操作數,結果是null,那么最后結果也是null。(我對這個定義還有一點疑問?)

6:select * from? 表名 order by 列名1,列名2...;order by指定多個列排序(先按照列名1排序,如果列名1有相同的就按列名2排序...)

7:select * from 表名 order by 列名1,列名2 desc...;按列名1升序排序,按列名2降序排序...

8:👍select 列名,列名...?from 表名 where 條件;

  • 條件-〉邏輯運算符,關系運算符;

  • “=”,就表示“等于”的意思。null不安全,例如:null=null結果是null。null和其他的值進行關系運算還是null,相當于false;

  • “〈=〉”,表示“等于”的意思。使用null是安全的,例如:null〈=〉null結果是true(1);

  • between a1 and a2,范圍在[a1,a2]之間返回true(1);

  • in(值1,值2....)相當于是一個集合,判斷這個值是不是在這個集合里;

  • is null 是null;is not null 是不為null;

  • and就是(&&)

  • or就是(||)

  • not就是(!)

where和order by可以結合使用,where在前,order by在后;

and的優先級比or優先級高;

超詳細查詢

1:select * from 表名;全列查詢

2:select 列名,列名... from 表名;指定查詢

3:select 表達式 from 表名;帶有表達式的查詢

4:select 表達式 as 別名 from 表名;帶有別名的查詢(表達式查詢只影響臨時表)

5:select distinct 列名 from 表名;去重查詢

6:select 列名 from 表名 order by 列名/列名 desc;排序查詢

7:select 列名 from 表名 where 條件;條件查詢

8:select 列名 from 表名 列名 like “x%”;模糊查詢

  • 慎用like(🔥)

  • “x%”以x開頭;“%x”以x結尾;“%x%”包含x;

  • “x_”x開頭,_表示一個字,“x__”x開頭,__表示兩個字;

9:針對空值的查詢,〈=〉(可以通過兩個列比較)、is null、is?not null;

10:分頁查詢(🌶?)

  • select * from 表名 limit 值;查詢的值小于等于值(此處是offset 0)

  • select * from 表名 limit 值1 offset 值2;查詢跳過值2的數據,查出小于等于值1的條數(offset表示的是偏移量)

  • select * from 表名 limit 值1,值2;值1是offset,值2是最大條數

3:修改

1:update 表名 set 列名 = 值,列名 = 值... where 條件;

update修改的是硬盤上存儲的數據,select修改的是臨時表上的數據;

4:刪除

1:delete from 表名 where 條件;刪除的都是以行為維度進行刪

2:delete from 表名;刪除表中所有數據

一個sql的執行順序

1:遍歷表

2:帶入條件

3:計算列名中的表達式(定義別名)

4:排序/聚合 等操作

編程中談到區間,區間都是前閉后開;

數據庫的約束

約束可以理解為,數據庫提供的一種針對數據的合法性,驗證的機制;

1:not null

  • 設定not null,說明列里不能存儲空值,表里內容必填

2:unique

  • 這定這一列的所有行的數據都得是唯一的(不能重復)

3:default

  • 指定默認值,當不進行任何指定,默認值就是null

4:primary key

  • 主鍵:一條記錄的身份標識(類似于 學號/身份證 = not null + unique)

5:foreign key

  • 外鍵涉及到兩個表之間的關系

6:check

  • 指定條件,插入/修改數據,數據符號才能插入/修改成功

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

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

相關文章

數據結構與算法-冒泡排序

引言 在數據結構與算法的世界里,冒泡排序作為基礎排序算法之一,以其直觀易懂的原理和實現方式,為理解更復雜的數據處理邏輯提供了堅實的入門階梯。盡管在實際應用中由于其效率問題不常被用于大規模數據的排序任務,但它對于每一位初…

【C++】set、multiset與map、multimap的使用

目錄 一、關聯式容器二、鍵值對三、樹形結構的關聯式容器3.1 set3.1.1 模板參數列表3.1.2 構造3.1.3 迭代器3.1.4 容量3.1.5 修改操作 3.2 multiset3.3 map3.3.1 模板參數列表3.3.2 構造3.3.3 迭代器3.3.4 容量3.3.5 修改操作3.3.6 operator[] 3.4 multimap 一、關聯式容器 談…

Hololens 2應用開發系列(1)——使用MRTK在Unity中設置混合現實場景并進行程序模擬

Hololens 2應用開發系列(1)——使用MRTK在Unity中進行程序模擬 一、前言二、創建和設置MR場景三、MRTK輸入模擬的開啟 一、前言 在前面的文章中,我介紹了Hololens 2開發環境搭建和項目生成部署等相關內容,使我們能生成一個簡單Ho…

Redis 之九:Spring Data Redis -- Redis Template 用法

SpringData Redis Spring Data Redis 是 Spring Data 項目的一部分,它為 Java 應用程序提供了一種便捷的方式來與 Redis 數據庫進行交互。 Spring Data Redis 提供了對 Redis 的抽象封裝,使得開發者能夠以面向對象的方式操作 Redis,并簡化了 …

matlab 寫入格式化文本文件

目錄 一、save函數 二、fprintf函數 matlab 寫入文本文件可以使用save和fprintf函數 save輸出結果: fprintf輸出結果: 1.23, 2.34, 3.45 4.56, 5.67, 6.78 7.89, 8.90, 9.01 可以看出fprintf輸出結果更加人性化,符合要求,下面分別介紹。 一、save函數 …

linux系統Jenkins工具介紹

Jenkins概念介紹 Jenkins概念Jenkins目的特性產品發布流程 Jenkins概念 Jenkins是一個功能強大的應用程序,允許持續集成和持續交付項目,無論用的是什么平臺。這是一個免費的源代碼,可以處理任何類型的構建或持續集成。集成Jenkins可以用于一些…

MQL5-MT5連接上國內期貨

主要原因是昨天在學習MACD時發現給的基礎代碼感覺不對,但無法證明,因為MT5接的都是外匯交易,數據和國內的文華啥的全對不上,便找了一些國內接CTP的,直接寫代碼有點麻煩,雖然之前對接過國內CTP的東西&#x…

AI入門筆記(三)

神經網絡是如何工作的 神經網絡又是如何工作的呢?我們用一個例子來解釋。我們看下面這張圖片,我們要識別出這些圖片都是0并不難,要怎么交給計算機,讓計算機和我們得出同樣的結果?難點就在于模式識別的答案不標準&…

十二、Nacos源碼系列:Nacos配置中心原理(四)- RefreshEvent 事件處理

前面文章,我們說到回調監聽器的方法中,主要就是發布了一個RefreshEvent事件,這個事件主要由 SpringCloud 相關類來處理。今天我們繼續分析后續的流程。 RefreshEvent 事件會由 RefreshEventListener 來處理,該 listener 含有一個 …

Object類方法

toString(): 返回對象的字符串表示形式。默認情況下,返回對象的類名和哈希碼的十六進制表示。 equals(Object obj): 比較兩個對象是否相等。默認情況下,這個方法比較的是兩個對象的引用是否相同,但是通常會在子類中重寫這個方法以實現自定義…

武器大師——操作符詳解(下)

目錄 六、單目操作符 七、逗號表達式 八、下標引用以及函數調用 8.1.下標引用 8.2.函數調用 九、結構體 9.1.結構體 9.1.1結構的聲明 9.1.2結構體的定義和初始化 9.2.結構成員訪問操作符 9.2.1直接訪問 9.2.2間接訪問 十、操作符的屬性 10.1.優先性 10.2.結合性 …

sql基本語法+實驗實踐

sql語法 注釋: 單行 --注釋內容# 注釋內容多行 /* 注釋內容 */數據定義語言DDL 查詢所有數據庫 show databases;注意是databases而不是database。 查詢當前數據庫 select database();創建數據庫 create database [if not exists] 數據庫名 [default charset 字符…

備戰藍橋杯Day22 - 計數排序

計數排序問題描述 對列表進行排序,已知列表中的數范圍都在0-100之間。設計時間復雜度為O(n)的算法。 比如列表中有一串數字,2 5 3 1 6 3 2 1 ,需要將他們按照從小到大的次序排列,得到1 1 2 2 3 3 5 6 的結果。那么此時計數排序是…

一:面試流程

面試 項目介紹功能測試接口測試性能測試測試用例 項目介紹 南網智搜是南方電網公司研發的搜索引擎,主要場景Web 端場景有搜索頻道、個人中心、和一些積分活動等,我在里面主要負責功能測試,接口測試,性能測試,壓力測試…

Jetson Xavier NX 開發板Ubuntu18.04 安裝arduino IDE詳細步驟

Jetson 平臺是arch架構,官網上面幾乎都是x86或者arm64的這兩種錯誤版本都存在匹配問題無法使用,不要下載不要下載! uname -a #版本查詢1.正確下載打開方式 https://downloads.arduino.cc/arduino-1.8.19-linuxaarch64.tar.xz選擇自己想要下…

LeetCode #104 二叉樹的最大深度

104. 二叉樹的最大深度 題目 二叉樹的 最大深度 是指從根節點到最遠葉子節點的最長路徑上的節點數。 示例 1: 輸入:root [3,9,20,null,null,15,7] 輸出:3 示例 2: 輸入:root [1,null,2] 輸出:2 分析 …

【Godot4自學手冊】第十九節敵人的血量顯示及掉血特效

這一節,我主要學習敵人的血量顯示、掉血顯示和死亡效果。敵人的血量顯示和主人公的血量顯示有所不同,主要是在敵人頭頂有個紅色的血條,受到攻擊敵人的血條會減少,并且有掉血數量的文字顯示,效果如下: 一、…

《中華人民共和國消防法》(2021年修訂版)解讀

單選題(共7題,每題5分) 1、舉辦大型群眾性活動,承辦人應當依法向()申請安全許可。 正確答案:B、公安機關 2、違反消防安全規定進入生產、儲存易燃易爆危險品場所的,情節嚴重的要處…

基于springboot+vue的醫院后臺管理系統

博主主頁:貓頭鷹源碼 博主簡介:Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰,歡迎高校老師\講師\同行交流合作 ?主要內容:畢業設計(Javaweb項目|小程序|Pyt…

胎神游戲集第一期

目錄 一、變色小跳龍 二、超級按鈕 三、超級迷宮 四 、城市守衛戰 五、 憤怒的小胎 既然是胎神游戲集,那當然要先感謝我們的胎神大大了 胎神洛谷名:TSzza 好了,言歸正傳,知道你們不喜歡啰嗦,直接上代碼 一、…