1. 程式人生 > 其它 >2021-01-20資料庫學習

2021-01-20資料庫學習

技術標籤:pythonmysql

連表操作:

##將兩張表拼合在一起
##結果為笛卡爾積

select * from dep,emp;
#
select * from emp,dep where emp.dep_id = dep.id;

mysql也知道 你在後面查詢資料時 肯定會用到拼表操作
所以特地的開設了對應方法

inner join    內連線   只拼接兩張表中公有的資料(不能拼接無關係的)
left join     左連線   把左邊的表作為主表 (展示左表所有的資料沒有的資料用null代替)
right join    右連線   把右邊的表作為主表 (展示右表所有的資料沒有的資料用null
代替) union 全連線 所有資料全展示 ###全連線比較麻煩### select * from emp right join dep on emp.dep_id=dep.id union select * from emp left join dep on emp.dep_id=dep.id; #例 select * from emp inner join dep on emp.dep_id=dep.id;

子查詢:
子查詢就是我們平時結局問題的思路,就是分佈查詢
將 第一個查詢語句的結果當成查詢的條件去用

#查詢部門是技術或者人力資源的員工資訊
1.先獲取部門id
select
id from dep where name="技術" or "人力資源"; 2.在去員工表裡面篩選出對應的員工資料 select * from emp where dep in (部門id); #合併 select * from emp where dep in (select id from dep where name="技術" or "人力資源";);

##表的查詢結果可以作為其他表的查詢條件
##也可以通過給表起別名的方法把他作為一張虛擬表和其他表查詢

navicat視覺化介面做資料庫

安裝:一個破解版

(安裝步驟來即可) 官網安裝
##utf8mb4可以儲存表情
##navicat並不是萬能的有時候你無法通過navicat實現所以當時你只能手碼##
sql語句中註釋:# 或者–
快捷鍵:ctrl+?

pymsql模組

pymsql開發者文件
##支援python程式碼操作資料庫##
連線資料庫

import pymysql
#連線資料庫
connect=pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    password="********",
    charset="utf8"            #注意這裡是utf8不是utf-8
)

生成遊標物件
##就等於在cmd視窗登入後後產生一個游標

cursor=connect.cursor() #產生遊標物件

匯入表

import pymysql
#連線資料庫
connect=pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    #這裡新增資料庫名
    database="資料庫名",
    password="********",
    charset="utf8"            #注意這裡是utf8不是utf-8
)
cursor=connect.cursor() #產生遊標物件

輸入sql語句

cursor=connect.cursor()
#輸入sql語句
sql='select * from 表名;'
#execute返回sql語句拿出了幾條資料
res=cursor.execute(sql)

基本使用方式

#以當前游標開始獲取一條物件並移動一位
res= cursor.fetchone()
#將查詢結果以字典形式返回
cursor=connect.cursor(cursor=pymsql.cursors.DictCursor)
res= cursor.fetchone()
#從當前游標開始拿出所有資料
res= cursor.fetchall()
#注意fetchone()讀取資料類似與游標的移動
res= cursor.fetchone()
res= cursor.fetchone()
#程式碼結果相當於第二條資料
#相對游標移動 這個相當於只移動游標不讀取
cursor.scroll(游標移動位數,“relative”)
#絕對移動  這個相當於從頭開始移動游標
cursor.scroll(游標移動位數,“absolute”)

sql注入問題

利用語法的特性 書寫一些特點的語法實現固定的語法
mysql利用的是mysql的註釋語法
怕你構造出特定的語法入侵資料庫 不安全
##1利用正則篩選出特定符號1##
##2pymsql特定封裝函式2##

userword=input("密碼:")
password=input("賬號:")
sql="select * from user where name=%s and password=%s"
#不要拼接用%s佔位 之後將資料直接交給execute方法即可
row=cursor.execute(sql,(userword,password))

#實現資料增加

sql="insert into user(name,password) values(%s,%s);"
cursor.execute(sql,("mzy",123))
#提交資料(檢視不需要commit這一操作)
conn.commit()
#或者不使用也可以需要修改配置
connect=pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    #這裡新增資料庫名
    database="資料庫名",
    password="********",
    charset="utf8",            #注意這裡是utf8不是utf-8
    #這一步是為了不加入commit命令
    autocommit=True
)

#其餘涉及到資料修改(增刪改查)操作類似(sql語句學好,木得問題)
#增加多個

sql="insert into user(name,password) values(%s,%s);"
#增加多個
cursor.executemany(sql,[("mzy",123),("lwj",123),("lfl",123)])

唔,資料庫學完了感覺學完之後有點懵,可能這就是鹹魚了麼QAQ