21 天 Python 計劃:MySQL中DML與權限管理

文章目錄

    • 前言
    • 一、介紹
    • 二、MySQL數據操作:DML
      • 2.1 插入數據(INSERT)
        • 2.1.1 插入完整數據(順序插入)
        • 2.1.2 指定字段插入數據
        • 2.1.3 插入多條記錄
        • 2.1.4 插入查詢結果
      • 2.2 更新數據(UPDATE)
      • 2.3 刪除數據(DELETE)
        • 練習
      • 2.4 查詢數據(SELECT)
        • 2.4.1 單表查詢
          • 基本語法
          • 示例
          • 查詢所有學生的信息
          • 查詢所有學生的姓名和年齡
          • 查詢年齡大于 20 歲的學生信息
        • 2.4.2 多表查詢
          • 基本類型
          • 內連接(INNER JOIN)
          • 左連接(LEFT JOIN)
          • 右連接(RIGHT JOIN)
          • 全連接(FULL JOIN)
          • 示例
        • 2.4.3 總結
    • 三、權限管理
      • 3.1 授權表
      • 3.2 創建用戶
      • 3.3 授權
      • 3.4 刪除權限
    • 結語

前言

Python是一種強大且易于學習的編程語言。通過這個21天的計劃,我們將逐步深入MySQL中DML與權限管理。無論你是初學者還是有一定基礎的開發者,這個計劃都將幫助你鞏固和擴展你的Python知識。

在學習本篇之前,我們先復習一下前面的內容:
day1:Python下載和開發工具介紹
day2:數據類型、字符編碼、文件處理
day3:基礎語法與課外練習
day4:函數簡單介紹
day5:模塊與包
day6:常用模塊介紹
day7:面向對象
day8:面向對象高級
day9:異常處理
day10:網絡編程
day11:并發編程
day12:MySQL數據庫初識
day13:MySQL庫相關操作
day14:MySQL表相關操作

一、介紹

在數據庫管理中,數據的操作和權限管理是至關重要的環節。MySQL作為一款廣泛使用的關系型數據庫管理系統,提供了強大的功能來滿足這些需求。本文將詳細介紹MySQL中數據操作語言(DML)的使用,包括數據的插入、更新、刪除和查詢,同時也會涉及到用戶權限管理的相關內容。

二、MySQL數據操作:DML

2.1 插入數據(INSERT)

在MySQL中,使用INSERT語句可以將數據插入到表中,具體有以下幾種方式:

2.1.1 插入完整數據(順序插入)
  • 語法一
INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(1,2,3…值n);

這種語法明確指定了要插入數據的字段,然后按照字段順序提供對應的值。

  • 語法二
INSERT INTO 表名 VALUES (1,2,3…值n);

此語法要求提供的值的順序與表中字段的順序一致,適用于插入所有字段的數據。

2.1.2 指定字段插入數據
INSERT INTO 表名(字段1,字段2,字段3) VALUES (1,2,3);

當只需要插入部分字段的數據時,可以使用這種語法,只指定要插入數據的字段及其對應的值。

2.1.3 插入多條記錄
INSERT INTO 表名 VALUES(1,2,3…值n),(1,2,3…值n),(1,2,3…值n);

通過這種方式可以一次性插入多條記錄,提高插入效率。

2.1.4 插入查詢結果
INSERT INTO 表名(字段1,字段2,字段3…字段n) SELECT (字段1,字段2,字段3…字段n) FROM2WHERE;

該語法可以將從另一個表中查詢到的結果插入到指定的表中,方便數據的遷移和整合。

2.2 更新數據(UPDATE)

使用UPDATE語句可以對表中的數據進行更新,語法如下:

UPDATE 表名 SET字段1=1,字段2=2,WHERE CONDITION;

其中,SET子句用于指定要更新的字段及其新值,WHERE子句用于指定更新的條件。例如:

UPDATE mysql.user SET password=password('123') where user='root' and host='localhost';

這條語句將mysql.user表中user為root且host為localhost的記錄的password字段更新為加密后的123。

2.3 刪除數據(DELETE)

DELETE語句用于從表中刪除數據,語法如下:

DELETE FROM 表名 WHERE CONITION;

WHERE子句用于指定刪除的條件,如果不指定WHERE子句,則會刪除表中的所有記錄。例如:

DELETE FROM mysql.user WHERE password='';

這條語句將mysql.user表中password為空的記錄刪除。

練習
  • 更新MySQL root用戶密碼為mysql123
UPDATE mysql.user SET password=password('mysql123') WHERE user='root';
  • 刪除除從本地登錄的root用戶以外的所有用戶
DELETE FROM mysql.user WHERE user!='root' OR (user='root' AND host!='localhost');

