MySQL 基礎操作教程

MySQL 是目前最流行的開源關系型數據庫管理系統之一,廣泛應用于Web開發、數據分析等場景。掌握基礎的增刪改查操作是入門的關鍵。本文將從環境準備開始,帶你深入,mysql


一、前置準備:安裝與連接 MySQL

1. 安裝 MySQL

  • Windows:前往 https://dev.mysql.com/ 下載安裝包(選擇 Community Server),按向導完成安裝(注意記錄 root 用戶密碼)。
  • macOS:推薦通過 Homebrew 安裝:
    brew install mysql
    
  • Linux(Ubuntu/Debian):
    sudo apt-get update && sudo apt-get install mysql-server
    

2. 連接 MySQL

安裝完成后,通過命令行工具連接 MySQL(需先啟動服務):

mysql -u root -p  # 輸入安裝時設置的 root 密碼

成功連接后,會看到 MySQL 的命令行提示符 mysql>


二、數據庫操作:創建與管理數據庫

數據庫(Database)是存儲數據的容器,用于組織多個相關表。以下是數據庫的核心操作:

1. 查看所有數據庫

SHOW DATABASES;   #列出服務器中所有數據庫

2. 創建數據庫

CREATE DATABASE IF NOT EXISTS school;   #創建名為 "school" 的數據庫(若不存在)
  • IF NOT EXISTS 是可選參數,避免因數據庫已存在而報錯。
  • 建議指定字符集(如 utf8mb4,支持 emoji)和存儲引擎(如 InnoDB,默認引擎):
    CREATE DATABASE school 
    DEFAULT CHARSET utf8mb4 
    

3. 切換數據庫

USE school;  #切換到 "school" 數據庫(后續操作將基于此數據庫)

執行后提示 Database changed 表示切換成功。

4. 刪除數據庫(謹慎!)

DROP DATABASE IF EXISTS school;  #刪除名為 "school" 的數據庫(數據將永久丟失)

三、表操作:創建與管理數據表

表(Table)是數據庫的核心結構,由行和列組成。創建表時需定義字段的名稱、數據類型、約束(如主鍵、非空等)。

1. 查看當前數據庫的表

SHOW TABLES;  #列出當前數據庫中的所有表(若未創建表則無結果)

2. 創建表

以創建學生表 students 為例:

CREATE TABLE students (id INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '學生ID(主鍵)',name VARCHAR(50) NOT NULL COMMENT '姓名',gender ENUM('男','女','其他') DEFAULT '其他' COMMENT '性別',age TINYINT UNSIGNED COMMENT '年齡(0-255)',birth DATE COMMENT '出生日期',class VARCHAR(20) NOT NULL COMMENT '班級',create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '記錄創建時間',PRIMARY KEY (id)  -- 指定主鍵(唯一標識一條記錄)
)DEFAULT CHARSET utf8mb4;
關鍵參數說明:
  • 數據類型

    • INT UNSIGNED:無符號整數(取值范圍 0~4294967295)。
    • VARCHAR(50):可變長度字符串(最多50字符)。
    • ENUM('男','女','其他'):枚舉類型(僅允許指定值)。
    • DATE:日期(格式 YYYY-MM-DD)。
    • DATETIME:日期時間(格式 YYYY-MM-DD HH:MM:SS)。
    • CURRENT_TIMESTAMP:自動填充當前時間(插入或更新時)。
  • 約束

    • NOT NULL:字段不可為空。
    • AUTO_INCREMENT:自增(主鍵常用,插入新記錄時自動生成唯一ID)。
    • DEFAULT:字段默認值(未顯式賦值時使用)。
    • PRIMARY KEY:主鍵(唯一且非空,用于快速查找記錄)。

3. 查看表結構

DESCRIBE students;  -- 或簡寫 DESC students

輸出結果會顯示字段名、類型、是否為空、默認值、鍵等信息。

4. 修改表結構

(1)添加字段
ALTER TABLE students 
ADD COLUMN email VARCHAR(100) UNIQUE COMMENT '郵箱(唯一)' AFTER class;
  • AFTER class 表示將新字段 email 添加到 class 字段之后(可選,默認添加到末尾)。
(2)修改字段類型
ALTER TABLE students 
MODIFY COLUMN age SMALLINT UNSIGNED COMMENT '年齡(調整類型)';
(3)刪除字段
ALTER TABLE students 
DROP COLUMN birth;  -- 刪除 `birth` 字段(數據將丟失!)

5. 刪除表(謹慎!)

DROP TABLE IF EXISTS students;  -- 刪除 "students" 表(數據永久丟失)

四、數據操作:增刪改查(CRUD)

1. 插入數據(Create)

(1)插入單條記錄
INSERT INTO students (name, gender, age, class) 
VALUES ('張三', '男', 18, '高三1班');
  • 若未指定字段(如 idcreate_time),則使用默認值(id 自增,create_time 自動填充當前時間)。
(2)插入多條記錄
INSERT INTO students (name, gender, age, class) 
VALUES ('李四', '女', 17, '高三1班'),('王五', '男', 19, '高三2班'),('趙六', '其他', 18, '高三1班');

