MySQL-簡要說明

来源:https://www.cnblogs.com/xsuid/archive/2018/07/29/9385822.html
-Advertisement-
Play Games

分類安裝發展順序分為:網狀型資料庫層次型資料庫關係型資料庫面向對象資料庫主流:關係型資料庫關係型資料庫事務transaction: 多個操作被當作一個整體對待• ACID: A :原子性 C :一致性 I :隔離性 D:持久性實體Entity:• 客觀存在並可以相互區分的客觀事物或抽象事件稱為實體。... ...



分類

安裝發展順序分為:

  • 網狀型資料庫
  • 層次型資料庫
  • 關係型資料庫
  • 面向對象資料庫

主流:關係型資料庫


關係型資料庫

事務transaction:

  多個操作被當作一個整體對待

• ACID:
     A :原子性
     C :一致性
     I :隔離性
     D:持久性

實體Entity:

• 客觀存在並可以相互區分的客觀事物或抽象事件稱為實體。

屬性:

• 實體所具有的特征或性質

聯繫:

• 聯繫是數據之間的關聯集合,是客觀存在的應用語義鏈

聯繫的類型

• 一對一聯繫(1:1)
• 一對多聯繫(1:n)
• 多對多聯繫(m:n)

數據三要素

• 數據結構

• 數據的操作

• 數據的約束條件

約束:constraint

表中的數據要遵守的限制

• 主鍵:一個或多個欄位的組合,填入的數據必須能在本表中唯一標識本行;必須提供數據,即NOT NULL,一個表只能有一個
• 惟一鍵:一個或多個欄位的組合,填入的數據必須能在本表中唯一標識本行;允許為NULL,一個表可以存在多個
• 外鍵:一個表中的某欄位可填入的數據取決於另一個表的主鍵或唯一鍵已有的數據
• 檢查:欄位值在一定範圍內

索引:

將表中的一個或多個欄位中的數據複製一份另存,並且此些需要按特定次序排序存儲


關係型資料庫的常見組件

• 資料庫:database
• 表:table
        行:row
        列:column
• 索引:index
• 視圖:view
• 用戶:user
• 許可權:privilege
• 存儲過程:procedure,無返回值
• 存儲函數:function,有返回值
• 觸發器:trigger
• 事件調度器:event scheduler,任務計劃

資料庫對象

• 資料庫的組件(對象):
         資料庫、表、索引、視圖、用戶、存儲過程、函數、觸發器、事件調度器等
• 命名規則:
    必須以字母開頭
    可包括數字和三個特殊字元(# _ $)
    不要使用MySQL的保留字
    同一database(Schema)下的對象不能同名

數據類型

MySql支持多種列類型:

• 數值類型
• 日期/時間類型
• 字元串(字元)類型

選擇正確的數據類型對於獲得高性能至關重要,三大原則:

• 更小的通常更好,儘量使用可正確存儲數據的最小數據類型
• 簡單就好,簡單數據類型的操作通常需要更少的CPU周期
• 儘量避免NULL,包含為NULL的列,對MySQL更難優化


image

修飾符

所有類型:

• NULL 數據列可包含NULL值
• NOT NULL 數據列不允許包含NULL值
• DEFAULT 預設值
• PRIMARY KEY 主鍵
• UNIQUE KEY 唯一鍵
• CHARACTER SET name 指定一個字元集

數值型:

• AUTO_INCREMENT 自動遞增,適用於整數類型
• UNSIGNED 無符號


SQL語句分類

• DDL: Data Defination Language 數據定義語言
            CREATE,DROP,ALTER
• DML: Data Manipulation Language 數據操縱語言
            INSERT,DELETE,UPDATE,SELECT
• DCL:Data Control Language 數據控制語言
           GRANT,REVOKE,COMMIT,ROLLBACK
• DQL:Data Query Language 數據查詢語言
           SELECT

DML語句

DML: INSERT, DELETE, UPDATE(增刪改)

INSERT:

• 一次插入一行或多行數據

UPDATE:

• 註意:一定要有限制條件,否則將修改所有行的指定欄位
限制條件:
      WHERE
      LIMIT

DELETE:

• 註意:一定要有限制條件,否則將清空表中的所有數據
• 限制條件:
      WHERE
      LIMIT

多表查詢

• 交叉連接:笛卡爾乘積
• 內連接:
       等值連接:讓表之間的欄位以“等值”建立連接關係;
       不等值連接
       自然連接:去掉重覆列的等值連接
       自連接
• 外連接:
      左外連接:
           FROM tb1 LEFT JOIN tb2 ON tb1.col=tb2.col
      右外連接
           FROM tb1 RIGHT JOIN tb2 ON tb1.col=tb2.col

子查詢:

• 在查詢語句嵌套著查詢語句,性能較差

• 基於某語句的查詢結果再次進行的查詢


視圖

視圖:VIEW,虛表,保存有實表的查詢結果

創建方法:

CREATE VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]

