【MySQL】02.數據庫基礎

1. 數據庫的引入

之前存儲數據用文件就可以了,為什么還要弄個數據庫?
文件存儲存在安全性問題,文件不利于數據查詢和管理,文件不利于存儲海量數據,文件在程序中控制不方便。而為了解決上述問題,專家們設計出更加利于管理數據的東西——數據庫,它能更有效的管理數據,數據庫一般指的是磁盤獲內存中存儲特定結構組織的數據。數據庫的水平是衡量一個程序員水平的重要指標

2. 主流數據庫

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

3. MySQL的認識

我們現在使用的是mysql數據庫,這就需要我們對它有一定的認識:

1)mysql是數據庫服務的客戶端,mysqld是數據庫服務的服務端。
2)mysql本質是一套基于CS模式的提供數據存取服務的網絡程序。

4. MySQL的基本使用

上一篇博客中我們已經介紹過了MySQL數據庫的安裝過程,因此接下來我們直接開始使用。需要注意的是我們這里先使用的是root用戶來進行數據庫使用

??連接數據庫:

root@ALiClode:~# mysql -u root -p

? 新建數據庫:

mysql> create database helloworld;
Query OK, 1 row affected (0.01 sec)

?? 查看數據庫:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

? 選擇數據庫:

mysql> use helloworld;
Database changed

? 新建表:

mysql> create table student(-> name varchar(32),-> age int,-> gender varchar(2)-> );
Query OK, 0 rows affected (0.02 sec)

? 插入數據:

mysql> insert into student(name,age,gender) values('張三',18,'男');
Query OK, 1 row affected (0.03 sec)

? 查看表中數據:

mysql> select * from student;
+--------+------+--------+
| name   | age  | gender |
+--------+------+--------+
| 張三   |   18 | 男     |
+--------+------+--------+
1 row in set (0.00 sec)

大家不用擔心,這只是簡單的數據庫使用,上述指令會在后續博客中詳細介紹。

5.?服務器與數據庫與表的關系

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

?6. MySQL的組織架構

MySQL 是一個可移植的數據庫,幾乎能在當前所有的操作系統上運行,如 Unix/Linux、Windows、 Mac 和 Solaris。各種系統在底層實現方面各有不同,但是 MySQL 基本上能保證在各個平臺上的物理體系結構的一致性。

?7. 存儲引擎

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

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

下圖附上各個存儲引擎的對比圖:

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

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

相關文章

什么是 Langchain 以及其核心組件

LangChain 官方文檔:LangChain 一、什么是Langchain LangChain 是一個用于構建基于LLM的應用框架,它提供了對 LLM API 的封裝和擴展,使開發者能夠更方便地構建復雜的應用。 個人理解:用類比的方法來說,LangChain類似…

博客系統功能測試

博客系統網址:http://8.137.19.140:9090/blog_list.html 主要測試內容 功能測試、界面測試、性能測試、易用性測試、安全測試、兼容性測試、弱網測試、安裝卸載測試、壓力測試… 測試方法及目的 利用selenium和python編寫測試腳本,對博客系統進行的相關…

項目制作流程

一、使用 CRA 創建項目 npx create-react-app name 二、按照業務規范整理項目目錄 (重點src目錄) 三、安裝插件 npm install sass -Dnpm install antd --savenpm install react-router-dom 四、配置基礎路由 Router 1. 安裝路由包 react-router-dom …

ngx_http_random_index_module 模塊概述

一、使用場景 隨機內容分發 當同一目錄下存放多份等價內容(如多張輪播圖、不同版本靜態頁面等)時,可通過隨機索引實現負載均衡或流量分散。A/B 測試 通過目錄請求自動隨機分配用戶到不同測試組,無需后端邏輯參與。動態“首頁”選…

智能權限守護者:基于Python描述符的動態角色控制實現

智能權限守護者:基于Python描述符的動態角色控制實現 引言:當描述符遇見權限管理 在Python的魔法方法體系中,描述符(Descriptor)以其優雅的屬性訪問控制機制著稱。當我們將描述符與RBAC(基于角色的訪問控制)模型結合,就能創造出既靈活又安全的動態權限管理系統。本文…

Linux 的 UDP 網絡編程 -- 回顯服務器,翻譯服務器

目錄 1. 回顯服務器 -- echo server 1.1 相關函數介紹 1.1.1 socket() 1.1.2 bind() 1.1.3 recvfrom() 1.1.4 sendto() 1.1.5 inet_ntoa() 1.1.6 inet_addr() 1.2 Udp 服務端的封裝 -- UdpServer.hpp 1.3 服務端代碼 -- UdpServer.cc 1.4 客戶端代碼 -- UdpClient.…

Linux 內核等待機制詳解:prepare_to_wait_exclusive 與 TASK_INTERRUPTIBLE

1. prepare_to_wait_exclusive 函數解析 1.1 核心作用 prepare_to_wait_exclusive 是 Linux 內核中用于將進程以獨占方式加入等待隊列的關鍵函數,其主要功能包括: 標記獨占等待:通過設置 WQ_FLAG_EXCLUSIVE 標志,表明此等待條目是獨占的。 安全入隊:在自旋鎖保護下,將條…

