MySQL——1、數據庫基礎

數據庫基礎

  • 1、安裝MySQL
  • 2、什么是數據庫
  • 3、數據庫使用案例
  • 4、MySQL架構與SQL分類
  • 5、存儲引擎

1、安裝MySQL

1、更新軟件包列表

sudo apt update

2、查看MySQL安裝包

apt list | grep mysql-server

在這里插入圖片描述

3、安裝MySQL

# 默認安裝最新版
sudo apt install -y mysql-server

4、啟動MySQL
安裝成功后我們需要啟動mysql服務

sudo systemctl start mysql

然后我們查看一下是否存在一個mysqld的進程:
在這里插入圖片描述

5、配置mysqld.cnf文件
在這里插入圖片描述

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

提權使用vim打開該文件進行配置,在文件最后加入以下內容:
skip-grant-tables
character-set-server=utf8
default-storage-engine=innodb
在這里插入圖片描述
第一行配置表示配置root免密碼登錄,我們后面會設置密碼。第二行配置編碼為utf8。第三行設置默認存儲引擎為innodb。
配置好后保存退出,然后使用以下命令重啟mysql服務。

sudo systemctl restart mysql

6、訪問數據庫服務
在這里插入圖片描述
-h指明登錄部署了mysql服務的主機,實際上mysql是一個網絡服務。-P指明要訪問的端口號。-u指明登錄用戶。-p指明需要輸入密碼。然后我們直接回車就會發現登錄失敗,這是因為上面配置了免密碼登錄導致mysql并沒有成網絡服務,我們使用netstat -tnlp是看不到端口號為3306的網絡服務的,這個我們后面用戶管理設置了密碼再將配置的免密碼登錄刪掉。

我們直接使用mysql -uroot -p登錄,不需要輸入密碼直接回車即可。如果要退出輸入quit即可。
在這里插入圖片描述


2、什么是數據庫

在這里插入圖片描述
1、mysql是數據庫服務的客戶端。
2、mysqld是數據庫服務的服務端。
3、mysql本質上是基于C(mysql) S(mysqld)模式的一種網絡服務。

mysql是一套給我提供數據存儲服務的網絡程序。
數據庫一般指的是,在磁盤或者內存中存儲的特定結構組織的數據——將來在磁盤上存儲的一套數據庫方案。數據庫服務——mysqld。

存儲數據用文件就可以了,為什么還要弄個數據庫?
文件保存數據有以下幾個缺點:文件的安全性問題、文件不利于數據查詢和管理、文件不利于存儲海量數據、文件在程序中控制不方便。數據庫存儲介質:磁盤、內存。
數據庫本質:對數據內容存儲的一套解決方案,你給我字段或者要求,我直接給你結果。

在這里插入圖片描述
如圖,原來我們用戶是直接和磁盤上的文件打交道的,現在我們通過mysql客戶端訪問服務器上的mysqld服務端,然后服務端將SQL進行分析然后去操作磁盤上的數據庫文件,獲取到結果后再將結果返回給mysql客戶端。

主流數據庫:
SQL Sever: 微軟的產品,.Net程序員的最愛,中大型項目。
Oracle: 甲骨文產品,適合大型項目,復雜的業務邏輯,并發一般來說不如MySQL。
MySQL:世界上最受歡迎的數據庫,屬于甲骨文,并發性好,不適合做復雜的業務。主要用在電商,SNS,論壇。對簡單的SQL處理效果好。
PostgreSQL :加州大學伯克利分校計算機系開發的關系型數據庫,不管是私用,商用,還是學術研究使用,可以免費使用,修改和分發。
SQLite: 是一款輕型的數據庫,是遵守ACID的關系型數據庫管理系統,它包含在一個相對小的C庫中。它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。
H2: 是一個用Java開發的嵌入式數據庫,它本身只是一個類庫,可以直接嵌入到應用項目中。

