mysql——基礎知識

關鍵字大小寫不敏感

查看表結構中的 desc = describe 描述

降序中的 desc = descend

1. 數據庫的操作

1. 創建數據庫

create database 數據庫名;

為防止創建的數據庫重復

CREATE DATABASE IF NOT EXISTS 數據庫名;

手動設置數據庫采用的字符集

character set 字符集名;charset 字符集名;

char : unicode

String : utf8mb4(推薦使用 utf8mb4,完整支持 Unicode,包括表情符號)

? ? ? ? ? ? utf8(殘本,不支持emoji表情符號)

指定數據庫字符集的校驗規則

collate 排序規則;

2. 查看數據庫

show databases ;

3. 選中要使用的數據庫

use 數據庫名;

4. 刪除數據庫

drop database 數據庫名;
數據庫刪除以后,內部看不到對應的數據庫,里邊的表和數據全部被刪除

1. 常用數據類型

一、數值類型

1. 整數類型

類型字節有符號范圍無符號范圍
TINYINT1-128 ~ 1270 ~ 255
SMALLINT2-32,768 ~ 32,7670 ~ 65,535
MEDIUMINT3-8,388,608 ~ 8,388,6070 ~ 16,777,215
INT/INTEGER4-2,147,483,648 ~ 2,147,483,6470 ~ 4,294,967,295
BIGINT8-2^63 ~ 2^63-10 ~ 2^64-1

2. 浮點數類型

類型字節說明
FLOAT4單精度浮點數,約7位精度
DOUBLE8雙精度浮點數,約15位精度

3. 定點數類型

類型說明
DECIMAL(M,D)精確小數,M是總位數,D是小數位數

精度高,運算速度慢,占的空間大

二、字符串類型

1. 短文本

類型最大長度特點
CHAR(n)255字符固定長度,效率高
VARCHAR(n)65,535字節可變長度,節省空間

n 表示該類型最多存儲多少個字符(不是字節),一個漢字算一個字符

2. 長文本

類型最大長度特點
TINYTEXT255字節
TEXT65,535字節
MEDIUMTEXT16,777,215字節
LONGTEXT4GB

3. 二進制數據

類型說明
BINARY(n)固定長度二進制字符串
VARBINARY(n)可變長度二進制字符串
BLOB二進制大對象

文本數據存儲的都是字符,這些字符都可以在對應的碼表上查到

二進制數據:在碼表上查不到的如音樂,圖片,視頻

三、日期時間類型

數據類型存儲大小格式范圍(最小值 ~ 最大值)
YEAR1字節YYYY1901 ~ 2155
DATE3字節YYYY-MM-DD1000-01-01 ~ 9999-12-31
TIME3字節HH:MM:SS-838:59:59 ~ 838:59:59
DATETIME5字節YYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
TIMESTAMP4字節YYYY-MM-DD HH:MM:SS1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC

2. 表操作

需要操作數據庫中的表時,需要先使用該數據庫: use 數據庫名;

1. 創建表

create table 表名(
列名 數據類型[約束條件],
列名 數據類型[約束條件],
...
);

2. 查看表結構

desc 表名;

int(11) 是四個字節,此處(11)表示顯示寬度,即顯示這個int類型時,最多占據11個字符的寬度(和存儲時的容量無關)。

3. 刪除表

drop table 表名;

刪除表的同時,表中的數據也一并刪除。

3. 表數據操作

1. 新增數據

值的個數和類型要和表結構匹配

? ?1.?單行數據 + 全列插入(即在表中插入一行數據)

insert into 表名 values (值1,值2,值3...);
? ? 2. 多行數據 + 全列插入(即在表中插入多行數據)
insert into 表名 values (值1,值2,值3...),(值1,值2,值3...),(值1,值2,值3...),...;
3. 單 行數據 + 指定列插入
insert into 表名 (列1,列2,...) values (值1,值2,...);
? ??4. 多行數據 + 指定列插入
insert into 表名 (列1,列2,...) values (值1,值2,...),(值1,值2,...),...;

2. 查詢數據

mysql是一個“客戶端 - 服務器”結構的程序

客戶端在這里進行的操作,都會通過請求發送給服務器,服務器查詢的結果也會通過響應返回給客戶端(以臨時表的形式)