查看視圖定義:

SHOW CREATE VIEW view_name

刪除視圖:

DROP VIEW [IF EXISTS]
view_name [, view_name] ...
[RESTRICT | CASCADE]

視圖中的數據事實上存儲於“基表”中,因此,其修改操作也會針對基表實現;
其修改操作受基表限制


函數

系統函數和自定義函數

自定義函數 (user-defined function UDF)

保存在mysql.proc表中

創建UDF:

CREATE [AGGREGATE] FUNCTION function_name(parameter_name
type,[parameter_name type,...])
RETURNS {STRING|INTEGER|REAL}
runtime_body

說明:

參數可以有多個,也可以沒有參數
必須有且只有一個返回值

查看函數列表:

SHOW FUNCTION STATUS;

查看函數定義:

SHOW CREATE FUNCTION function_name

刪除UDF:

DROP FUNCTION function_name

調用自定義函數語法:

SELECT function_name(parameter_value,...)

存儲過程

存儲過程保存在mysql.proc表中

創建存儲過程:

CREATE PROCEDURE sp_name ([ proc_parameter [,proc_parameter ...]])
routime_body

其中:proc_parameter : [IN|OUT|INOUT] parameter_name type
其中IN表示輸入參數,OUT表示輸出參數,INOUT表示既可以輸入也可以輸出;
   param_name表示參數名稱;type表示參數的類型

查看存儲過程列表:

SHOW PROCEDURE STATUS

查看存儲過程定義:

SHOW CREATE PROCEDURE sp_name

調用存儲過程:

CALL sp_name ([ proc_parameter [,proc_parameter ...]])
CALL sp_name

說明:當無參時,可以省略"()",當有參數時,不可省略"()”

存儲過程修改:

ALTER語句修改存儲過程只能修改存儲過程的註釋等無關緊要的東西,不能修改
存儲過程體,所以要修改存儲過程,方法就是刪除重建

刪除存儲過程:

DROP PROCEDURE [IF EXISTS] sp_name

存儲過程優勢:

存儲過程把經常使用的SQL語句或業務邏輯封裝起來,預編譯保存在資料庫中,
當需要時從資料庫中直接調用,省去了編譯的過程
提高了運行速度
同時降低網路數據傳輸量

存儲過程與自定義函數的區別:

存儲過程實現的過程要複雜一些,而函數的針對性較強
存儲過程可以有多個返回值,而自定義函數只有一個返回值
存儲過程一般獨立的來執行,而函數往往是作為其他SQL語句的一部分來使用

流程式控制制

存儲過程和函數中可以使用流程式控制制來控制語句的執行

流程式控制制:

IF:用來進行條件判斷。根據是否滿足條件,執行不同語句
CASE:用來進行條件判斷,可實現比IF語句更複雜的條件判斷
LOOP:重覆執行特定的語句,實現一個簡單的迴圈
LEAVE:用於跳出迴圈控制
ITERATE:跳出本次迴圈,然後直接進入下一次迴圈
REPEAT:有條件控制的迴圈語句。當滿足特定條件時,就會跳出迴圈語句
WHILE:有條件控制的迴圈語句

觸發器

觸發器的執行不是由程式調用,也不是由手工啟動,而是由事件來觸發、激活從而實現執行

創建觸發器:

CREATE
  [DEFINER = { user | CURRENT_USER }]
  TRIGGER trigger_name
  trigger_time trigger_event
  ON tbl_name FOR EACH ROW
  trigger_body

