Navicat使用與pycharm-mysql連接


Navicat軟件

"""
一開始學習python的時候 下載python解釋器然后直接在終端書寫
pycharm能夠更加方便快捷的幫助你書寫python代碼
excel word pdf

我們在終端操作MySQL 也沒有自動提示也無法保存等等 不方便開發
Navicat內部封裝了所有的操作數據庫的命令
用戶在使用它的時候只需要鼠標點點即可完成操作 無需書寫sql語句
"""

安裝

直接百度搜索 有破解版的也有非破解
非破解的有試用期 你如果不嫌麻煩 你就用使用
到期之后重新裝再使用 或者破解一下也很簡單
https://www.cr173.com/soft/126934.html
   
下載完成后是一個壓縮包 直接解壓 然后點擊安裝 有提醒直接點擊next即可

navicat能夠充當多個數據庫的客戶端


navicat圖形化界面有時候反應速度較慢 你可以選擇刷新或者關閉當前窗口再次打開即可

當你有一些需求該軟件無法滿足的時候 你就自己動手寫sql

提示

"""
1 MySQL是不區分大小寫的
驗證碼忽略大小寫
內部統一轉大寫或者小寫比較即可
upper
lower

2 MySQL建議所有的關鍵字寫大寫

3 MySQL中的注釋 有兩種
--
#

4 在navicat中如何快速的注釋和解注釋
ctrl + ? 加注釋
ctrl + ? 基於上述操作再來一次就是解開注釋
如果你的navicat版本不一致還有可能是
ctrl + shift + ?解開注釋
"""

練習題

"""
課下一定要把握上課將的這幾道題全部自己獨立的理解並寫出來

在解決sql查詢問題的時候 不要慌
一步一步慢慢來 最終能夠東拼西湊出來就過關了!!!

"""
-- 1、查詢所有的課程的名稱以及對應的任課老師姓名
-- SELECT
-- course.cname,
-- teacher.tname
-- FROM
-- course
-- INNER JOIN teacher ON course.teacher_id = teacher.tid;

-- 4、查詢平均成績大於八十分的同學的姓名和平均成績
-- SELECT
-- student.sname,
-- t1.avg_num
-- FROM
-- student
-- INNER JOIN (
-- SELECT
-- score.student_id,
-- avg( num ) AS avg_num
-- FROM
-- score
-- INNER JOIN student ON score.student_id = student.sid
-- GROUP BY
-- score.student_id
-- HAVING
-- AVG( num ) > 80
-- ) AS t1 ON student.sid = t1.student_id;


-- 7查詢沒有報李平老師課的學生姓名
# 分步操作
# 1 先找到李平老師教授的課程id
# 2 再找所有報了李平老師課程的學生id
# 3 之后去學生表里面取反 就可以獲取到沒有報李平老師課程的學生姓名
-- SELECT
-- student.sname
-- FROM
-- student
-- WHERE
-- sid NOT IN (
-- SELECT DISTINCT
-- score.student_id
-- FROM
-- score
-- WHERE
-- score.course_id IN ( SELECT course.cid FROM teacher INNER JOIN course ON teacher.tid = course.teacher_id WHERE teacher.tname = '李平老師' )
-- );

-- 8查詢沒有同時選修物理課程和體育課程的學生姓名
--     (只要選了一門的 選了兩門和沒有選的都不要)
# 1 先查物理和體育課程的id
# 2 再去獲取所有選了物理和體育的學生數據
# 3 按照學生分組 利用聚合函數count篩選出只選了一門的學生id
# 4 依舊id獲取學生姓名
-- SELECT
-- student.sname
-- FROM
-- student
-- WHERE
-- student.sid IN (
-- SELECT
-- score.student_id
-- FROM
-- score
-- WHERE
-- score.course_id IN ( SELECT course.cid FROM course WHERE course.cname IN ( '物理', '體育' ) )
-- GROUP BY
-- score.student_id
-- HAVING
-- COUNT( score.course_id ) = 1
-- );

-- 9查詢掛科超過兩門(包括兩門)的學生姓名和班級
# 1 先篩選出所有分數小於60的數據
# 2 按照學生分組 對數據進行計數獲取大於等於2的數據
SELECT
class.caption,
student.sname
FROM
class
INNER JOIN student ON class.cid = student.class_id
WHERE
student.sid IN (
SELECT
score.student_id
FROM
score
WHERE
score.num < 60 GROUP BY score.student_id HAVING COUNT( score.course_id ) >= 2
);

pymysql模塊

"""
支持python代碼操作數據庫MySQL
"""
pip3 install pymysql

sql注入

"""
利用一些語法的特性 書寫一些特點的語句實現固定的語法
MySQL利用的是MySQL的注釋語法
select * from user where name='jason' -- jhsadklsajdkla' and password=''

select * from user where name='xxx' or 1=1 -- sakjdkljakldjasl' and password=''
"""
日常生活中很多軟件在注冊的時候都不能含有特殊符號
因為怕你構造出特定的語句入侵數據庫 不安全

# 敏感的數據不要自己做拼接 交給execute幫你拼接即可
# 結合數據庫完成一個用戶的登錄功能?
import pymysql


conn = pymysql.connect(
   host = '127.0.0.1',
   port = 3306,
   user = 'root',
   password = '123456',
   database = 'day48',
   charset = 'utf8'  # 編碼千萬不要加-
)  # 鏈接數據庫
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

username = input('>>>:')
password = input('>>>:')
sql = "select * from user where name=%s and password=%s"
# 不要手動拼接數據 先用%s占位 之后將需要拼接的數據直接交給execute方法即可
print(sql)
rows = cursor.execute(sql,(username,password))  # 自動識別sql里面的%s用后面元組里面的數據替換
if rows:
   print('登錄成功')
   print(cursor.fetchall())
else:
   print('用戶名密碼錯誤')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM