1小時 MySQL 數據庫基礎速通

目錄

一、MySQL安裝配置

1、下載mysql

2、下載mysql-shell

二、MySQL基本概念

1. 數據庫(Database)

2. 表(Table)

3. 數據類型(Data Type)

4. 主鍵(Primary Key)

5. 索引(Index)

6. 存儲引擎(Storage Engine)

三、Mysql基礎語句

1、創建、刪除、查看 數據庫

2、在數據庫中創建表

3、對表內數據的修改,以列為例,修改數據值,數據名,增加數據項

4、刪除表中數據項語句

5、刪除整個表

6、表中數據的增刪改查

7、數據庫的導入導出

(1)導出數據庫(備份)

基本語法:

常用參數說明:

(2)導入數據庫(恢復)

前提條件:

基本語法:

注意事項:

8、常用語句

(1)常用

?編輯(2)UNION、INTERSECT?和?EXCEPT

① UNION(并集)

② INTERSECT(交集)

③EXCEPT(差集)

9、子查詢

10、表關聯

(1)內連接(INNER JOIN)

(2)左連接(LEFT JOIN / LEFT OUTER JOIN)

(3)右連接(RIGHT JOIN / RIGHT OUTER JOIN)

11、表索引

12、視圖


一、MySQL安裝配置

1、下載mysql

官方下載地址: MySQL :: MySQL Downloads

windows版本下載點擊這里。下載好之后安裝,一路next,安裝完成。

2、下載mysql-shell

可以直接在vscode里下載,也可以使用workbench

二、MySQL基本概念

1. 數據庫(Database)

數據庫是存儲數據的倉庫,以結構化的方式組織和管理數據。MySQL 中可以創建多個數據庫,每個數據庫獨立存儲不同應用的數據(如電商數據庫、博客數據庫)。

2. 表(Table)

表是數據庫中存儲數據的基本單位,類似 Excel 表格,由行和列組成:

  • 列(Column):也稱字段,定義數據的類型(如姓名、年齡、郵箱)。
  • 行(Row):也稱記錄,是具體的數據條目(如一條用戶信息)。

3. 數據類型(Data Type)

定義表中列的取值類型,常見類型包括:

  • 數值型INT(整數)、FLOAT(浮點數)、DECIMAL(高精度小數,如金額)。
  • 字符串型VARCHAR(n)(可變長度字符串,如姓名)、CHAR(n)(固定長度字符串)、TEXT(長文本)。
  • 日期時間型DATE(日期,如 2023-10-01)、TIME(時間,如 14:30:00)、DATETIME(日期 + 時間)。
  • 其他類型BOOLEAN(布爾值)、ENUM(枚舉,如性別:男 / 女)等。

4. 主鍵(Primary Key)

表中唯一標識一條記錄的字段(或多個字段的組合),具有以下特性:

  • 唯一性:主鍵值在表中不可重復。
  • 非空性:主鍵字段不能為?NULL
  • 通常用?INT?類型并設置自增(AUTO_INCREMENT),方便管理。

5. 索引(Index)

提高查詢效率的數據結構,類似書籍的目錄。對頻繁查詢的字段創建索引,可大幅減少數據掃描范圍,但會增加寫入(插入 / 更新 / 刪除)操作的開銷。常見索引類型:

  • 普通索引(INDEX):加速查詢。
  • 主鍵索引:自動為 primary key 創建的索引。
  • 唯一索引(UNIQUE):索引值唯一,可用于保證字段唯一性(如郵箱不重復)。

6. 存儲引擎(Storage Engine)

MySQL 中數據的存儲和管理方式由存儲引擎決定,不同引擎特性不同,常用引擎:

三、Mysql基礎語句

1、創建、刪除、查看 數據庫

create database world;
show databases;
drop databese world;

在命令行執行如下:

2、在數據庫中創建表

use game; #使用game這個數據庫
create table player(
id int,
name varchar(100),
level int,
exp int,
gold decimal(10,2)
);

3、對表內數據的修改,以列為例,修改數據值,數據名,增加數據項