服務器,數據庫,表關系:
所謂安裝數據庫服務器,只是在機器上安裝了一個數據庫管理系統程序,這個管理程序可以管理多個數據庫,一般開發人員會針對每一個應用創建一個數據庫。為保存應用中實體的數據,一般會在數據庫中創建多個表,以保存程序中實體的數據。數據庫服務器、數據庫和表的關系如下:

在這里插入圖片描述


3、數據庫使用案例

樣例:使用mysql建立一個數據庫,建立一張表結構,插入一些數據。看看數據庫在Linux中是如何表現的。

1、首先登錄數據庫:mysql -uroot -p
在這里插入圖片描述

2、查看所有數據庫:show databases;
在這里插入圖片描述
登入root賬戶,或者使用sudo提權,查看/var/lib/mysql下的文件,對比左邊的數據庫,我們發現數據庫本質上就是在Linux下的一個目錄。

3、創建一個數據庫:create database helloworld;
在這里插入圖片描述
建立數據庫,本質上就是在Linux下創建一個目錄。

4、使用數據庫,相當于進入該目錄:use helloworld;
在這里插入圖片描述

5、創建數據庫表
在這里插入圖片描述
創建數據庫表的語法如圖左側,首先是列的名稱,然后是屬性,多個列以逗號分隔開。創建后進入該數據庫目錄下可以看到多了一個student.ibd的文件。

6、插入數據
在這里插入圖片描述
使用insert into 表名,向數據庫的某個表插入數據。

7、查詢表中數據
在這里插入圖片描述
如圖,查詢的數據信息是邏輯存儲結構。


4、MySQL架構與SQL分類

MySQL是一個可移植的數據庫,幾乎能在當前所有的操作系統上運行,如Unix/Linux、Windows、Mac和Solaris。各種系統在底層實現方面各有不同,但是 MySQL 基本上能保證在各個平臺上的物理體系結構的一致性。
在這里插入圖片描述
首先mysql服務端的最上面是一個連接池,進行連接管理和安全驗證的。然后連接池下面就是用來進行SQL語法分析解析優化的,然后將它們交給再下一次的存儲引擎,存儲引擎再去操作磁盤上的文件。不同的存儲引擎適用于不同類型的存儲數據。

SQL分類:
DDL[data definition language]數據定義語言,用來維護存儲數據的結構。代表指令:create,drop,alter。
DML[data manipulation language]數據操縱語言,用來對數據進行操作。代表指令:insert,delete,update。
DML中又單獨分了一個DQL,數據查詢語言,代表指令:select。
DCL[Data Control Language]數據控制語言,主要負責權限管理和事務。代表指令:grant,revoke,commit。

5、存儲引擎

存儲引擎是:數據庫管理系統如何存儲數據、如何為存儲的數據建立索引和如何更新、查詢數據等技術的實現方法。
MySQL的核心就是插件式存儲引擎,支持多種存儲引擎。

在這里插入圖片描述
使用show engines \G可以查看當前數據庫支持的存儲引擎。或者使用show engines。
在這里插入圖片描述
雖然存儲引擎這么多,但是我們主要使用的還是InnoDB和MyISAM這兩種存儲引擎。我們在最初配置的存儲引擎也是InnoDB。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905636.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905636.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905636.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ET MailBoxComponent類(實體) 分析

MailBoxComponent 作用是,用來接收Actor消息,處理Actor消息。這個沒有存儲能,收到消息后立即就處理了。ParentInstanceId 是MailBox所在的實體InstanceIdMailBoxType MailBox類型MailBoxInvoker 分發消息的包裝Add 方法,看名字是…

Weblogic SSRF漏洞復現(CVE-2014-4210)【vulhub靶場】

漏洞概述: Weblogic中存在一個SSRF漏洞,利用該漏洞可以發送任意HTTP請求,進而攻擊內網中redis、fastcgi等脆弱組件。 漏洞形成原因: WebLogic Server 的 UDDI 組件(uddiexplorer.war)中的 SearchPublicR…

