Python 與 Mysql 交互丨【生長吧!Python】

      網友投稿 881 2025-03-31

      安裝:sudo apt-get install mysql-server


      查看服務:ps ajx | grep mysql

      停止服務:sudo service mysql stop

      開啟服務:sudo service mysql start

      重啟服務:sudo service mysql restart

      鏈接數據庫:mysql -uroot -p后輸入密碼

      查看版本:select version();

      查看數據庫:show database;

      創建數據庫:create database 庫名 [charset = UTF8];

      查看建庫語句:show create database 庫名;

      使用數據庫:use 庫名;

      刪除數據庫:drop 庫名;

      查看表:show table;

      查看表結構:desc 表名;

      創建表:

      CREATE TABLE table_name( column1 datatype contrai, column2 datatype, column3 datatype, ..... columnN datatype, PRIMARY KEY(one or more columns) );

      創建表常用屬性字段:

      -- auto_inorement 表示自動增長 -- not null 表示不為空 -- primary key 表示為主鍵 -- defaul 表示默認值

      刪除表:drop table;

      修改表結構:

      添加字段:alter table 表名 add 列名 類型; 修改字段(重命名):alter table 表名 change 原名 新名 類型及約束; 修改字段(不重命名):alter table 表名 modify 列名 類型及約束; 刪除字段:alter table 表名 drop 列名;

      查看所有列:select * from 表名;

      查看指定列:select 列1,列2,... from 表名;

      全列插入:insert into 表名 values(...); --需要給主鍵留下占位符,用0或null皆可。

      部分列插入:insert into 表名(列1,...) values(值1,...);

      插入多行全列數據:insert into 表名 values(...),(...)...;

      插入多行部分列數據:insert into 表名(列1,...) values(值1,...),(值1,...)...;

      更新操作:update 表名 set 列1=值1,列2=值2... where 條件;

      刪除操作(不推薦):delete from 表名 where 條件;

      邏輯刪除:update 字段名 set isvalid=0 where id=1; --設置刪除字段,執行刪除字段的操作即對該字段更新。

      查詢消除重復行:select distinct 列1,... from 表名;

      where條件查詢:select * from 表名 where 條件;

      where可以與比較運算符、邏輯運算符、模糊查詢、范圍查詢、空判斷搭配使用

      等于: = 大于: > 大于等于: >= 小于: < 小于等于: <= 不等于: != 或 <>

      舉個栗子:

      select * from students where id > 1; select * from students where id <= 2; select * from students where name != '咸魚'; select * from students where is_delete=0;

      and or not

      舉個栗子:

      select * from students where id > 3 and gender=0; select * from students where id < 4 or is_delete=0; select * from students where id not 4;

      like % 表示任意多個任意字符 _ 表示一個任意字符 rlike

      舉個栗子:

      select * from students where name like '咸%'; --查詢以咸字開頭的內容 select * from students where name like '咸_'; --查詢以咸字開頭且后面只有一個字的內容 select * from students where name like '咸%' or name like '%魚'; -- 查詢以咸字開頭或以魚字結尾的內容

      in 表示在一個非連續的范圍內 no in 表示不在一個非連續的范圍內 between ... and ... 表示在一個連續的范圍內 rlike 表示正則查詢,可以使用正則表達式查詢數據

      舉個栗子:

      select * from students where id in(1,3,8); -- 查詢 id 在 1,3,8 當中的內容 select * from students where id not in(1,3,8); -- 查詢 id 不在 1,3,8 當中的內容 select * from students where id between 3 and 8; -- 查詢 id 在3到8之間的內容 select * from students where name rlike "^咸"; -- 查詢 name 是以咸字開頭的內容

      判斷是否為空 is null

      舉個栗子:

      select * from students where height is null;

      以上幾種預算符優先級為:

      優先級由高到低的順序為:小括號、not、比較運算符、邏輯運算符。

      and比or先運算,如果同時出現并希望先算or,需要結合()使用。

      asc 升序

      desc 降序

      舉個栗子:

      select * from students order by age desc,height desc; --顯示所有的學生信息,先按照年齡從大到小排序,當年齡相同時 按照身高從高到矮排序

      count(*)查詢總數

      max(列)表示求此列的最大值

      min(列)表示求此列的最小值

      sum(列)表示求此列的和

      avg(列)表示求此列的平均值

      舉個栗子:

      select count(*) from students;

      select max(id) from students where gender=2;

      select min(id) from students where is_delete=0;

      select sum(age) from students where gender=1;

      select sum(age)/count(*) from students where gender=1; --求平均年齡

      Python 與 Mysql 交互丨【生長吧!Python】

      select avg(id) from students where is_delete=0 and gender=2;

      group by 將查詢結果按照1個或多個字段進行分組,字段值相同的為一組

      group_concat 表示分組之后,根據分組結果,使用group_concat()來放置每一組的某字段的值的集合

      select gender from students group by gender; -- 將學生按照性別分組 輸出結果: +--------+ | gender | +--------+ | 男 | | 女 | | 中性 | | 保密 | +--------+ select gender,group_concat(name) from students group by gender; 輸出結果: +--------+-----------------------------------------------------------+ | gender | group_concat(name) | +--------+-----------------------------------------------------------+ | 男 | 小彭,小劉,小周,小程,小郭 | | 女 | 小明,小月,小蓉,小賢,小菲,小香,小杰 | | 中性 | 小金 | | 保密 | 小鳳 | +--------+-----------------------------------------------------------+

      select * from 表名 limit start,count

      舉個栗子:

      select * from students where gender=1 limit 0,3; --查詢前三行的數據

      語法:

      select * from 表1 inner/left/right join 表2 on 表1.列 = 表2.列

      其中:

      inner join(內連接查詢):查詢的結果為兩個表匹配到的數據 right join(右連接查詢):查詢的結果為兩個表匹配到的數據,右表特有的數據,對于左表中不存在的數據使用null填充 left join(左連接查詢):查詢的結果為兩個表匹配到的數據,左表特有的數據,對于右表中不存在的數據使用null填充

      舉個栗子:

      select * from students inner join classes on students.cls_id = classes.id;

      select * from students as s left join classes as c on s.cls_id = c.id;

      select * from students as s right join classes as c on s.cls_id = c.id;

      在一個 select 語句中,嵌入了另外一個 select 語句, 那么被嵌入的 select 語句稱之為子查詢語句。

      子查詢可以和 in 搭配使用

      主查詢 where 條件 in (子查詢)

      mysqldump –uroot –p 數據庫名 > 備份文件名.sql;

      mysql -uroot –p 新數據庫名 < 備份文件名.sql

      安裝相關庫:pip install pymysql

      導入:from pymysql import *

      connection = connect(host, port, database, user, password, charset)

      其中參數如下:

      host:連接的mysql主機,如果本機是'localhost' port:連接的mysql主機的端口,默認是3306 database:數據庫的名稱 user:連接的用戶名 password:連接的密碼 charset:通信采用的編碼方式,推薦使用utf8

      connection對象方法如下:

      close()關閉連接

      commit()提交

      cursor()返回Cursor對象,用于執行sql語句并獲得結果

      cursor=connection.cursor()

      其中常用方法:

      close():關閉cursor execute(operation [, parameters ]):執行語句,返回受影響的行數,主要用于執行insert、update、delete語句,也可以執行create、alter、drop等語句。 fetchone():執行查詢語句時,獲取查詢結果集的第一個行數據,返回一個元組 fetchall():執行查詢時,獲取結果集的所有行,一行構成一個元組,再將這些元組裝入一個元組返回

      舉個栗子:

      from pymysql import * def main(): conn = connect(host='localhost',port=3306,database='xianyuplus',user='root',password='mysql',charset='utf8') cs1 = conn.cursor() count = cs1.execute('insert into xianyufans(name) values("666")') conn.commit() cs1.close() conn.close() if __name__ == '__main__': main()

      視圖是對若干張基本表的引用,一張虛表,查詢語句執行的結果,不存儲具體的數據。

      創建視圖:create view 視圖名稱 as select語句; --建議視圖以v_開頭 查看視圖:show tables; 使用視圖:select * from 視圖名稱; 刪除視圖:drop view 視圖名稱;

      提高了重用性,就像一個函數

      對數據庫重構,卻不影響程序的運行

      提高了安全性能,可以對不同的用戶

      讓數據更加清晰

      事務,它是一個操作序列,這些操作要么都執行,要么都不執行,它是一個不可分割的工作單位。

      原子性,一個事務必須被視為一個不可分割的最小工作單元,整個事務中的所有操作要么全部提交成功,要么全部失敗回滾,對于一個事務來說,不可能只執行其中的一部分操作,這就是事務的原子性。

      一致性,數據庫總是從一個一致性的狀態轉換到另一個一致性的狀態。

      隔離性,一個事務所做的修改在最終提交以前,對其他事務是不可見的。

      持久性,一旦事務提交,則其所做的修改會永久保存到數據庫。

      開啟事務:start transaction; 或者 begin; 提交事務:commit; 回滾事務:rollback;

      數據庫索引好比是一本書前面的目錄,能加快數據庫的查詢速度

      創建索引:create index 索引名稱 on 表名(字段名稱(長度)) --當指定索引的字段類型為字符串時,應填寫長度 查看索引:show index from 表名; 刪除索引:drop index 索引名稱 on 表名;

      建立太多的索引將會影響更新和插入的速度,因為它需要同樣更新每個索引文件。對于一個經常需要更新和插入的表格,就沒有必要為一個很少使用的where字句單獨建立索引了,對于比較小的表,排序的開銷不會很大,也沒有必要建立另外的索引。

      建立索引會占用磁盤空間。

      【生長吧!Python】有獎征文火熱進行中:https://bbs.huaweicloud.com/blogs/278897

      MySQL Python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何在wps文本中設置反射字體
      下一篇:接口測試如何在post請求中傳遞文件
      相關文章
      亚洲一本到无码av中文字幕| 亚洲免费观看在线视频| 亚洲日韩精品无码AV海量| 久久综合亚洲色一区二区三区| 国产偷国产偷亚洲高清日韩| 亚洲国产成人乱码精品女人久久久不卡 | 亚洲国产激情一区二区三区| 亚洲丶国产丶欧美一区二区三区| 国产亚洲精品成人AA片| 亚洲国产精品一区二区三区在线观看 | 亚洲美女在线国产| 亚洲男人av香蕉爽爽爽爽| 亚洲精品视频免费观看| 久久精品国产精品亚洲艾草网美妙| 亚洲精品国产福利一二区| 亚洲Av无码乱码在线观看性色 | 亚洲国产精品日韩在线观看| 亚洲另类小说图片| 亚洲人成图片网站| 亚洲精品中文字幕无码A片老| 亚洲av无码日韩av无码网站冲| 亚洲AV无码AV日韩AV网站| 日本亚洲高清乱码中文在线观看| 亚洲AV无码一区二区乱子仑| 亚洲不卡AV影片在线播放| 国产亚洲人成A在线V网站| 国产亚洲精品xxx| 亚洲成色在线影院| 亚洲熟妇色自偷自拍另类| 亚洲ts人妖网站| 亚洲午夜无码久久久久软件| 亚洲成AV人片高潮喷水| 亚洲国产婷婷综合在线精品| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲精品国产成人专区| 亚洲高清视频在线播放| 亚洲an日韩专区在线| 亚洲高清毛片一区二区| 亚洲国产精品狼友中文久久久 | 亚洲国产成人片在线观看无码| 老司机亚洲精品影院无码|