SQL 查詢的邏輯執行順序:

  1. FROM 子句?- 確定數據來源

  2. JOIN 子句?- 連接相關表

  3. WHERE?- 行級過濾(此時不能使用SELECT中定義的別名)

  4. GROUP BY?- 數據分組

  5. HAVING?- 分組后過濾

  6. SELECT?- 計算列表達式并選擇列

  7. DISTINCT?關鍵字- 去重

  8. ORDER BY?- 排序(可以使用SELECT中定義的別名)

  9. LIMIT?/OFFSET- 結果集限制

SELECT [DISTINCT] 列1 [as 別名] , 列2 [as 別名], ...
FROM 表名
[WHERE 條件]
[GROUP BY 分組列]
[HAVING 分組條件]
[ORDER BY 排序列 [ASC|DESC]]
[LIMIT [偏移量,] 行數];

1. 全列查詢

select * from 表名;

如果數據庫當前這個表中的數據特別多,就可能會產生問題:

1. 讀取硬盤,把硬盤的IO給跑滿了,此時程序的其他部分想訪問硬盤,就會非常慢。

2. 操作網絡,也可能把網卡的帶寬跑滿,此時其他客戶端想通過網絡訪問服務器,也會非常慢

這樣的擁堵,就可能導致客戶端無法順利訪問到數據庫,進一步也就對整個服務器造成影響(相當于數據庫服務器掛了)

2. 指定列查詢

select 列1,列2,... from 表名;

3. 表達式查詢

是列與列之間的運算

select 表達式1,表達式2,... from 表名;

?4.?去重:DISTINCT

使用 DISTINCT關鍵字對數據進行去重
放在SELECT之后
select distinct 列1,列2... from 表名;

5. 別名

為查詢結果中的列指定別名,表示返回的結果集中,以別名作為該列的名稱

列的別名不能在ORDER BY中直接使用(在某些MySQL版本中)

SELECT [DISTINCT] 列1 [[as] 別名] , 列2 [[as] 別名], ... FROM 表名;

6. 排序:order by

SC 為升序(從小到大)
DESC 為降序(從大到小)
默認為 ASC
select 列1,列2... from 表名order by 列名 [asc/desc],列名 [asc/desc]...;
1. 沒有 ORDER BY 子句的查詢,返回的順序是未定義的,永遠不要依賴這個順序
2. NULL 數據排序,視為比任何值都小,升序出現在最上面,降序出現在最下面

3.?可以對多個字段進行排序,排序優先級隨書寫順序

7. 條件查詢:where

select 列名 from 表名 where 約束條件;
比較運算符:
運算符描述
=等于, NULL 不安全,例如 NULL = NULL 的結果是 NULL
<=>
等于, NULL ?安全,例如 NULL <=> NULL 的結果是 TRUE(1)
<> 或 !=不等于
>大于
<小于
>=大于等于
<=小于等于
BETWEEN a0 AND a1
范圍匹配, [a0, a1] ,如果 a0 <= value <= a1 ,返回 TRUE(1)
IN(option,...)在指定值列表中,如果是 option 中的任意一個,返回 TRUE(1)
LIKE模糊匹配,% 表示任意多個(包括 0 個)任意字符;_ 表示任意一個字
IS NULL是空值
IS NOT NULL不是空值
模糊匹配:
SELECT * FROM 表名 WHERE 列名 LIKE '模式';

% 表示任意多個(包括 0 個)任意字符;

_ 表示任意一個字符

邏輯運算符:

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

?8. 分頁查詢

始終結合?ORDER BY?使用分頁,否則結果順序不確定

select 列名 from 表名 limit 每頁記錄數 offset 偏移量;select 列名 from 表名 limit 偏移量, 每頁記錄數;

當前頁碼(page)和每頁大小(pageSize)

偏移量(offset) = (page - 1) * pageSize

每頁記錄數 = pageSize

3. 修改數據

UPDATE 表名 
SET 列名1 = 值1, 列名2 = 值2, ...
[WHERE 條件]
[ORDER BY 列名]
[LIMIT 行數];

將名字為null改為信陽毛尖

怎樣查看警告:

show warnings;

4. 刪除數據

DELETE FROM 表名?
[WHERE 條件]
[ORDER BY 列名]
[LIMIT 行數];
delete from 表名;

如果刪除數據時不加任何約束條件,則將整個表中的數據全部刪除,只留空表。

在修改和刪除數據中,limit 行數;?表示共刪除或修改幾行。

4. 數據庫約束

在創建表時使用

約束類型:
NOT NULL - 指示某列不能存儲 NULL 值。
UNIQUE - 保證某列的每行必須有唯一的值。
DEFAULT - 規定沒有給列賦值時的默認值。
PRIMARY KEY - NOT NULL UNIQUE 的結合。確保某列(或兩個列多個列的結合)有唯一標識,有助于更容易更快速地找到表中的一個特定的記錄。
FOREIGN KEY - 保證一個表中的數據匹配另一個表中的值的參照完整性。
CHECK - 保證列中的值符合指定的條件。

1.?非空約束 (NOT NULL)

作用:確保列不能包含NULL值

特點

  • 強制字段必須有值

  • 可以在ALTER TABLE時添加或刪除

2.??唯一約束 (UNIQUE)

作用:確保列中的值唯一

特點

  • 允許NULL值(但只能有一個NULL)

  • 一個表可以有多個唯一約束

  • 自動創建非聚集索引

3.? 默認約束 (DEFAULT)

作用:當插入數據未指定值時提供默認值,默認情況下為null.

特點

  • 可以是常量值或表達式

  • 適用于INSERT和UPDATE操作

4. 主鍵約束 (PRIMARY KEY)

作用:唯一標識表中的每一行記錄,確保實體完整性

特點

  • 不允許NULL值

  • 不允許重復值

  • 一個表只能有一個主鍵

  • 自動創建聚集索引

5. 外鍵約束 (FOREIGN KEY)

作用:維護表之間的引用完整性

特點

  • 確保一個表的值必須在另一個表中存在

  • 可以定義級聯操作

  • 引用列必須是主鍵或唯一鍵

父表:約束別人的表

子表:被別人約束的表

CREATE TABLE 子表名 (列定義...,[CONSTRAINT 約束名] FOREIGN KEY (外鍵列) REFERENCES 主表名(主表列)[ON DELETE 參照動作][ON UPDATE 參照動作]
);

外鍵約束動作

當主表數據被刪除或更新時,可以指定子表數據的處理方式:

動作描述
RESTRICT(默認)拒絕主表的刪除或更新操作
CASCADE級聯操作,主表刪除/更新時,子表對應記錄也刪除/更新
SET NULL主表刪除/更新時,子表對應外鍵列設為NULL(需允許NULL)
NO ACTION類似RESTRICT
SET DEFAULT

設為默認值(MySQL目前不支持)

針對父表的 刪除/修改 操作,如果當前被 刪除/修改 的值,已經被子表引用了,則無法進行此操作

外鍵約束要始終保持,子表中的數據在對應的父表的列中要存在。

如果父表不存在,子表添加元素時無參考依據

指定外鍵約束,時,父表中被關聯的一列必須為主鍵或unique。

邏輯刪除:

如果要刪除與子表關聯的父表元素,我們可以多設置一列進行條件約束。

6. 檢查約束 (CHECK)

作用:確保列值滿足指定條件

特點

  • MySQL 8.0.16+ 完全支持

  • 可以引用多列

  • 條件不滿足時拒絕操作

7. 自增約束 (AUTO_INCREMENT)

作用:自動為列生成唯一遞增整數值(會自動排序),必須作用與鍵

特點

  • 通常用于主鍵

  • 每張表只能有一個自增列

  • 默認從1開始,每次增加1

  • 支持整數類型(INT, SMALLINT, BIGINT等)

  • 自增列不保證連續:刪除記錄后,自增值不會重用

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

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

相關文章

Redis 哨兵與集群腦裂問題詳解及解決方案

Redis 哨兵與集群腦裂問題詳解及解決方案 本文將深入探討Redis在哨兵模式和集群模式下可能出現的腦裂問題&#xff0c;包括其發生場景、原因以及有效的解決策略。同時&#xff0c;我們還將提供相應的代碼示例和配置方案來幫助讀者理解和實施。 一、腦裂問題概述 腦裂&#x…