js應用opencv

思路&#xff1a; 第一步&#xff1a;直方圖 第二步&#xff1a;獲得直方圖的波峰 第三步&#xff1a;波峰勝負10&#xff0c;高于或低于變紅色 1.引用import cv from ‘techstark/opencv-js’; 2.vue代碼 <div class"historyLeft2"><div style"relat…

用Python代碼繪制動態3D愛心效果

引言 介紹Python在創意編程中的應用&#xff0c;特別是如何通過簡單的代碼實現視覺上的美感。引出本文將分享的愛心代碼&#xff0c;并簡要說明其實現原理。 愛心代碼的基本實現 展示一個簡單的Python代碼示例&#xff0c;使用字符畫的方式在控制臺中繪制一個愛心圖案。 pr…

使用Python開發經典俄羅斯方塊游戲

使用Python開發經典俄羅斯方塊游戲 在這篇教程中&#xff0c;我們將學習如何使用Python和Pygame庫開發一個經典的俄羅斯方塊游戲。這個項目將幫助你理解游戲開發的基本概念&#xff0c;包括圖形界面、用戶輸入處理、碰撞檢測等重要內容。 項目概述 我們將實現以下功能&…

兼顧長、短視頻任務的無人機具身理解!AirVista-II:面向動態場景語義理解的無人機具身智能體系統

作者&#xff1a;Fei Lin 1 ^{1} 1, Yonglin Tian 2 ^{2} 2, Tengchao Zhang 1 ^{1} 1, Jun Huang 1 ^{1} 1, Sangtian Guan 1 ^{1} 1, and Fei-Yue Wang 2 , 1 ^{2,1} 2,1單位&#xff1a; 1 ^{1} 1澳門科技大學創新工程學院工程科學系&#xff0c; 2 ^{2} 2中科院自動化研究所…

【藍橋杯省賽真題49】python偶數 第十五屆藍橋杯青少組Python編程省賽真題解析

python偶數 第十五屆藍橋杯青少組python比賽省賽真題詳細解析 博主推薦 所有考級比賽學習相關資料合集【推薦收藏】1、Python比賽 信息素養大賽Python編程挑戰賽 藍橋杯python選拔賽真題詳解

鴻蒙(HarmonyOS)應用開發入門教程

目錄 第一章:鴻蒙系統簡介 1.1 什么是鴻蒙系統? 1.2 鴻蒙系統架構 第二章:開發環境搭建 2.1 安裝DevEco Studio 步驟1:下載與安裝 步驟2:首次配置 步驟3:設備準備 2.2 創建第一個項目 第三章:鴻蒙應用開發基礎 3.1 核心概念:Ability與AbilitySlice 示例代碼…

VM中 ubuntu 網卡不顯示

1.添加網卡配置 #sudo nano /etc/netplan/01-netcfg.yaml network:version: 2renderer: networkdethernets:ens33:dhcp4: trueens37:dhcp4: trueens38:dhcp4: true#保存后 sudo netplan apply2.查看網絡狀態 sudo systemctl start systemd-networkd sudo systemctl status sy…

阿克曼-幻宇機器人系列教程3- 機器人交互實踐(Message)

上一篇文章介紹了如何通過topic操作命令實現與機器人的交互&#xff0c;本篇我們介紹如何通過Message&#xff08;即topic的下一級&#xff09;實現與機器人的交互。 和topic一樣&#xff0c;首先在一個終端通過ssh命令登錄機器人、啟動機器人&#xff0c;然后打開另外一個終端…

Python 調試擴展版本兼容問題解決紀實

在 Python 開發中&#xff0c;調試工具的正常使用對效率至關重要。近期在公司項目中&#xff0c;便遇到了 Python 調試擴展與版本不兼容的問題。公司 ERP 服務器采用 Ubuntu 18.04 系統&#xff0c;其標配 Python 版本為 3.6&#xff0c;而常用的 Python Debugger 擴展對版本有…

