爬蟲學習--12.MySQL數據庫的基本操作(下)

MySQL查詢數據

?

MySQL 數據庫使用SQL SELECT語句來查詢數據。

語法:在MySQL數據庫中查詢數據通用的 SELECT 語法

SELECT 字段1,字段2,……,字段n FROM table_name [WHERE 條件] [LIMIT N]

?

  • 查詢語句中你可以使用一個或者多個表,表之間使用逗號(,)分割,并使用WHERE語句來設定查詢條件。

  • SELECT 命令可以讀取一條或者多條記錄。

  • 可以使用星號(*)來代替其他字段,SELECT語句會返回表的所有字段數據

  • 可以使用 WHERE 語句來包含條件。

  • 可以使用 LIMIT 屬性來設定返回的記錄數。

實例:返回數據表 book_data 的所有記錄

# 數據表
create table book_data(
? ? id int auto_increment,
? ? book_name varchar(10),
? ? book_price int,
? ? book_love varchar(5),
? ? primary key(id)
)default charset="utf8";

insert into book_data(book_name, book_price, book_love) values ("三國演義", 100, "男");
insert into book_data(book_name, book_price, book_love) values ("紅樓夢", 80, "女");
insert into book_data(book_name, book_price, book_love) values ("水滸傳", 110, "男");
insert into book_data(book_name, book_price, book_love) values ("西游記", 150, "男");
insert into book_data(book_name, book_price, book_love) values ("羊皮卷", 250, "男");
insert into book_data(book_name, book_price, book_love) values ("鬼谷子", 110, "女");
insert into book_data(book_name, book_price, book_love) values ("甄嬛傳", 110, "女");
insert into book_data(book_name, book_price, book_love) values ("三國演義2", 110, "男");
insert into book_data(book_name, book_price, book_love) values ("西游記續集", 110, "男");


select * from book_tbl;

where查詢

模糊查詢

在 MySQL 中,LIKE 關鍵字主要用于搜索匹配字段中的指定內容。其語法格式如下:

select book_price from book_data where book_price like '110';
# 查詢所有以110的價格select * from book_data where book_price like '1%%';

范圍查詢 between

between......and......表示在一個連續的范圍內查詢

in......表示在一個非連續的范圍內查詢

SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;
SELECT column_name(s) FROM table_name WHERE column_name IN (value1, value2, ...);

示例語句

select  * from book_data where id >= 3 and id <= 8;
select * from book_data where id between 3 and 8;
select * from book_data where not(id between 3 and 8) and book_name="三國演義";
select * from book_data where id in (2,4,6);
select * from book_data where id not in (2,4,6);

空判斷查詢

is null 查詢某個字段為空的數據

增加數據集 
insert into book_data(book_name, book_price) values ("老人與海", 110);
insert into book_data(book_name, book_price) values ("孫子兵法", 100);
insert into book_data(book_name, book_price) values ("紅與黑", 90);
insert into book_data(book_name, book_price) values ("鬼吹燈", 210);
?
select * from book_data where book_love is null;
select * from book_data where book_love is not null;
?

高級查詢

分頁查詢---limit

limit---分頁查詢語法 start---表示開始行索引,默認0 count---表示查詢條數

select * from 表名 limit start,count;
?
select * from book_data where book_love="男" limit 0,5;
# 查詢前五行sex=男的數據

聚合查詢

通常對表中的數據進行統和計算

count()---求指定列的總行數

max()---求指定列最大值

min()---求指定列的最小值

sum()---求指定列和

avg()---求平均數

select count(id) from book_data;
?
select count(*) from book_data;
?
select max(book_price) from book_data where book_love="女";
?
select sum(book_price) from book_data;
?

排序---order by

升序 ---- asc

降序 ---- desc

select * from book_data order by book_price desc;
?
select * from book_data order by book_price asc;

分組查詢

  • group by 列名 【條件表達式】