國內網絡設備廠商名單(List of Domestic Network Equipment Manufacturers)

國內網絡設備廠商名單 運維工程師必須廣泛熟悉國內外各大廠商的設備&#xff0c;深入掌握其應用場景、功能特點及優勢。這不僅有助于在故障排查時迅速定位問題&#xff0c;還能在系統設計、優化與升級中做出更合理的決策。對設備特性的精準把握&#xff0c;能夠顯著提升運維效…

2、SpringAI接入ChatGPT與微服務整合

2、SpringAI接入ChatGPT與微服務整合 小薛博客AI 大模型資料 1、SpringAI簡介 https://spring.io/projects/spring-ai Spring AI是一個人工智能工程的應用框架。其目標是將Spring生態系統的設計原則&#xff08;如可移植性和模塊化設計&#xff09;應用于人工智能領域&#…

基于ubuntu24.10安裝NACOS2.5.1的簡介

基于ubuntu24.10安裝NACOS2.5.1的簡介 官方網站地址&#xff1a; https://nacos.io 可訪問nacos站點 https://nacos.io/zh-cn/ 2025年04月記錄發布 V2.5.1 版本 一、環境預準備 64 bit JDK 1.8&#xff1b; sudo apt update sudo apt install openjdk-8-jdk sudo apt upda…

神經網絡:從基礎到應用,開啟智能時代的大門

在當今數字化時代&#xff0c;神經網絡已經成為人工智能領域最熱門的技術之一。從語音識別到圖像分類&#xff0c;從自然語言處理到自動駕駛&#xff0c;神經網絡的應用無處不在。它不僅改變了我們的生活方式&#xff0c;還為各個行業帶來了前所未有的變革。本文將帶你深入了解…

[k8s實戰]Containerd 1.7.2 離線安裝與配置全指南(生產級優化)

[k8s實戰]Containerd 1.7.2 離線安裝與配置全指南&#xff08;生產級優化&#xff09; 摘要&#xff1a;本文詳細講解在無外網環境下部署 Containerd 1.7.2 容器運行時的完整流程&#xff0c;涵蓋二進制包安裝、私有鏡像倉庫配置、Systemd服務集成等關鍵步驟&#xff0c;并提供…

【CPU】結合RISC-V CPU架構回答中斷系統的7個問題(個人草稿)

結合RISC-V CPU架構對中斷系統七個關鍵問題的詳細解析&#xff0c;按照由淺入深的結構進行說明&#xff1a; 一、中斷請求機制&#xff08;問題①&#xff09; 硬件基礎&#xff1a; RISC-V通過CLINT&#xff08;Core Local Interrupter&#xff09;和PLIC&#xff08;Platfor…

[密碼學實戰]國密算法面試題解析及應用