說明:
trigger_name:觸發器的名稱
trigger_time:{ BEFORE | AFTER },表示在事件之前或之後觸發
trigger_event::{ INSERT |UPDATE | DELETE },觸發的具體事件
tbl_name:該觸發器作用在表名

查看觸發器:

SHOW TRIGGERS

刪除觸發器:

DROP TRIGGER trigger_name;


Mysql客戶端

mysql客戶端可用選項:


-A, --no-auto-rehash 禁止補全
-u, --user=                用戶名,預設為root
-h, --host=                伺服器主機,預設為localhost
-p, --passowrd=        用戶密碼,建議使用-p,預設為空密碼
-P, --port=                伺服器埠
-S, --socket=             指定連接socket文件路徑
-D, --database=        指定預設資料庫
-C, –compress            啟用壓縮
-e “SQL“                     執行SQL命令
-V, –version               顯示版本
-v –verbose               顯示詳細信息
--print-defaults        獲取程式預設使用的配置


DML語言 (增刪改)

DML:INSERT(增加),DELETE(刪除),UPDATE(修改)

//預設是直接修改物理數據的,無法撤回

為了防止修改表的時候一不小心全改了,我們要加一個安全機制

cd /etc/my.cnf.d/

vim /mysql-clients.cnf

在mysql項加上safe-updates

加上後,我們在更改的時候不加where語句是不能運行的

//也可用 mysql -U

//直接定義別名就可


待續…



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

-Advertisement-
Play Games
更多相關文章
  • 在屏幕解析度大小不一的情況下,應用程式的圖標有些電腦顯示合適,有些電腦顯示在圖標中間出現過多空白邊距; 處理方式: 1、在vs中打開ico圖片 2、在圖標空白處右鍵添加新圖像類型 3、選擇自己需要的尺寸 4、選擇自己的圖像複製 5、黏貼在之前新建的圖像中 完成。 ...
  • Startup.cs下ConfigureServices代碼 這裡主要在DocInclusionPredicate控制輸出那些api。 Startup.cs下Configure代碼 給Controllers或Action添加[ApiExplorerSettings(GroupName= "ApiGr ...
  • 今天在測試一下上傳文件的時候發現iis和配置存在上傳文件大小限制(IIS預設大小30M,最大運行為2g:2147483647),百度了一部分資料有些發佈到IIS好使,但是在VS調試中不好使。於是自己不斷努力還是找到了問題點。不是說網上的不對,只不過是有些情況下忽略了一些步驟。我就總結了一下我本次的步 ...
  • 一臺客戶端發現無法進入域用戶,於是登入了本地管理員退域 重新加域時發現無法加入,檢查發現是可以ping通的,輸入域、添加之後也會提示輸入賬號密碼驗證加域,輸完密碼之後提示“找不到網路名”,DNS指向正確 最後嘗試了重啟域控伺服器,之後成功加域。 ...
  • 要做一項工作,內容是將一個word中的圖表複製到多個(接近300個)word文檔的末尾,不想一個個CTRL C+CTRL V,就想到了用程式來實現 我第一個想到的使用python來實現,由於技術太渣,嘗試了多次,沒能寫出來,只記得有一個叫做win32com的模塊,專門處理文檔的。這裡先不說了 在查閱 ...
  • Red Hat系統的安裝,感興趣的朋友可以來看看(之前的都沒寫摘要,很長也看的比較煩,這次就隨便寫寫吧,哈哈!) ...
  • 服務端命令SQL在資料庫系統中,SQL語句不區分大小寫(建議用大寫) SQL語句可單行或多行書寫,以“;”結尾關鍵詞不能跨多行或簡寫用空格和縮進來提高語句的可讀性子句通常位於獨立行,便於編輯,提高可讀性註釋:SQL標準:/*註釋內容*/ 多行註釋-- 註釋內容 單行註釋,註意有空格My... ...
  • 常用指令 指令作用 指令 查看/查詢 show,select,desc 創建 create 刪除 drop,delete,truncate 切換/進入 use 添加記錄 insert 查看資料庫列表 show databases; 查看當前資料庫登入的是那個用戶 select user(); 查看當 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...