2.4 查詢數據(SELECT)

在數據庫操作的眾多功能中,查詢數據無疑是使用頻率最高的一項。MySQL作為一款廣泛應用的關系型數據庫管理系統,為我們提供了強大且豐富的查詢功能,其中單表查詢和多表查詢是兩個重要的組成部分。下面我們將詳細探討這兩種查詢方式。

2.4.1 單表查詢

單表查詢是指僅從一個表中獲取數據的查詢操作。它是數據庫查詢中最基礎、最常見的操作,適用于只需要從一個數據源獲取信息的場景。

基本語法

單表查詢的基本語法如下:

SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • SELECT關鍵字用于指定要查詢的列,可以是一個或多個列,用逗號分隔。如果要查詢所有列,可以使用 * 通配符。
  • FROM關鍵字用于指定要查詢的表名。
  • WHERE子句是可選的,用于指定查詢條件,只有滿足條件的記錄才會被返回。
示例

假設我們有一個名為students的表,包含 id、name、age和 gender四個列,以下是一些常見的單表查詢示例:

查詢所有學生的信息
SELECT * FROM students;

這個查詢將返回students表中的所有記錄和所有列。

查詢所有學生的姓名和年齡
SELECT name, age FROM students;

這個查詢只返回 name和 age兩列的數據。

查詢年齡大于 20 歲的學生信息
SELECT * FROM students WHERE age > 20;

這個查詢使用 WHERE子句過濾出年齡大于 20 歲的學生記錄。

2.4.2 多表查詢

多表查詢是指從多個表中獲取數據的查詢操作。在實際應用中,數據往往分散在多個表中,通過多表查詢可以將這些數據關聯起來,獲取更全面的信息。

基本類型

多表查詢主要有以下幾種類型:

內連接(INNER JOIN)

內連接是最常用的多表查詢類型,它只返回兩個表中滿足連接條件的記錄。

SELECT column1, column2, ...
FROM table1
INNER JOIN table2
ON table1.column = table2.column;
左連接(LEFT JOIN)

左連接返回左表中的所有記錄,以及右表中滿足連接條件的記錄。如果右表中沒有匹配的記錄,則用 NULL填充。

SELECT column1, column2, ...
FROM table1
LEFT JOIN table2
ON table1.column = table2.column;
右連接(RIGHT JOIN)

右連接與左連接相反,它返回右表中的所有記錄,以及左表中滿足連接條件的記錄。如果左表中沒有匹配的記錄,則用 NULL填充。

SELECT column1, column2, ...
FROM table1
RIGHT JOIN table2
ON table1.column = table2.column;
全連接(FULL JOIN)

全連接返回兩個表中的所有記錄,無論是否滿足連接條件。如果沒有匹配的記錄,則用 NULL填充。

SELECT column1, column2, ...
FROM table1
FULL JOIN table2
ON table1.column = table2.column;
示例

假設我們有兩個表:orders 表包含 order_id、customer_id 和 order_date列,customers表包含 customer_id、customer_name和 customer_email列。以下是一個內連接的示例:

SELECT orders.order_id, customers.customer_name, orders.order_date
FROM orders
INNER JOIN customers
ON orders.customer_id = customers.customer_id;

這個查詢將返回每個訂單的訂單號、客戶姓名和訂單日期。

2.4.3 總結

單表查詢和多表查詢是 MySQL 中非常重要的查詢功能。單表查詢適用于從單個數據源獲取信息,而多表查詢則可以將多個表中的數據關聯起來,獲取更全面的信息。通過不斷學習和實踐,我們可以熟練掌握這兩種查詢方式,更好地處理和分析數據庫中的數據。

三、權限管理

在MySQL中,權限管理是保障數據安全的重要手段,通過授權表來控制用戶對數據庫、表和字段的訪問權限。

3.1 授權表

  • user:該表放行的權限,針對所有數據,所有庫下所有表,以及表下的所有字段。
  • db:該表放行的權限,針對某一數據庫,該數據庫下的所有表,以及表下的所有字段。
  • tables_priv:該表放行的權限,針對某一張表,以及該表下的所有字段。
  • columns_priv:該表放行的權限,針對某一個字段。

3.2 創建用戶

create user 'xiao'@'1.1.1.1' identified by '123';
create user 'xiao'@'192.168.1.%' identified by '123';
create user 'xiao'@'%' identified by '123';

以上語句分別創建了可以從1.1.1.1、192.168.1網段和任意地址登錄的用戶xiao,密碼均為123。

3.3 授權

常用權限有select、update、alter、delete,all可以代表除了grant之外的所有權限。

  • 針對所有庫的授權
grant select on *.* to 'xiao1'@'localhost' identified by '123';

