2021-01-20資料庫學習
阿新 • • 發佈:2021-01-21
連表操作:
##將兩張表拼合在一起
##結果為笛卡爾積
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