DESC player; #查看創建的表
Alter table player MODIFY COLUMN name VARCHAR(200);
Alter table player RENAME COLUMN name to nick_name;
Alter table player ADD column last_login datetime;
Alter table player DROP column last_login;

4、刪除表中數據項語句

5、刪除整個表

drop table player;

6、表中數據的增刪改查

insert into player (id,name,level,exp,gold) values(1,'張三',1,1,1); #插入一條數據
insert into player (id,name) values(2,'里斯'); 
selcet * from player; #查看表中數據;update player set level =1 where name = '里斯' #修改表中一條數據的列值
update player set exp=0, gold=0;  #批量修改 單詞操作沒條件限制 非常危險 workbench有safe modedelete from  player where gold=0; #批量刪除

7、數據庫的導入導出

(1)導出數據庫(備份)

使用?mysqldump?命令可以將數據庫中的表結構和數據導出為 SQL 腳本文件,方便備份或遷移。

基本語法:
# 導出整個數據庫(結構+數據)
mysqldump -u 用戶名 -p 數據庫名 > 導出的文件名.sql# 示例(導出名為mydb的數據庫到mydb_backup.sql)
mysqldump -u root -p mydb > mydb_backup.sql
常用參數說明:
  • -u:指定 MySQL 用戶名(如?root)。
  • -p:提示輸入密碼(注意?-p?后無空格,回車后會要求輸入密碼)。
  • --databases:導出多個數據庫(需指定數據庫名列表)。
    mysqldump -u root -p --databases db1 db2 > db1_db2_backup.sql
    

  • --all-databases:導出 MySQL 中所有數據庫(謹慎使用,可能包含系統數據庫)。
  • --no-data:只導出表結構,不包含數據。
    mysqldump -u root -p --no-data mydb > mydb_structure.sql
    

  • --single-transaction:導出時使用事務(適合 InnoDB 引擎,避免鎖表)。

(2)導入數據庫(恢復)

使用?mysql?命令可以將導出的 SQL 腳本文件導入到 MySQL 中,恢復數據或遷移到新環境。

前提條件:
  1. 需先創建目標數據庫(如果不存在):
    # 登錄 MySQL 命令行
    mysql -u root -p# 在 MySQL 交互模式中創建數據庫
    CREATE DATABASE IF NOT EXISTS mydb CHARACTER SET utf8mb4;
    exit;  # 退出 MySQL 交互模式
    
基本語法:
# 導入 SQL 文件到指定數據庫
mysql -u 用戶名 -p 數據庫名 < 導入的文件名.sql# 示例(將mydb_backup.sql導入到mydb數據庫)
mysql -u root -p mydb < mydb_backup.sql
注意事項:
  • 導入前確保 SQL 文件路徑正確(可使用絕對路徑,如?/home/user/backup.sql)。
  • 如果 SQL 文件中已包含?CREATE DATABASE?語句,可直接導入到 MySQL 根目錄(不指定數據庫名):
    mysql -u root -p < mydb_backup.sql

8、常用語句

(1)常用



(2)UNIONINTERSECT?和?EXCEPT

① UNION(并集)

作用:合并兩個或多個查詢的結果集,并自動去除重復行
語法

查詢1
UNION
查詢2;

示例
假設有兩個表?students?和?teachers,都包含?name?列,查詢所有不重復的姓名:

SELECT name FROM students
UNION
SELECT name FROM teachers;

變體UNION ALL
保留所有結果(包括重復行),性能優于?UNION(無需去重):

SELECT name FROM students
UNION ALL
SELECT name FROM teachers;

② INTERSECT(交集)

作用:返回兩個查詢結果集中的共同行(即同時存在于兩個結果集中的行)。
語法

查詢1
INTERSECT
查詢2;

示例
查詢既是學生又是老師的姓名(假設存在重名):

SELECT name FROM students
INTERSECT
SELECT name FROM teachers;

注意

  • MySQL 不直接支持?INTERSECT,可通過?INNER JOIN?替代:

    sql

    SELECT s.name 
    FROM students s
    INNER JOIN teachers t ON s.name = t.name;
    
  • PostgreSQL、SQL Server 等數據庫支持?INTERSECT

