MySQL基礎----py全棧

来源:https://www.cnblogs.com/yanling-coder/archive/2019/04/09/10679597.html
-Advertisement-
Play Games

MySQL基礎 py全棧 [TOC] 一、引言 1、什麼是數據? 描述事物的符號記錄,可以使數字,也可以是文字,圖形、圖像等,數據有多種形式,它們都可以經過數字化存入電腦,數據的含義成為數據的語義 2、什麼是資料庫(DB)? 存儲數據的倉庫,是長期存放電腦內、有組織、可共用的大量數據的集合,數據 ...


目錄

MySQL基礎----py全棧


一、引言

1、什麼是數據?

描述事物的符號記錄,可以使數字,也可以是文字,圖形、圖像等,數據有多種形式,它們都可以經過數字化存入電腦,數據的含義成為數據的語義

2、什麼是資料庫(DB)?

存儲數據的倉庫,是長期存放電腦內、有組織、可共用的大量數據的集合,資料庫中的數據是按照一定數據模型組織的,描述和存儲,具有較小的冗餘度,較高的獨立性和易擴展性,併為各種用戶共用,即資料庫有永久存儲、有知識和可共用的三個基本特點。

3、什麼是資料庫管理系統(DBMS)?

資料庫管理系統又稱DBMS(Database Management System ),顧名思義,位於用戶和操作系統之間的一層數據管理軟體。資料庫管理系統主要有以下功能:

  • 數據定義功能:提供數據定義語言(DDL),讓用戶方便地對資料庫中數據對象進行定義
  • 數據組織、存儲和管理:要提高存儲空間利用率和存儲效率
  • 數據操縱功能:提供數據操縱語言(DML),實現對資料庫基本操作,如增刪改查
  • 資料庫的建立和維護功能:統一管理控制,以保證安全、完整、多用戶併發使用。
  • 其他功能:與網路中中的其他軟體系統通信功能,異構資料庫之間的互訪和互操作功能。

常聽說的資料庫管理系統有MySQL、Oracle、SQLite、Access、MS SQL Server等,他們均是軟體,它們屬於關係型資料庫。他們都有兩個主要功能:

  • 將數據保存到文件或記憶體
  • 接受client特定的命令,然後對文件進行相應的操作

4、什麼是資料庫系統?

指的是電腦系統中引入資料庫後的系統,一般有資料庫、資料庫管理系統、應用系統、資料庫管理員(DBA)構成,常簡稱為資料庫。

5、資料庫管理系統由來

  • 資料庫管理系統由來

    我們思考幾個問題,在網路編程中我們的遠端Client的用戶產生的數據,我們要存放到什麼地方,比較數據保存在本地硬碟,來分析,下麵是分析過程:

    數據存放位置 在本地管理數據 在遠端管理數據
    功能實現 1、創建本地目錄、存放文件
    2、有多個目錄,用來歸類存放不同類型的數據文件
    3、不同用戶有不同的許可權,用戶可以訪問,修改自己的數據
    1、用戶只要有socketClient客戶端,就可以訪問遠端拿到數據
    2、遠端存放數據的位置有socket服務端接受數據,並保存數據。
    3、不同用戶可以在遠端伺服器通過socket執行命令(來操作保存數據文件)
    4、不能 用戶有不同的許可權,對文件

6、什麼是數據模型?

是對現實世界數據特征的抽象,是對現實世界的模擬,是資料庫系統的核心和基礎。數據模型應滿足三方面需求:1.真是模擬現實世界;2.容易為人理解;3.便於在電腦上實現。數據模型按應用目的分為兩類:

  • 第一類是概念模型:按用戶觀點對數據和信息建模,主要用於資料庫設計,也稱信息模型。
  • 第二類是邏輯模型和物理模型:邏輯模型是按電腦觀點對數據建模,主要包括層次模型、網路模型、關係模型、面向對象模型、對象關係模型;物理模型是對數據最底層的抽象,它描述數據在系統內部的表示方式和存取方法。

數據模型通常由數據結構、數據操作和完整性約束三部分組成,是嚴格定義的一組概念的集合,精確的描述了系統的靜態特寫、動態特性和完整性約束條件。

7、什麼是概念模型?