2. 查詢數據(Read)

查詢是最常用操作,通過 SELECT 語句實現。

(1)基礎查詢(查詢所有字段)
SELECT * FROM students;  -- * 表示所有字段
(2)指定字段查詢
SELECT name, age, class FROM students;  -- 只查詢姓名、年齡、班級
(3)條件過濾(WHERE 子句)
-- 查詢高三1班的男生,年齡 >=18
SELECT * FROM students 
WHERE class = '高三1班' AND gender = '男' AND age >= 18;-- 查詢年齡在17-19歲之間的學生(BETWEEN ... AND)
SELECT * FROM students 
WHERE age BETWEEN 17 AND 19;-- 查詢姓名包含“張”的學生(LIKE 模糊查詢,% 匹配任意字符)
SELECT * FROM students 
WHERE name LIKE '%張%';-- 查詢性別為“女”或“其他”的學生(IN 枚舉值)
SELECT * FROM students 
WHERE gender IN ('女', '其他');
(4)排序(ORDER BY)
-- 按年齡降序排序(年齡大的在前)
SELECT * FROM students 
ORDER BY age DESC;-- 先按班級升序,再按年齡降序(多字段排序)
SELECT * FROM students 
ORDER BY class ASC, age DESC;
(5)分組與聚合(GROUP BY + 聚合函數)

統計每個班級的學生人數:

SELECT class, COUNT(*) AS student_count  -- COUNT(*) 統計記錄數
FROM students 
GROUP BY class;  -- 按班級分組

在這里插入圖片描述

(6)分頁(LIMIT)

查詢第2頁數據(每頁10條):

SELECT * FROM students 
LIMIT 10 OFFSET 10;  -- OFFSET 表示跳過的記錄數(第2頁從第11條開始)
-- 簡寫:LIMIT 10, 10(前10條跳過,取接下來的10條)

在這里插入圖片描述

3. 修改數據(Update)

-- 將姓名為“張三”的學生年齡改為19歲
UPDATE students 
SET age = 19 
WHERE name = '張三';  -- 必須加 WHERE 條件,否則會修改所有記錄!

4. 刪除數據(Delete)

-- 刪除高三2班的學生記錄
DELETE FROM students 
WHERE class = '高三2班';  -- 必須加 WHERE 條件,否則會刪除全表數據!

五、注意事項與最佳實踐

  1. 編碼問題:創建數據庫/表時指定 CHARSET=utf8mb4,避免中文或 emoji 亂碼。
  2. 主鍵設計:每張表建議設置主鍵(如自增 id),提高查詢效率。
  3. 避免全表操作UPDATEDELETE 語句必須加 WHERE 條件,否則會修改/刪除所有數據(可先 SELECT 驗證條件)。
  4. 字段類型優化:根據業務需求選擇合適的數據類型,如年齡用 TINYINT 而非 INT,節省空間。

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

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

相關文章

批量把在線網絡JSON文件(URL)轉換成Excel工具 JSON to Excel by WTSolutions

產品介紹 JSON to Excel by WTSolutions 是一款功能強大的工具,能夠將JSON數據快速轉換為Excel格式。該工具提供兩種使用方式:作為Microsoft Excel插件或作為在線網頁應用,滿足不同用戶的需求。無論是處理簡單的扁平JSON還是復雜的嵌套JSON結…

【排序算法】③直接選擇排序

系列文章目錄 第一篇:【排序算法】①直接插入排序-CSDN博客 第二篇:【排序算法】②希爾排序-CSDN博客 第三篇:【排序算法】③直接選擇排序-CSDN博客 第四篇:【排序算法】④堆排序-CSDN博客 第五篇:【排序算法】⑤冒…

2024年ESWA SCI1區TOP,自適應種群分配和變異選擇差分進化算法iDE-APAMS,深度解析+性能實測

目錄1.摘要2.自適應種群分配和變異選擇差分進化算法iDE-APAMS3.結果展示4.參考文獻5.代碼獲取6.算法輔導應用定制讀者交流1.摘要 為了提高差分進化算法(DE)在不同優化問題上的性能,本文提出了一種自適應種群分配和變異選擇差分進化算法&…

目標檢測數據集 - 無人機檢測數據集下載「包含COCO、YOLO兩種格式」

數據集介紹:無人機檢測數據集,真實采集高質量含無人機圖片數據,適用于空中飛行無人機的檢測。數據標注標簽包括 drone 無人機一個類別;適用實際項目應用:無人機檢測項目,以及作為通用檢測數據集場景數據的補…

Linux DNS服務解析原理與搭建

一、什么是DNSDNS 是域名服務 (Domain Name System) 的縮寫,它是由解析器和域名服務器組成的。 域名服務器是指保存有該網絡中所有主機的域名和對應IP地址, 并具有將域名轉換為IP地址功能的服務器。 域名必須對應一個IP地址,而IP地址不一定有…

typecho博客設置瀏覽器標簽頁圖標icon