增加數據集合?
insert into book_data(book_name, book_price, book_love) values ("三國演義", 200, "男");
insert into book_data(book_name, book_price, book_love) values ("紅樓夢", 200, "女");
insert into book_data(book_name, book_price, book_love) values ("水滸傳", 200, "男");
insert into book_data(book_name, book_price, book_love) values ("西游記", 200, "男");


select book_name,sum(book_price) from book_data group by book_name;
# 查詢書名一致的書本價格總和

  • group_concat() 統計每個分組指定字段的信息集合

select book_name,group_concat(book_price) from book_data group by book_name;

連接查詢

數據集
create table book_author(id int auto_increment,name varchar(10),book_id int,primary key (id)
)default charset="utf8";
?
insert into book_author(name, book_id) values ("羅貫中",1);
insert into book_author(name, book_id) values ("曹雪芹",2);
insert into book_author(name, book_id) values ("施耐庵",3);
insert into book_author(name, book_id) values ("吳承恩",4);
內連接

查詢兩張表中符合條件的共有記錄

inner join---內連接關鍵字,一張表連接另外一張表

on---連接查詢條件

select book_data.book_name,book_author.name from book_data inner join book_author on book_data.id = book_author.book_id;
?
# 查詢兩張表id值相同的name和book_name
左連接

查詢左邊所有記錄和右表符合條件的記錄

left join

insert into book_author(name, book_id) values ("孫 武",11);
insert into book_author(name, book_id) values ("海明威",10);
?
select book_data.book_name,book_author.name from book_data left join book_author on book_data.id =book_author.book_id;
# 根據左表id查詢右表相同數據,右表不存在即為null
右連接

查詢右表所有記錄和左表符合條件的記錄

right join

select book_author.name,book_data.book_name from book_author right join book_data on book_author.book_id = book_data.id;
# 根據右表id查詢左表相同數據,左表不存在即為null

pymysql操作MySQL數據庫

python操作數據庫流程

創建連接—獲取游標—執行命令—關閉游標—關閉連接

圖解:

代碼實現

第三方模塊的安裝 ?pip install pymysql 
?
?
import pymysql
?
# 創建鏈接
db = pymysql.Connect(host="127.0.0.1",port=3306,user="root",password="123456",db="xiangxue"
)
# 創建游標,用于傳遞python給MySQL的命令和MySQL返回的內容
cursor = db.cursor()
?
# SQL插入語句
sql = "insert into book_tbl(book_id, book_title, book_author,book_date) values (4,'python基礎','xx3',NOW())"
# 執行SQL語句
cursor.execute(sql)
# 提交到數據庫執行
db.commit()

csv文件寫入MySQL數據庫

import csv
import pymysql

conn = pymysql.Connect(
? ? host="127.0.0.1",
? ? port=3306,
? ? user="root",
? ? password="123456",
? ? db="xiangxue"
)

cursor = conn.cursor()

with open('douban.csv', 'r', encoding='utf-8') as file:
? ? reader = csv.reader(file)
? ? data = [row for row in reader]
? ? print(data)
sql = 'INSERT INTO douban(title, grade, link,quote) VALUES (%s, %s, %s,%s)'

for row in data:
? ? cursor.execute(sql, row)
conn.commit()
cursor.close()
conn.close()
?

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

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

相關文章

uni-app項目在微信開發者工具打開時報錯[ app.json 文件內容錯誤] app.json: 在項目根目錄未找到 app.json

uni-app項目在微信開發者工具打開時報錯[ app.json 文件內容錯誤] app.json: 在項目根目錄未找到 app.json 出現這個問題是因為打開的文件地址不對&#xff0c;解決這個問題首先我們要查看是否有unpackage文件夾&#xff0c;如果有&#xff0c;項目直接指向unpackage\dist\dev\…

vue3使用mitt.js進行各種組件間通信