用於信息世界的建模,是現實世界到信息世界的第一層抽象,是資料庫設計人員進行資料庫設計的有力的工具,也是設計人員與用戶之間進行交流的語言。信息世界涉及的概念主要有:

  1. 實體(Entity):客觀存在並可相互區別的事物成為實體。可以是人、事、物,也可以是抽象的概念和聯繫。
  2. 屬性(Attribute):實體所具有的某一特性。一個實體可以又若幹個屬性來刻畫。
  3. 碼(Key):唯一標識實體的屬性集。
  4. 域(Domain):域是一組具有相同數據類型的值的集合。屬性的取值範圍來自某個域。
  5. 實體型(Entity Type):具有相同屬性的實體必然具有共同的特征和性質。用實體名和屬性名集合來抽象和刻畫同類實體,稱為實體型。
  6. 實體集(Entity Set):同一類型實體的集合。
  7. 聯繫(Relationship):實體內部和實體之間的聯繫。實體之間的聯繫有一對一,一對多、多對多三種。

8、什麼是關係型資料庫?

指建立在關係模型基礎上的,而關係模型本質上就是若幹個存儲數據的二維表。

二、MySQL資料庫的安裝以及服務配置

MySQL是一個關係型資料庫管理系統,目前屬於Oracle旗下,MySQL最流行的關係型資料庫管理系統(又稱RDBMS,Relational Database Management System),想要使用MySQL資料庫我們需要以下步驟:

  • 安裝mysql服務端
  • 安裝mysql客戶端
  • 客戶端連接服務端
  • 客戶端發送命令給服務端,服務端根據指令執行對數據的相應操作。

1、windows版本

windows下載地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads

  • 安裝

    我們下載的是zip版本,解壓之後,就可以了,即可。

MySQL目錄解釋:

bin -----存放mysql的可執行文件,如:mysql、mysqld等。
data -----用於防止一些日誌文件以及資料庫,預設沒有,初始化之後生成
docs ------存放,mysql用法的說明文檔
include ----用於放置一些頭文件
lib -----用於放置一些mysql要用到的庫文件
share ------用於放置一些字元集、語言等信息。

  • 服務配置

    • 初始化mysql資料庫,生成data目錄

      cd D:\Download\mysql-5.7.25-winx64\bin
      mysqld  --initialize-insecure
    • 啟動MySQL服務端

      #----------------------方法一-----------
      #打開命令視窗
      #進入可執行文件目錄
      cd D:\Download\mysql-5.7.25-winx64\bin
      #啟動mysql服務
      mysqld
      
      
      #-------------------方法二----------------
      #將mysql的可執行文件目錄添加到系統的環境變數PATH中
      #步驟:
      #控制面板->系統和安全->系統->高級系統設置,打開【系統屬性】面板
      #在【系統屬性】面板中,選中高級選項卡,點擊環境變數,打開【環境變數】面板
      #在【環境變數】面板中,在【系統變數】里查找選中變數為PATH的一行,點擊編輯,
      #在變數值得末尾,添加值【;D:\Download\mysql-5.7.25-winx64\bin】,註意一點要加上分號。
      
      # 在任意目錄,打開命令視窗,直接輸入mysqld命令,即可開啟服務
      
      
      #---------------------方法三------------
      #步驟:
      #在命令視窗執行以下命令,註冊mysqld為windows服務
      "D:\Download\mysql-5.7.25-winx64\bin" --install
      #執行以下命令,移除mysqld服務。
      "D:\Download\mysql-5.7.25-winx64\bin" --remove
      #註冊成功之後,以後再啟動和關閉mysql服務時,僅需在命令行輸入
      #啟動服務
      net start mysqld
      #關閉服務
      net stop mysqld

      對比三種方法:

      1、方法一:在命令行開啟服務,關閉命令視窗,服務停止,並且每次需要進入到bin目錄下執行命令

      2、方法二:不需要進入bin目錄下執行命令,但是關閉命令視窗,服務也停止

      3、方法三:不需要進入並bin目錄下執行命令,並且關閉命令視窗,服務仍然在執行。

      總結:

      最佳方式是結合方法二和方法三,

      將bin目錄添加到path路徑下,然後註冊mysqld為windows服務。

    • 啟動MySQl客戶端

      我們下載的軟體中,包含了mysql服務端程式,也包含了客戶端程式,統一放到了bin目錄下,如果我們已經將bin添加到path路徑下的話,我們執行下麵的命令去連接資料庫:

      #連接MySQL伺服器,之後敲兩個回車就行了,一開始預設沒有設置密碼
      mysql -u root -p    #本地登陸(客戶端和服務端在一起)
      
      #命令解釋:
      #mysql -u 用戶名 -h 伺服器ip地址  -p 密碼