修改瀏覽器標簽頁圖標(favicon.ico):第1種:上傳到服務器本地目錄1、制作圖標文件:準備一張長寬比為 1:1 的圖片,將其上傳到第三方 ico 生成網站,生成后綴為.ico 的圖片文件,并將其命…

LoadBalancingSpi

本文是 Apache Ignite 中 Load Balancing SPI(負載均衡服務提供接口) 的核心說明,特別是其默認實現 RoundRobinLoadBalancingSpi 的工作原理。 它解釋了 Ignite 如何在集群中智能地將任務(Job)分配到不同的節點上執行&…

Day43--動態規劃--674. 最長連續遞增序列,300. 最長遞增子序列,718. 最長重復子數組

Day43–動態規劃–674. 最長連續遞增序列,300. 最長遞增子序列,718. 最長重復子數組 674. 最長連續遞增序列 方法:動態規劃 思路: dp[i]含義:到i這個位置(包含i)的連續遞增子序列的長度遞推…

支持 UMD 自定義組件與版本控制:從 Schema 到動態渲染

源碼 ? 支持 UMD 自定義組件與版本控制:從 Schema 到動態渲染 在低代碼平臺或可視化大屏 SDK 中,支持用戶上傳自定義組件 是一個必備能力。 而在 React 場景下,自定義組件通常以 UMD 格式 打包并暴露為全局變量。 本篇文章,我…

zookeeper3.8.4安裝以及客戶端C++api編譯

服務端直接下載編譯好的bin版本 Apache Download Mirrors C客戶端需要編譯庫文件 zookeeper 3.8.4 使用與C API編譯 - 丘貍尾 - 博客園 雜七雜八的依賴 sudo apt update sudo apt install -y \autoconf automake libtool libtool-bin m4 pkg-config gettext \cmake build-es…

使用行為樹控制機器人(一) —— 節點

文章目錄一、背景需求二、創建ActionNodes1. 功能實現1.1 頭文件定義1.2 源文件實現1.3 main文件實現1.4 my_tree.xml 實現2. 執行結果三、 執行失敗處理1. 添加嘗試次數1.1 功能實現1.2 實驗結果2. 完善異常處理2.1 多節點組合兜底2.2 實驗結果使用行為樹控制機器人(一) —— …

JavaScript Window Location

JavaScript Window Location JavaScript中的window.location對象是操作瀏覽器地址欄URL的一個非常有用的對象。它允許開發者獲取當前頁面的URL、查詢字符串、路徑等,并且可以修改它們來導航到不同的頁面。以下是關于window.location的詳細解析。 1. window.location…

Kubernetes生產環境健康檢查自動化指南

核心腳本功能: 一鍵檢查集群核心組件狀態自動化掃描節點/Pod異常存儲與網絡關鍵指標檢測風險分級輸出(紅/黃/綠標識)一、自動化巡檢腳本 (k8s-health-check.sh) #!/bin/bash # Desc: Kubernetes全維度健康檢查腳本 # 執行要求:kub…

消息隊列系統測試報告

目錄 一、項目背景 二、RabbitMQ介紹 1.什么是RabbitMQ? 2.RabbitMQ的工作流程是怎么樣的? 3.項目設計 三、測試概述 MQ 測試目標: 測試用例統計: 核心模塊測試詳情及代碼示例: 1. 數據庫管理(Da…

基于 Axios 的 HTTP 請求封裝文件解析

import axios from "axios"; import { ElMessage } from "element-plus"; import store from "/store"; import router from "/router";// 創建axios實例 const service axios.create({baseURL: "http://localhost:8080/api&quo…

PowerDesigner生成帶注釋的sql方法

前提是name里面是有文字的: 方法開始: 第一步: Database → Edit Current DBMS → Script → Objects → Column → Add 把輸出模板改成: %20:COLUMN% %30:DATATYPE%[.Z:[%Compressed%? compressed][ %NULLNOTNULL%][%IDENTITY…

獵板PCB:專業鍵盤PCB板解決方案供應商

獵板PCB深耕印刷電路板(PCB)制造領域,憑借前沿技術與深厚積淀,在鍵盤PCB板細分市場積極布局,致力于為不同客戶提供多樣化、高性能的鍵盤PCB板產品,滿足多元需求。一、定義:鍵盤PCB板鍵盤PCB板&a…

基于 Spring Boot 的登錄功能實現詳解

在 Web 應用開發中,登錄功能是保障系統安全的第一道防線。本文將結合實際代碼,詳細解析一個基于 Spring Boot 框架的登錄功能實現,包括驗證碼生成、用戶驗證、Token 機制等關鍵環節。技術棧概覽本登錄功能實現涉及以下核心技術和組件&#xf…

vue+django 大模型心理學智能診斷評測系統干預治療輔助系統、智慧心理醫療、帶知識圖譜

vuedjango 大模型心理學智能診斷評測系統干預治療輔助系統、智慧心理醫療、帶知識圖譜文章結尾部分有CSDN官方提供的學長 聯系方式名片 文章結尾部分有CSDN官方提供的學長 聯系方式名片 關注B站,有好處!編號:D003 pro基于大模型心理學問卷、智能診斷&…