我們在vue工程中&#xff0c;除開vue自帶的什么父子間&#xff0c;祖孫間通信&#xff0c;還有一個非常方便的通信方式&#xff0c;類似Vue2.x 使用 EventBus 進行組件通信&#xff0c;而 Vue3.x 推薦使用 mitt.js。可以實現各個組件間的通信 優點&#xff1a;首先它足夠小&…

【云原生】Kubeadm部署k8s

目錄 一、部署步驟 二、部署kubernetes 2.1、所有節點關閉防火墻 核心防護 iptables規則 swap交換 2.2、修改主機名并添加主機映射 2.3、調整內核參數 三、安裝Docker 3.1、所有節點安裝docker 3.2、所有接點添加鏡像加速器 3.3、開啟docker、并設置開機自啟、查看狀態…

ESP32學習筆記:WS2812B驅動

WS2812B是一款貼片RGB燈。由于采用了單總線通訊&#xff0c;所以需要特別關注下它的通訊時序。 調試細節&#xff1a; 本來以為會是一個比較簡單的調試&#xff0c;結果還是花了很長時間才調試完成。 首先是關于ESP32的納秒級延時確定&#xff0c;當時按照空指令始終調試不出來…

Linux中的計劃任務(crontab)詳解

&#x1f407;明明跟你說過&#xff1a;個人主頁 &#x1f3c5;個人專欄&#xff1a;《Linux &#xff1a;從菜鳥到飛鳥的逆襲》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目錄 一、前言 1、Linux的起源與發展 2、什么是計劃任務&#xf…

超詳細的前后端實戰項目(Spring系列加上vue3)(一步步實現+源碼)前端篇(一)

最近想著一步步搭建一個前后端項目&#xff0c;將每一步詳細的做出來。&#xff08;如果有不足或者建議&#xff0c;也希望大佬們指出哦&#xff09; 前端初始化 1.根據vue腳手架創建vue項目 這里可以用很多方法創建vue項目&#xff0c;大家看著創建吧&#xff0c;只要能創建…

k8s 部署mqtt簡介

在Kubernetes&#xff08;K8s&#xff09;中部署MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;服務通常涉及以下幾個步驟&#xff1a; 選擇MQTT Broker MQTT Broker是MQTT消息傳遞的中間件。流行的MQTT Broker包括Mosquitto, HiveMQ, EMQ X等。你需要選擇一…

機器學習面試問題總結 | 貝葉斯網絡

本文給大家帶來的百面算法工程師是機器學習中貝葉斯網路面試總結&#xff0c;文章內總結了常見的提問問題&#xff0c;旨在為廣大學子模擬出更貼合實際的面試問答場景。在這篇文章中&#xff0c;我們還將介紹一些常見的面試問題&#xff0c;并提供參考的回答及其理論基礎&#…

K8S Secret管理之SealedSecrets

1 關于K8S Secret 我們通常將應用程序使用的密碼、API密鑰保存在K8S Secret中&#xff0c;然后應用去引用。對于這些敏感信息&#xff0c;安全性是至關重要的&#xff0c;而傳統的存儲方式可能會導致密鑰在存儲、傳輸或使用過程中受到威脅&#xff0c;例如在git中明文存儲密碼…

FreeRTOS_事件組_學習筆記

事件組 原文鏈接 事件組是一個整數&#xff0c;其中的高8位留給內核&#xff0c;只能用其他位來表示時間 每一位代表一個事件&#xff0c;且每個時間的含義由程序員決定 1為發生&#xff0c;0為未發生 一個/多個任務或ISR都能讀寫這些位 可以等待某一位&#xff0c;也可以等待…

如何理解合約中的引用類型(3)——Mapping

映射&#xff08;mapping&#xff09; 聲明形式&#xff1a;mapping(key type > value type)keytype可以是除枚舉外的幾乎任何基本類型&#xff0c;包括bytes和string&#xff0c;不包括用戶自定義的復雜類型-合約&#xff0c;枚舉&#xff0c;結構&#xff0c;映射value t…