③EXCEPT(差集)

作用:返回在第一個查詢結果中存在,但在第二個查詢結果中不存在的行
語法

查詢1
EXCEPT
查詢2;

示例
查詢是學生但不是老師的姓名:

注意

  • MySQL 不支持?EXCEPT,可通過?LEFT JOIN + IS NULL?替代:
    SELECT s.name 
    FROM students s
    LEFT JOIN teachers t ON s.name = t.name
    WHERE t.name IS NULL;
    

  • 部分數據庫中用?MINUS?代替?EXCEPT(如 Oracle)。

9、子查詢

10、表關聯

在 SQL 中,表關聯(JOIN)用于將多個表中的數據通過共同字段連接起來,常見的三種基礎關聯方式是:內連接(INNER JOIN)左連接(LEFT JOIN)右連接(RIGHT JOIN)

(1)內連接(INNER JOIN)

作用:只返回兩個表中匹配條件的交集數據(即兩個表中都存在符合條件的記錄)。
語法

SELECT 列名
FROM 表1
INNER JOIN 表2 
ON 表1.關聯字段 = 表2.關聯字段;

示例
假設有?users?表(用戶信息)和?orders?表(訂單信息),通過?user_id?關聯,查詢有訂單記錄的用戶及其訂單:

SELECT u.name, o.order_id, o.order_time
FROM users u
INNER JOIN orders o 
ON u.id = o.user_id;

結果:只顯示有訂單的用戶及其對應的訂單信息,無訂單的用戶和無對應用戶的訂單都不會出現。

(2)左連接(LEFT JOIN / LEFT OUTER JOIN)

作用:返回左表的所有記錄,以及右表中與左表匹配的記錄;如果右表無匹配,右表字段顯示?NULL
語法

SELECT 列名
FROM 表1(左表)
LEFT JOIN 表2(右表)
ON 表1.關聯字段 = 表2.關聯字段;

示例
查詢所有用戶(包括無訂單的用戶)及其訂單信息:

SELECT u.name, o.order_id, o.order_time
FROM users u
LEFT JOIN orders o 
ON u.id = o.user_id;

結果:所有用戶都會顯示,有訂單的用戶會關聯訂單信息,無訂單的用戶訂單字段為?NULL

(3)右連接(RIGHT JOIN / RIGHT OUTER JOIN)

作用:與左連接相反,返回右表的所有記錄,以及左表中與右表匹配的記錄;如果左表無匹配,左表字段顯示?NULL
語法

SELECT 列名
FROM 表1(左表)
RIGHT JOIN 表2(右表)
ON 表1.關聯字段 = 表2.關聯字段;

示例
查詢所有訂單(包括無對應用戶的異常訂單)及其用戶信息:

SELECT u.name, o.order_id, o.order_time
FROM users u
RIGHT JOIN orders o 
ON u.id = o.user_id;

結果:所有訂單都會顯示,有對應用戶的訂單會關聯用戶信息,無對應用戶的訂單用戶字段為?NULL

  • 關聯時需通過?ON?指定關聯條件(通常是兩表的主鍵和外鍵關系)。
  • 可通過表別名(如?uo)簡化語句。
  • 實際開發中,左連接使用頻率高于右連接(右連接可通過交換表位置轉為左連接)。

11、表索引

12、視圖

表中數據發生變化的時候,視圖中的數據會隨之動態改變。

drop view語句刪除視圖

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

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

相關文章

HTTP應用層協議-長連接

HTTP應用層協議-長連接 關于 connection 報頭 HTTP 中的 Connection 字段是 HTTP 報文頭的一部分&#xff0c;它主要用于控制和管理客戶端與服務器之間的連接狀態 核心作用 ? 管理持久連接&#xff1a;Connection 字段還用于管理持久連接&#xff08;也稱為長連接&#xff09;…

2020/12 JLPT聽力原文 問題一 4番