2、linux系統

  • 安裝

    這裡我們介紹CentOS7以上系統,預設自帶yum包管理工具。

    yum install mariadb-server mariadb
    # mariadb-server 主要提供mysql服務
    # mariadb    主要提供一些客戶端命令行工具
  • 配置

    #初始化資料庫,
    mysql_secure_installation  #設置root密碼。刪除車市資料庫,修改匿名用戶等操作。
    #啟動服務
    systemctl  start mariadb

3、client端連接遠程資料庫(Mysql資料庫)

  • 使用命令行工具

    #命令解釋:
    mysql -u 用戶名 -h 伺服器ip地址  -p 密碼 -P 埠號
    # 註意前提是安裝mysql自帶的客戶端工具。windows預設安裝,linux只需要安裝mariadb這個包
    #預設埠號3306
    #預設本地ip地址
  • 使用一些資料庫連接軟體

    windows:phpMyAdmin、Navicat 、DBeaver

  • 一些庫支持

    python語言版本:pymysql、MySQLsb、mysqlclient

三、MySQL資料庫

1、一些概念解釋

  • 什麼是SQL?

    MySQL、Oracle等軟體可以接受命令,並作出相應的操作,由於命令中可以包含刪除文件、獲取文件內容等眾多操作,對於編寫的命令就是SQL語句。SQL是結構化語言的縮寫,用來專門與資料庫進行通信的語言。

2、資料庫基本命令

  1. 顯示資料庫

    show databases;
    #顯示當前登錄用戶可以查看的資料庫列表。

    預設root用戶有四張表:

    information_schema :提供了訪問資料庫元數據的方式。(元數據是關於數據的數據,如資料庫名或表名,列的數據類型,或訪問許可權等。有時用於表述該信息的其他術語包括“數據詞典”和“系統目錄”。)
    mysql :mysql的核心資料庫,主要負責存儲資料庫的用戶、許可權設置、關鍵字等mysql自己需要使用的控制和管理信息
    performance_schema :主要用於收集資料庫伺服器性能參數。主要用於收集資料庫伺服器性能參數。
    sys:Sys庫所有的數據源來自:performance_schema。目標是把performance_schema的把複雜度降低

  2. 創建資料庫:

    # utf8編碼
    CREATE DATABASE test1 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    #整條語句語義:創建資料庫名為test1,設置預設的編碼格式(字元集)為utf8,按照utf8進行排序,比較等操作。
    
    #gbk編碼
    CREATE DATABASE test DEFAULT CHARACTER SET gbk  COLLATE gbk_general_ci;
    #整條語句語義:創建資料庫名為test1,設置預設的編碼格式(字元集)為gbk,按照gbk編碼進行排序
    
    #欄位解釋:
    #collate:設置比較操作,用什麼編碼方式進行比較。
    #charset  utf8  :設置資料庫使用utf8字元集
    #character set gbk:設置資料庫使用gbk字元集
    
    #sql語句不強制使用大小寫,但是為了便於觀看,我們將系統欄位寫成大寫,用戶輸入寫成小寫
  3. 數據表簡單操作

    #進入資料庫
    USE test1;
    #顯示test2資料庫中所有的表
    SHOW TABLES;
    

3、資料庫用戶管理

  1. 創建用戶

    #格式:
    create  user '用戶名'@'ip地址' identified by '密碼';
    #例子
    create user 'dman'@'localhost' identified by 'password';
    #創建用戶名為dman,密碼為password。該用戶只能通過在本地登陸。
    
  2. 刪除用戶

    #格式
    drop user '用戶名'@'IP地址';
    #例子
    drop user 'dman'@'localhost';
    
  3. 修改用戶

    #格式
    rename user '用戶名'@'IP地址' to '新用戶名'@'IP地址';
    #例子
    rename user 'dman'@'localhost' to 'test'@'localhost';
    
  4. 修改密碼

    #格式
     set password for '用戶名'@'IP地址' = password('新密碼')
    #例子
    set password for 'test'@'localhost' = password('redhat');
    

    註意事項:

    1、用戶許可權相關數據保存在mysql資料庫的user表中,在root用戶下可以對其直接進行操作,但是不建議這樣做。

    2、當用戶創建之後,用戶只能登陸到mysql,但是不能幹任何事情,需要我們去授權之後才可以。