該語句授予用戶xiao1在本地登錄時對所有數據庫的select權限,只在user表中可以查到該用戶的select權限被設置為Y。

  • 針對某一數據庫
grant select on db1.* to 'xiao2'@'%' identified by '123';

此語句授予用戶xiao2對數據庫db1的所有表的select權限,只在db表中可以查到該用戶的select權限被設置為Y。

  • 針對某一個表
grant select on db1.t1 to 'xiao3'@'%' identified by '123';

該語句授予用戶xiao3對數據庫db1中表t1的select權限,只在tables_priv表中可以查到該用戶的select權限。

  • 針對某一個字段
grant select (id,name),update (age) on db1.t3 to 'xiao4'@'localhost' identified by '123';

此語句授予用戶xiao4在本地登錄時對數據庫db1中表t3的id和name字段的select權限,以及age字段的update權限,可以在tables_priv和columns_priv中看到相應的權限。

3.4 刪除權限

revoke select on db1.* from 'xiao'@'%';

該語句撤銷用戶xiao從任意地址登錄時對數據庫db1的所有表的select權限。

結語

通過這個21天的Python計劃,我們了解了MySQL中數據操作語言(DML)的使用,包括數據的插入、更新、刪除和查詢,以及用戶權限管理的相關內容。希望這些內容能幫助你更好地理解和使用Python。繼續學習和實踐,你將成為一名優秀的Python開發者!

📢 注意啦!文末有彩蛋!參與評論就有機會把這本好書抱回家~動動手指,說不定下個錦鯉就是你!贈書福利

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

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

相關文章

微信小程序 -- 原生封裝table

文章目錄 table.wxmltable.wxss注意 table.js注意 結果數據結構 最近菜鳥做微信小程序的一個查詢功能,需要展示excel里面的數據,但是菜鳥找了一圈,也沒發現什么組件庫有table,畢竟手機端好像確實不太適合做table! 菜鳥…

LangChain-輸出解析器 (Output Parsers)

輸出解析器是LangChain的重要組件,用于將語言模型的原始文本輸出轉換為結構化數據。本文檔詳細介紹了輸出解析器的類型、功能和最佳實踐。 概述 語言模型通常輸出自然語言文本,但在應用開發中,我們經常需要將這些文本轉換為結構化的數據格式…

【安全】加密算法原理與實戰