4番&#xff1a;ホテルの受付で女の人と男の人が話しています。女の人はどこでパソコンを使いますか。女&#xff1a;すみません、パソコンの貸出ってできますか。部屋で仕事をしたいんですけど。 男&#xff1a;申し訳ございません。貸出はしていないんですが、二階にビジネス…

《在 Spring Boot 中安全使用 Qwen API-KEY:環境變量替代明文配置的最佳實踐》

《在 Spring Boot 中安全使用 Qwen API-KEY&#xff1a;環境變量替代明文配置的最佳實踐》 想要的效果其實就是 把 Qwen API-KEY 放到系統環境變量中&#xff0c;然后在 application.yml 里通過占位符讀取&#xff0c;而不寫明文。 這樣即便 application.yml 被提交到 Git&…

Nginx 反向代理與負載均衡架構

一、反向代理基礎 實驗目的&#xff1a;通過 Nginx 反向代理&#xff0c;將客戶端請求按類型&#xff08;靜態頁面 / 動態 PHP 頁面&#xff09;轉發到不同的后端服務器&#xff08;RS1 處理靜態資源&#xff0c;RS2 處理動態請求&#xff09;&#xff0c;實現 “客戶端只與代…

【Mybatis入門】配置Mybatis(IDEA)

Mybatis和JDBC一樣&#xff0c;是連接數據庫的工具。它是一款優秀的持久層框架&#xff0c;主要用于 Java 語言中簡化數據庫操作&#xff0c;實現對象與數據庫表之間的映射。Mybatis相比于JDBC的優勢Mybatis消除了傳統 JDBC 代碼中繁瑣的手動處理、參數設置、結果集解析等重復工…

多路轉接之epoll 【接口】【細節問題】【LT與ET模式】【Reactor】

目錄 一.接口 1.1epoll_creaet 1.2epoll_ctl 1.3epoll_wait 二.細節問題 2.1 工作原理 2.2 epoll的demo 2.3 epoll的優點 三. LT 與 ET模式 理解ET 四. reactor 一.接口 1.1epoll_creaet 注意返回值是一個文件描述符 創建一個epoll模型 1.2epoll_ctl 返回值&…

滲透測試現已成為 CISO 戰略的核心

隨著數字供應鏈的擴展以及生成式人工智能在關鍵系統中的嵌入&#xff0c;安全領導者正在重新思考其網絡安全策略。Emerald Research 最近對 225 位安全領導者進行的一項調查發現&#xff0c;68% 的人擔心第三方軟件和組件帶來的風險。雖然大多數受訪者表示他們正在滿足監管要求…

音視頻學習(五十三):音頻重采樣

概述 音頻重采樣&#xff08;sample rate conversion, SRC&#xff09;是把采樣率從 Fs_in 變換為 Fs_out 的過程。常見場景有格式轉換&#xff08;44.1→48 kHz&#xff09;、采樣率匹配&#xff08;播放鏈路統一采樣率&#xff09;、以及通信中語音采樣率升降&#xff08;8 k…

【C#】正則表達式

一、核心優勢&#xff1a;用一小段規則搞定大量復雜的字符串匹配&#xff0c;查找和替換&#xff0c;并且可移植可復用。使用正則表達式的好處&#xff1a;1. 強大且靈活&#xff1a;可以一次性匹配非常復雜的規則&#xff0c;比如驗證郵箱、提取特定的格式日志、解析URL&#…

【[特殊字符][特殊字符] 協變與逆變:用“動物收容所”講清楚 PHP 類型的“靈活繼承”】

你有沒有遇到過這樣的問題&#xff1a;“為什么子類方法可以返回 Cat&#xff0c;而父類只寫了返回 Animal&#xff1f;” “為什么參數反而能從 CatFood 變成更寬泛的 Food&#xff1f;”這些看似“違反直覺”的設計&#xff0c;其實背后有一個優雅的編程概念&#xff1a;協變…

cesium/resium 修改子模型材質