React 第四十二節 Router 中useLoaderData的用途詳解

一、前言 useLoaderData&#xff0c;用于在組件中獲取路由預加載的數據。它通常與路由配置中的 loader 函數配合使用&#xff0c;用于在頁面渲染前異步獲取數據&#xff08;如 API 請求&#xff09;&#xff0c;并將數據直接注入組件&#xff0c;從而簡化數據流管理。 二、us…

Linux——mysql主從復制與讀寫分離

目錄 一&#xff0c;理解什么是mysql主從復制 1&#xff0c;mysql支持的復制類型 2&#xff0c;mysql主從復制的工作流程 二&#xff0c;配置mysql主從復制 三&#xff0c;配置mysql主主復制 四&#xff0c;mysql讀寫分離 1&#xff0c;了解什么是mysql讀寫分離 2&…

MongoDB數據庫深度解析:架構、特性與應用場景

在現代應用程序開發中&#xff0c;數據存儲技術的選擇至關重要。在眾多的數據庫管理系統中&#xff0c;MongoDB以其靈活性和強大的功能迅速崛起&#xff0c;成為NoSQL數據庫中的佼佼者。本文將深入解析MongoDB的架構、核心特性、性能優化及其在實際應用中的最佳實踐&#xff0c…

3D曲面上的TSP問題(一):曲面上點集距離求解

3D曲面上&#xff0c;兩點的距離求解不能采用歐式距離&#xff0c;而需要計算測地線距離。 代碼使用CGAL 5.6.2 OpenCV 4.11.0 版本實現 #include "cgal_utils.h" #include <CGAL/AABB_tree.h> #include <CGAL/AABB_traits.h> #include <CGAL/AABB_…

【歌曲結構】2:小節與歌曲結構信息整合

歌曲小節與結構信息整合 我將為您整合小節信息與歌曲結構,創建一個更加詳細的JSON數據結構。 處理方法 將小節時間與歌曲結構段落進行匹配為每個小節添加所屬段落信息為小節添加格式化的時間戳為小節添加對應時間范圍內的歌詞{"song_title": "財神廟前許三億…

C語言:深入理解指針(3)

目錄 一、數組名的理解 二、用指針訪問數組 三、一維數組傳參的本質 四、冒泡排序 五、二級指針 六、指針數組 七、指針數組模擬二維數組 八、結語 一、數組名的理解 數組名其實就是首元素的地址 int arr[3] {1,2,3}; printf("arr :%p\n" ,arr); printf(…

Spring MVC 接口的訪問方法如何設置

RequestMapping 是 Spring 框架中用于映射 HTTP 請求到控制器方法的注解。它支持以下 HTTP 方法訪問類型&#xff0c;通過 method 屬性指定&#xff1a; GET&#xff1a;用于獲取資源POST&#xff1a;用于提交數據PUT&#xff1a;用于更新資源DELETE&#xff1a;用于刪除資源PA…

linux libdbus使用案例

以下是一個基于 Linux libdbus 的詳細指南,包含服務端和客戶端的完整代碼示例,涵蓋 方法調用、信號發送 和 異步消息處理。libdbus 是 D-Bus 的底層 C 庫,直接操作 D-Bus 協議,適合需要精細控制的場景。 1. libdbus 的核心機制 連接管理:通過 dbus_bus_get 連接系統總線或…

Day118 | 靈神 | 二叉樹 | 刪點成林

Day118 | 靈神 | 二叉樹 | 刪點成林 1110.刪點成林 1110. 刪點成林 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 最直接的思路就是看當前結點的值是不是在要刪除的列表中&#xff0c;在的話刪除當前結點并把左右孩子加入res中 很可惜這樣是錯的&#xff0c;…