為了理解SSL/TLS原理,大家需要掌握一些加密算法的基礎知識。當然,這不是為了讓大家成為密碼學專家,所以只需對基礎的加密算法有一些了解即可。基礎的加密算法主要有哈希(Hash,或稱為散列)?、對稱加密(Symm…

MySQL 優化教程:讓你的數據庫飛起來

文章目錄 前言一、數據庫設計優化1. 合理設計表結構2. 范式化與反范式化3. 合理使用索引 二、查詢優化1. 避免使用 SELECT *2. 優化 WHERE 子句3. 優化 JOIN 操作 三、服務器配置優化1. 調整內存分配2. 調整并發參數3. 優化磁盤 I/O 四、監控與分析1. 使用 EXPLAIN 分析查詢語句…

LangChain4j(1):初步認識Java 集成 LLM 的技術架構

LangChain 作為構建具備 LLM 能力應用的框架,雖在 Python 領域大放異彩,但 Java 開發者卻只能望洋興嘆。LangChain4j 正是為解決這一困境而誕生,它旨在借助 LLM 的強大效能,增強 Java 應用,簡化 LLM 功能在Java應用中的…

Linux服務器安裝百度飛槳3.0(pip docker)

Linux安裝部署百度飛槳3.0 1.官方文檔指引2.確認服務器型號2.1 確認Python版本2.2 確認pip是否安裝2.3 確認計算平臺 3.本機安裝(基于通過 pip 安裝)3.1 下載安裝 PaddlePaddle3.2 安裝PaddleX3.2.1 安裝PaddleX3.2.2 命令行規范3.2.3 運行示例3.2.4 查看…

Spring Boot 自動加載流程詳解

前言 Spring Boot 是一個基于約定優于配置理念的框架,它通過自動加載機制大大簡化了開發者的配置工作。本文將深入探討 Spring Boot 的自動加載流程,并結合源碼和 Mermaid 圖表進行詳細解析。 一、Spring Boot 自動加載的核心機制 Spring Boot 的自動加…

2025年危化品安全管理人員備考指南|智能題庫+核心考點解析

作為危化品生產單位安全管理人員(主要負責人),考試內容主要涵蓋三大模塊: 法律法規體系 《安全生產法》修訂要點(2023版) 危險化學品重大危險源辨識標準(GB 18218) 最新《化工過…

如何優雅使用 ReentrantLock 進行加解鎖:避免常見坑點,提高代碼可維護性

引言:鎖的基本概念和問題 在多線程編程中,為了確保多個線程在訪問共享資源時不會發生沖突,我們通常需要使用 鎖 來同步對資源的訪問。Java 提供了不同的鎖機制,其中 ReentrantLock 是一種最常用且功能強大的鎖,它屬于…

Redhat紅帽 RHCE8.0認證體系課程

課程大小:7.7G 課程下載:https://download.csdn.net/download/m0_66047725/90546064 更多資源下載:關注我 紅帽企業 Linux 系統的管理技能已經成為現代數據中心的核心競爭力。 Linux 在支持混合云、跨物理服務器、虛機、私有云和公共云計…

Shell腳本編程

目錄 1. Shell腳本概述 什么是Shell? Shell的作用 常見的Shell類型 2. 環境搭建與安裝 Linux系統 macOS系統 Windows系統 3.安裝并配置Zsh(macOS/Linux) 4. Shell基礎語法 變量與數據類型 輸入交互 5. Shell腳本進階 進程管理 …

學生管理系統(Python)

運行結果: 源代碼: """ 項目:類似于學生管理系統---增刪改查 """ #封裝一個學生類 import random class Student: def __init__(self,stuid,name,score): self.stuid stuid self.name name self.score …

電商素材革命:影刀RPA魔法指令3.0驅動批量去水印,實現秒級素材凈化

本文 去除水印實操視頻展示電商圖片水印處理的困境?影刀 RPA 魔法指令 3.0 強勢登場?利用魔法指令3.0兩步實現去除水印操作關于影刀RPA 去除水印實操視頻展示 我們這里選擇了4張小紅書里面比較帥氣的圖片,但凡用過小紅書的都知道,小紅書右下角是會有小…

Seq2Seq - GRU補充講解

nn.GRU 是 PyTorch 中實現門控循環單元(Gated Recurrent Unit, GRU)的模塊。GRU 是一種循環神經網絡(RNN)的變體,用于處理序列數據,能夠更好地捕捉長距離依賴關系。 ?重點掌握輸入輸出部分輸入張量&#…

設計模式-觀察者模式和發布訂閱模式區別

文章目錄 其他不錯的文章 二者有類似的地方,也有區別。 引用的文章說的已經比較清楚了,這里只列出對比圖。 對比點觀察者模式發布訂閱模式中間人角色無事件中心,觀察者直接訂閱目標有事件中心,發布者與訂閱者通過事件中心通信關系…

【SQL】基于多源SQL 去重方法對比 -- 精華版

【SQL】基于SQL 去重方法對比 -- 精華版 一、引言二、基于SQL去重方法完整對比1. MySQL去重方法及優劣勢1.1 ?DISTINCT關鍵字1.2 GROUP BY子句1.3 UNION系列操作1.4 子查詢 自關聯 2. Hive去重方法及優劣勢2.1 DISTINCT關鍵字2.2 ?GROUP BY子句2.3 ?ROW_NUMBER窗口函數2.4 …

電腦命名配置很高,為什么運行軟件特別卡

估計很多同學都碰見過這種情況,以我的Redmi G為例,I9-14待CPU,又換了一條內存條,現有配置I9-14900,40G內存5200MT/s,4060顯卡,為啥運行兩個辦公軟件就卡的不行,風扇狂轉,…

Spring Boot默認注冊的轉換器列表及其功能說明。這些轉換器使得控制器方法可以直接接收Integer、Long、Date等類型參數,無需手動實現轉換

以下是Spring Boot默認注冊的轉換器列表及其功能說明。這些轉換器使得控制器方法可以直接接收Integer、Long、Date等類型參數,無需手動實現轉換: 默認轉換器列表及功能 1. 基礎類型轉換器 轉換器名稱功能示例場景StringToIntegerConverter將字符串轉換…

chrome提示https不安全, 不能記住賬號密碼怎么辦? 可以利用js輸入賬號

背景: 在內網搭建的服務, 由于https證書問題, 可能會被chrome瀏覽器提示不安全 此時, 默認的記住賬號密碼功能就無法使用, 那么此時只能手動輸入了嗎? 想到了幾種方案 1.利用外置軟件, 模擬按鍵輸入(比如按鍵精靈, 缺點是依賴外部軟件, 運行速度也慢, 且執行時占用了輸入焦…

探秘Transformer系列之(25)--- KV Cache優化之處理長文本序列

探秘Transformer系列之(25)— KV Cache優化之處理長文本序列 文章目錄 探秘Transformer系列之(25)--- KV Cache優化之處理長文本序列0x00 概述0x01 優化依據1.1 稀疏性1.2 重要性1.3 小結 0x02 稀疏化1.1 分類1.2 靜態稀疏化1.2.1…