我是 www.v2ex.com/t/1151549 的作者&#xff0c;在csdn這邊補全一些更多的信息 相關工具 主項目插件版本&#xff1a; "cesium": "^1.131.0",、"resium": "^1.19.0-beta.1"、"three": "^0.178.0"、"react…

nvm install 14.21.3 時npm 無法下載和識別

錯誤&#xff1a;C:\Users\H3C>nvm install 14.21.3 Downloading node.js version 14.21.3 (64-bit)... Complete Downloading npm... Creating C:\Users\H3C\AppData\Local\Temp\nvm-install-939491942\temp Downloading npm version 6.14.18... Error while downloading h…

【網絡運維】Linux:LNMP 項目實踐

LNMP 項目實踐 簡介&#xff1a;什么是 LAMP/LNMP LAMP&#xff1a;LinuxApacheMysql/MariadbPHP/Python/Perl。 LNMP&#xff1a;LinuxNginxMysql/MariadbPHP/Python/Perl。 Linux&#xff1a;操作系統&#xff0c;提供程序運行基礎。Apache/Nginx&#xff1a;Web 服務器&…

用 Docker 安裝并啟動 MySQL:從零到實戰的完整指南

用 Docker 安裝并啟動 MySQL&#xff1a;從零到實戰的完整指南MySQL 是目前最流行的關系型數據庫之一&#xff0c;廣泛應用于各類應用系統中。使用 Docker 部署 MySQL 可以極大簡化環境配置&#xff0c;保證開發、測試和生產環境的一致性。本文將詳細介紹如何使用 Docker 安裝、…

動態規劃----1.爬樓梯

70. 爬樓梯 - 力扣&#xff08;LeetCode&#xff09; /** 1階:1步,即1種; 2階:1步1步或直接2步,即2種 f(1) 1,f(2) 2 3階:由1階邁2步,或2階邁一步; 4階:由2階邁2步,或3階1步; n階:由n-2階邁2步,或n-1階邁1步 f(n) f(n - 1) f(n - 2) */ class Solution {/**1階:1步,即1種…

special topic 11 (1)

preface 雖然我知道專業課必須得學&#xff0c;但是要學的東西&#xff0c;好多&#xff0c;我對專業課很害怕&#xff0c;稍微往后挪一挪&#xff0c;今天學了兩個強化網課之后再學專業課吧。今天的目標是學完 11 到 14.任重道遠&#xff0c;加油&#xff01;從今天開始盡量早…

MTD和FTL的關系

在嵌入式存儲系統里&#xff0c;MTD&#xff08;Memory Technology Device&#xff09;和 FTL&#xff08;Flash Translation Layer&#xff09;是上下兩層、互相配合的概念。你可以把它想成**“原始硬件接口”和“硬盤驅動”**的關系。1. MTD 是什么定位&#xff1a;內核里對原…

自動駕駛 HIL 測試:構建 “以假亂真” 的實時數據注入系統

01 引言在端到端自動駕駛的研發競賽中&#xff0c;算法的迭代速度遠超物理世界的測試能力。單純依賴路測不僅成本高昂、周期漫長&#xff0c;更無法窮盡決定系統安全性的關鍵邊緣場景&#xff08;Corner Cases&#xff09;。因此&#xff0c;硬件在環&#xff08;HIL&#xff0…

jdk升級

列出所有的jdk版本 /usr/libexec/java_home -V 永久切換版本 export JAVA_HOME(/usr/libexec/javahome?v11)exportPATH(/usr/libexec/java_home -v 11) export PATH(/usr/libexec/javah?ome?v11)exportPATHJAVA_HOME/bin:$PATH 保存后執行 source ~/.zshrc

Openlayers基礎教程|從前端框架到GIS開發系列課程(24)openlayers結合canva繪制矩形繪制線

本章節講解Canvas如何結合 Openlayer 使用&#xff0c;首先我們講解Canvas的繪圖基礎。我們初始化地圖的時候可以看見&#xff0c;實際上Openlayer的地圖就是用Canvas實現繪制的。Canvas繪制基本概念什么是canvas&#xff1f;HTML5 <canvas> 元素用于圖形的繪制&#…