4、資料庫用戶授權

  1. 查看用戶許可權

    show grants for '用戶'@'IP地址';
    
  2. 授予某用戶什麼許可權

    grant  許可權 on 資料庫.表 to   '用戶'@'IP地址'
    
  3. 取消某用戶許可權

    revoke 許可權 on 資料庫.表 from '用戶'@'IP地址' 
    
  4. 立刻刷新數據到記憶體,使許可權更改立刻生效

    flush privileges  #將數據讀取到記憶體中,從而立即生效。
    

    ​ all privileges 除grant外的所有許可權

    ​ select 僅查許可權
    ​ select,insert 查和插入許可權
    ​ ...
    ​ usage 無訪問許可權
    ​ alter 使用alter table
    ​ alter routine 使用alter procedure和drop procedure
    ​ create 使用create table
    ​ create routine 使用create procedure
    ​ create temporary tables 使用create temporary tables
    ​ create user 使用create user、drop user、rename user和revoke all privileges
    ​ create view 使用create view
    ​ delete 使用delete
    ​ drop 使用drop table
    ​ execute 使用call和存儲過程
    ​ file 使用select into outfile 和 load data infile
    ​ grant option 使用grant 和 revoke
    ​ index 使用index
    ​ insert 使用insert
    ​ lock tables 使用lock table
    ​ process 使用show full processlist
    ​ select 使用select
    ​ show databases 使用show databases
    ​ show view 使用show view
    ​ update 使用update
    ​ reload 使用flush
    ​ shutdown 使用mysqladmin shutdown(關閉MySQL)
    ​ super

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 多表查詢: 顯示內連接: select 欄位列表 from 表名1 inner join 表名1 on 條件 * inner 可忽略 select * from student inner join class on student.clas_id=class.id 隱式內連接: 使用where: ...
  • (一)neo4j安裝 neo4j有社區版本和企業版,社區版本是免費的,企業版本是收費的。在linux上安裝如下步驟: 1、將下載的neo4j-enterprise-3.4.0-unix.tar.gz包上傳到linux伺服器,並解壓。 2、設置$NEO4J_HOME也就是解壓圖資料庫安裝包所在的目錄到 ...
  • 本系列筆記是在看完《neo4j權威指南》基礎上做的記錄。方便於自己後面查閱!! 1.圖庫介紹 圖資料庫(Graph Database)是基於圖論實現的一種新型NoSQL資料庫。它的數據存儲結構和數據的查詢方式都是以圖論為基礎的。圖論中圖的基本元素為節點和邊,在圖資料庫中對應的就是節點和關係。在圖數據 ...
  • 1.起因: 需要導入一個sql文件,發現死活導不進去.當執行到這一句時,就有問題.經過一番搜索,原來是我的資料庫版本(原先Mysql版本5.5)低了,而支持該語句的版本應該是至少要5.7.那我索性就去Mysql官網去下載了個最新版本的(8.0.15). 2.過程: 那麼問題來了:有兩個解決方案.1. ...
  • 關於視圖的用法以及作用。 作用一: 提高了重用性,就像一個函數。如果要頻繁獲取user的name和goods的name。就應該使用以下sql語言。示例: select a.name as username, b.name as goodsname from user as a, goods as b ...
  • 背景 從mysql.slow_log 獲取慢查詢日誌很慢,該表是csv表,沒有索引。 想添加索引來加速訪問,而csv引擎不能添加索引(csv引擎存儲是以逗號分割的文本來存儲的),只能改存儲引擎來添加索引了 mysql.slow_log表能改成myisam,不能改成innodb mysql.gener ...
  • 元欄位是ES為每個文檔配置的內置欄位, 主要用於ES內部相關操作. ES有多種類型的元欄位, 在使用和提高性能方面有很強大的地方, 這篇文章列舉常用元欄位的功能和使用方法, 包括_index、_type、_source、_routing等, 歡迎交流吖~ ...
  • 本人是一名學生,正在學習過程中,所以筆記涵蓋的還不是很廣,不過也算基本夠用,希望以後能更加完善。 登陸資料庫 mysql -h 主機名 -u 用戶名 -p > mysql -u root -p 列出資料庫 show databases; 選擇資料庫 use 資料庫名; 查看當前資料庫 select ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...