簡單美觀易上手的 Docker Compose 可視化管理器 Dockge

本文首發于只抄博客&#xff0c;歡迎點擊原文鏈接了解更多內容。 前言 Dockge 是 Uptime Kuma 作者的新作品&#xff0c;因此 UI 風格與 Uptime Kuma 基本一致&#xff0c;如果你正在使用 Uptime Kuma 的話&#xff0c;那么 Dockge 的 UI 設計應該也不會讓你失望。Dockge 主打…

智慧校園為高校帶來哪些價值

在21世紀的教育圖景中&#xff0c;"智慧"不再僅僅是一個科技名詞&#xff0c;它已成為衡量教育現代化水平的重要標志。智慧校園&#xff0c;這一融合了物聯網、大數據、云計算等先進技術的教育新形態&#xff0c;正逐步成為高校轉型升級的關鍵驅動力。本文將從多個維…

note-網絡是怎樣連接的2 協議棧和網卡

助記提要 協議棧的結構協議棧創建連接的實際過程協議棧發送數據包的2個判斷依據TCP確認數據收到的原理斷開連接的過程路由表和ARPMAC地址的分配MAC模塊的工作通過電信號讀取數據的原理網卡和協議棧接收包的過程ICMPUDP協議的適用場景 2章 用電信號傳輸TCP/IP數據 探索協議棧和…

BUUCTF靶場 [reverse]easyre、reverse1、reverse2

工具&#xff1a; DIE&#xff1a;下載&#xff1a;https://download.csdn.net/download/m0_73981089/89334360 IDA&#xff1a;下載&#xff1a;https://hex-rays.com/ida-free/ 新手小白勇闖逆向區&#xff01;&#xff01;&#xff01; [reverse]easyre 首先查殼&#xf…

如何理解HTML語義化

如何理解HTML語義化 HTML語義化&#xff0c;簡單來說&#xff0c;就是使用HTML標簽來清晰地表達頁面內容的結構和意義&#xff0c;而不僅僅是作為布局的容器。它強調使用具有明確含義的HTML標簽來描述頁面元素&#xff0c;而不是僅僅依賴CSS來實現頁面的外觀和布局。 理解HTM…

android 權限相關定義解釋

1 PID &#xff1a;程序一運行系統就會自動分配給進程一個獨一無二的PID&#xff0c;內部線程可以共享 該pid的分配的內存數據 2 UID&#xff1a;User Identifier,UID在linux中就是用戶的ID&#xff0c;表明時哪個用戶運行了這個程序&#xff0c;主要用于權限的管理。內部共享各…

【oracle003】圖片轉為字節、base64編碼等形式批量插入oracle數據庫并查詢

1.熟悉、梳理、總結下Oracle相關知識體系 2.歡迎批評指正&#xff0c;跪謝一鍵三連&#xff01; 資源下載&#xff1a; oci.dll、oraocci11.dll、oraociei11.dll3個資源文件資源下載&#xff1a; Instant Client Setup.exe資源下載&#xff1a; oci.dll、oraocci11.dll、oraoc…

Vue ref訪問這些元素或組件的實例

可以在任意DOM元素上使用ref屬性&#xff0c;然后在Vue實例中通過this.$refs訪問這個DOM元素 1.訪問子組件實例&#xff0c;可以調用方法或者獲取值 <template><div><input type"text" ref"myInput" /><button click"focusInp…

ubuntu手動替換源后,更新源時提示“倉庫.... jammy Release“ 沒有Release文件

問題如圖所示&#xff0c;由于問題不好定位&#xff0c;我就從替換源&#xff0c;以及解決錯誤提示這兩個步驟&#xff0c;來解決其中可能存在的問題。 1、替換源 這一步驟&#xff0c;網上的資料可以搜到很多&#xff0c;我跟著做了之后&#xff0c;總會冒出來各種各樣的小問…