以下是密碼學領域常見的面試題及其詳細解析,涵蓋基礎理論、算法實現與應用場景,幫助系統化備戰技術面試 一、基礎概念類 1. 密碼學的主要目標是什么? 答案: 確保數據的機密性(加密防止竊聽)、完整性(哈希校驗防篡改)、認證性(數字簽名驗證身份)和不可否認性(簽名防…

Spring Boot 實現 Excel 導出功能(支持前端下載 + 文件流)

&#x1f9e0; 一、為什么用 EasyExcel&#xff1f; 在 Java 開發中&#xff0c;操作 Excel 的框架主要有&#xff1a; Apache POI&#xff08;經典但慢、內存占用大&#xff09; JXL&#xff08;老舊不維護&#xff09; Alibaba EasyExcel&#xff08;阿里出品&#xff0c;…

【論文速遞】2025年06周 (Robotics/Embodied AI/LLM)

目錄 SMOLLM2&#xff1a;當Smol變得大 - 以數據為中心的小語言模型英文摘要中文摘要 OmniHuman-1&#xff1a;重新考慮一階段的人類動畫模型的擴展英文摘要中文摘要 S1&#xff1a;簡單的測試時間縮放英文摘要中文摘要 直接對齊算法間的差異日漸模糊英文摘要中文摘要 VideoJAM…

學習深度學習是否要先學習機器學習?工程師的路徑選擇策略

深度學習與機器學習的關系&#xff0c;如同摩天大樓與地基——前者是后者的高階延伸&#xff0c;但能否繞過地基直接造樓&#xff1f;本文從技術本質、學習曲線、應用場景三個維度剖析這一關鍵問題。 一、技術血脈的承繼關系 概念體系同源&#xff1a; 損失函數、梯度下降、過擬…

開始放飛之先搞個VSCode

文章目錄 開始放飛之先搞個VSCode重要提醒安裝VSCode下載MinGW-w64回到VSCode中去VSCode原生調試鍵盤問題遺留問題參考文獻 開始放飛之先搞個VSCode 突然發現自己的新臺式機上面連個像樣的編程環境都沒有&#xff0c;全是游戲了&#xff01;&#xff01;&#xff01;&#xff…

【2025“華中杯”大學生數學建模挑戰賽】選題分析 A題 詳細解題思路

目錄 2025“華中杯”大學生數學建模挑戰賽選題分析A題&#xff1a;晶硅片產銷策略優化B題&#xff1a;校園共享單車的調度與維護問題C題&#xff1a;就業狀態分析與預測D題&#xff1a;患者院內轉運不良事件的分析與預測 A 題 晶硅片產銷策略優化問題 1&#xff1a;月利潤計算模…

YOLO11改進,尺度動態損失函數Scale-based Dynamic Loss,減少標簽不準確對損失函數穩定性的影響

在目標檢測領域,標簽噪聲與尺度敏感問題始終是制約模型性能提升的"阿喀琉斯之踵"。2025年CVPR最佳論文提出的尺度動態損失函數(Scale-based Dynamic Loss, SDL),通過構建自適應損失調節機制,不僅實現了對YOLOv11檢測精度的指數級提升,更重新定義了損失函數的設…

緩存 --- 內存緩存 or 分布式緩存

緩存 --- 內存緩存 or 分布式緩存 內存緩存&#xff08;In-Memory Cache&#xff09;分布式緩存&#xff08;Distributed Cache&#xff09;內存緩存 vs 分布式緩存 內存緩存和分布式緩存是兩種常見的緩存策略&#xff0c;它們在存儲位置、訪問速度和適用場景上有所不同。下面分…

Python+CoppeliaSim+ZMQ remote API控制機器人跳舞

這是一個使用Python和CoppeliaSim&#xff08;V-REP&#xff09;控制ASTI人型機器人進行舞蹈動作的演示項目。 項目描述 本項目展示了如何使用Python通過ZeroMQ遠程API與CoppeliaSim仿真環境進行交互&#xff0c;控制ASTI人型機器人執行預定義的舞蹈動作序列。項目包含完整的機…

進程管理,關閉進程

查看Linux系統中的進程信息 語法&#xff1a;ps【-e -f】 一般與管道符與grep配合使用&#xff0c;&#xff0c;去過濾指定的信息 -e&#xff1a;顯示出全部的進程 -f&#xff1a;以完全格式化的形式展示信息&#xff08;展示全部信息&#xff09; 簡單用法&#xff1a;p…

線性代數-矩陣的秩

矩陣的秩&#xff08;Rank&#xff09;是線性代數中的一個重要概念&#xff0c;表示矩陣中線性無關的行&#xff08;或列&#xff09;的最大數量。它反映了矩陣所包含的“有效信息”的維度&#xff0c;是矩陣的核心特征之一。 直觀理解 行秩與列秩&#xff1a; 行秩&#xff1…

CSS偽類、clip-path實現三角形、箭頭繪制

<template><div :class"$options.name"><div class"triangle-container1"><!-- 偽類三角形&#xff1a;向右 --><div class"triangle-RM"></div><!-- 偽類三角形&#xff1a;向下 --><div class&q…

numpy、pandas內存優化操作整理

前言 python作為一款不怎么關注數據類型的語言&#xff0c;不同類型的數據可以往同一個變量中放置 這也就直接導致&#xff0c;作為熟悉C這種一個變量只有一個類型的程序員來說&#xff0c;在解讀python程序時&#xff0c;想搞清楚變量中到底存的是什么數據類型的時候時常很頭…