【Android構建系統】了解Soong構建系統

背景介紹 在Android7.0之前,Android使用GNU Make描述和執行build規則。Android7.0引入了Soong構建系統,彌補Make構建系統在Android層面變慢、容易出錯、無法擴展且難以測試等缺點。 Soong利用Kati GNU Make克隆工具和Ninja構建系統組件來加速Android的…

信息學奧賽一本通 1539:簡單題 | 洛谷 P5057 [CQOI2006] 簡單題

【題目鏈接】 ybt 1539:簡單題 洛谷 P5057 [CQOI2006] 簡單題 【題目考點】 1. 樹狀數組 模板題及講解:洛谷 P3374 【模板】樹狀數組 【解題思路】 解法1:樹狀數組 該有01構成數組初值都為0。 某位置的元素被修改奇數次后值為1&#x…

倉頡開發語言入門教程:搭建開發環境

倉頡開發語言作為華為為鴻蒙系統自研的開發語言,雖然才發布不久,但是它承擔著極其重要的歷史使命。作為鴻蒙開發者,掌握倉頡開發語言將成為不可或缺的技能,今天我們從零開始,為大家分享倉頡語言的開發教程,…

玉米籽粒發育

成熟玉米籽粒的結構 玉米籽粒的組成 成熟的玉米籽粒主要由以下三部分組成: 母體組織:包括種皮、胎座和花梗。種皮由珠被發育而來,起到保護種子的作用,并在種子的休眠和萌發中發揮重要作用。胚:包含根分生組織、莖分…

sherpa-ncnn:音頻處理跟不上采集速度 -- 語音轉文本大模型

目錄 1. 問題報錯2. 解決方法 1. 問題報錯 報錯: An overrun occurred, which means the RTF of the current model on your board is larger than 1. You can use ./bin/sherpa-ncnn to verify that. Please select a smaller model whose RTF is less than 1 fo…

Postman一直打不開的解決辦法

Postman 是一款非常流行的開源 API 開發工具,主要用于構建、測試、調試和文檔化應用程序接口(API)。但有時它的性能不會特別穩定,功能限制和擴展性不足;應用于開發、測試、運維等環節,尤其在開發 RESTful A…

問題|對只允許輸入的變量是否進行了更改

“對只允許輸入的變量是否進行了更改”這一問題的核心是:在編程中,某些變量被設計為僅用于輸入(只讀),但在代碼中可能被意外修改,導致潛在錯誤。以下是詳細解釋: 1. 什么是“只允許輸入的變量”…

RPC與SOAP的區別

一.RPC(遠程過程調用)和SOAP(簡單對象訪問協議)均用于實現分布式系統中的遠程通信,但兩者在設計理念、協議實現及應用場景上存在顯著差異。 二.對比 1.設計理念 2.協議規范 3.技術特性 4.典型應用場景 5.總結 三.總結…

c#的內存指針操作(僅用于記錄)

c#也可以直接操作內存指針,如下為示例: unsafe {byte[] a {1,2,3};fixed (byte* p1 a, p2 &a[^1]){Debugger.Log(1, "test", $"max index:{p2-p1}");Debugger.Log(1, "test", $"address:{(long)p1:X}")…

Jsp技術入門指南【十三】基于 JSTL SQL 標簽庫實現 MySQL 數據庫連接與數據分頁展示

Jsp技術入門指南【十三】基于 JSTL SQL 標簽庫實現 MySQL 數據庫連接與數據分頁展示 前言一、回顧SQL標簽的內容1. 什么是JSTL SQL標簽?2.為什么要用SQL標簽?3.第一步:引入SQL標簽庫4. SQL標簽的核心功能:連接數據庫標簽常用屬性&…

羽毛球訂場小程序源碼介紹

基于ThinkPHP、FastAdmin以及UniApp開發的羽毛球訂場小程序源碼,這款小程序旨在為羽毛球愛好者提供便捷的場地預訂服務。 該小程序前端采用UniApp框架開發,具有良好的跨平臺兼容性,可以一鍵發布至iOS和Android平臺,極大地提高了開…

Unreal Engine: Windows 下打包 AirSim項目 為 Linux 平臺項目

環境: Windows: win10, UE4.27, Visual Studio 2022 Community.Linux: 22.04 windows環境安裝教程: 鏈接遇到的問題(問題:解決方案) 點擊Linux打包按鈕,跳轉至網頁而不是執行打包流程:用VS打開項…

SpringBoot 3.x 集成 MyBatisPlus

文章目錄 集成 MyBatisPlus第 1 步:創建 SpringBoot 項目第 2 步:添加 MyBatisPlus 依賴第 3 步:編寫 CRUD 代碼創建 Entity創建 Mapper創建 Service編寫 Controller第 4 步:執行初始化 SQL第 5 步:配置第 6 步:測試測試 ControllerMapper 層單元測試參考?? 目標 1:基…