日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

01: MySql简介

發布時間:2024/4/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 01: MySql简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MySQL其他篇

目錄:

參考網站

  • 1.1 數據庫介紹
  • 1.2 視圖
  • 1.3 觸發器
  • 1.4 事物

1.1 數據庫介紹?????返回頂部

  1、什么是數據庫?
      1. 數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,每個數據庫都有一個或多個不同
      ? ? 的API(接口)用于創建,訪問,管理,搜索和復制所保存的數據
      2. 我們也可以將數據存儲在文件中,但是在文件中讀寫數據速度相對較慢。所以,現在我們使用關系型數據
      ? ? 庫管理系統(RDBMS)來存儲和管理的大數據量
      3. 所謂的關系型數據庫,是建立在關系模型基礎上的數據庫,借助于集合代數等數學概念和方法來處理數據庫中的數據
      4.RDBMS即關系數據庫管理系統(Relational Database Management System)的特點:
        1)數據以表格的形式出現
        2)每行為各種記錄名稱
        3)每列為記錄名稱所對應的數據域
        4)許多的行和列組成一張表單
        5)若干的表單組成database

  2、RDBMS 術語
      1. 數據庫:? 數據庫是一些關聯表的集合。
      2. 數據表:? 表是數據的矩陣。在一個數據庫中的表看起來像一個簡單的電子表格
      3. 列:? 一列(數據元素) 包含了相同的數據, 例如郵政編碼的數據。
      4. 行: 一行(=元組,或記錄)是一組相關的數據,例如一條用戶訂閱的數據。

      5. 冗余: 存儲兩倍數據,冗余可以使系統速度更快
          1)查詢時可能經常需要在多個表之間進行連接查詢;而進行連接操作會降低查詢速度
          2)學生的信息存儲在student表中,院系信息存儲在department表中,如果要查詢一個學生所在系的名
          ? ? ?稱,必須從student表中查找學生所在院系的編號,然后根據這個編號去department查找系的名稱
          3)如果經常需要進行這個操作時,連接查詢會浪費很多的時間,因此可以在student表中增加一個冗余
          ? ? ?字段dept_name,該字段用來存儲學生所在院系的名稱(這樣就不用每次都進行連接操作了)

      6. 主鍵:?主鍵是唯一的。一個數據表中只能包含一個主鍵。你可以使用主鍵來查詢數據
      7. 外鍵: 外鍵用于關聯兩個表(兩個表通過都有的一個字段連接起來了)
      8. 復合鍵: 復合鍵(組合鍵)將多個列作為一個索引鍵,一般用于復合索引
      9. 索引: 使用索引可快速訪問數據庫表中的特定信息。索引是對數據庫表中一列或多列的值進行排序的一種結構。類似于書籍的目錄。

          1) 當某個字段設置為索引后,就會將此字段中所有值對應自己的md5
          2) 當從數據庫查詢時可以通過二分法等算法快速查找到這個條目

      10. 參照完整性:? 參照的完整性要求關系中不允許引用不存在的實體

  3、Mysql數據庫特點
      1. Mysql是最流行的關系型數據庫管理系統,在WEB應用方面MySQL是最好的RDBMS(Relational Database
        Management System:關系數據庫管理系統)應用軟件之一
      2. 由瑞典MySQL AB公司開發,目前屬于Oracle公司
      3. MySQL是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大
        倉庫內,這樣就增加了速度并提高了靈活性
        1) Mysql是開源的,所以你不需要支付額外的費用
        2) Mysql支持大型的數據庫。可以處理擁有上千萬條記錄的大型數據庫
        3) MySQL使用標準的SQL數據語言形式
        4) Mysql對PHP有很好的支持,PHP是目前最流行的Web開發語言
        5) MySQL支持大型數據庫,支持5000萬條記錄的數據倉庫,32位系統表文件最大可支持4GB,64位系統支持最大的表文件為8TB
        6) Mysql是可以定制的,采用了GPL協議,你可以修改源碼來開發自己的Mysql系統

  4、主鍵、外鍵、索引比較

    1. 主鍵與外鍵區別

        1. 主鍵是能確定一條記錄的唯一標識,比如,一條記錄包括身份正號,姓名,年齡。
        ? ??身份證號是唯一能確定你這個人的,其他都可能有重復,所以,身份證號是主鍵。

        2. 外鍵用于與另一張表的關聯。是能確定另一張表記錄的字段,用于保持數據的一致性。
        ? ??比如,A表中的一個字段,是B表的主鍵,那他就可以是A表的外鍵

    2. 主鍵與唯一索引區別

        1. 主鍵是一種約束,唯一索引是一種索引,兩者在本質上是不同的。
        2. 主鍵創建后一定包含一個唯一性索引,唯一性索引并不一定就是主鍵。
        3.?唯一性索引列允許空值,而主鍵列不允許為空值。
        4.?主鍵可以被其他表引用為外鍵,而唯一索引不能。
        5.?一個表最多只能創建一個主鍵,但可以創建多個唯一索引。
        6.?主鍵更適合那些不容易更改的唯一標識,如自動遞增列、身份證號等。

1.2 視圖?????返回頂部

  1、什么是視圖
      1)視圖是一個虛擬表(非真實存在),其本質是【根據SQL語句獲取動態的數據集,并為其命名】
      2)用戶使用時只需使用視圖【名稱】即可獲取結果集,并可以將其當作表來使用
      3)視圖通常用在對某個結果查詢的非常頻繁,那么就可以使用視圖虛擬出一張表,將這個查詢結果放到這個視
      ? ? ?中,以后我們僅僅對這個視圖就行查詢是對上面結果的查詢
      4)如果原表數據改變那么視圖中的值也會隨著改變,視圖中的數據修改也會影響原表中數據
      5)一下幾種情況視圖中數據無法改變:
        a. 視圖中的列不在原表中(比如視圖中查詢時取得別名列:商品平均價格)
        b. 視圖中的那個數據對應原表中多個數據時也無法修改

  2、為什么要有視圖?
      1)可以簡化查詢
      2)可以進行權限限制(將一部分列放到視圖中讓其他人操作)
      3)大數據分表時可以用到

  3、視圖例子
      1)比如現在我們有一張商品表,表中有許多字段,現在我們需要經常查詢商品價格和名稱這兩個字段
      2)并且我們只想顯示這個表中價格大于100的所有商品
      3)那么我們就可以創建一個視圖good_price,然后將需要查的指定信息存儲到這個視圖中

    #1 創建視圖good_price

        create view good_price as select name,price from goods where price > 100;

    #2 修改視圖

        alter view good_price as select name,price from goods where price >300;

    #3 刪除視圖

        drop view good_price;

1.3 觸發器?????返回頂部

  1、什么是觸發器
      1)對某個表進行【增/刪/改】操作的前后如果希望觸發某個特定的行為時,可以使用觸發器
      2)觸發器用于定制用戶對表的行進行【增/刪/改】前后的行為
      3)觸發器只能對永久表使用,不能對臨時表 創建
      4)MySQL對同一表相同觸發時間的相同觸發事件,只能定義一個觸發器

  2、創建觸發器使用語法

    1. 創建觸發器基本語法

      Create trigger 觸發器名
        {before | after}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #insert,update,delete之前還是之后觸發
        {insert | update | delete}? ? ? ? ? ? ? ? #觸發的事件是什么
        On 表明 for each row 要出發的SQL語句:

    2. 觸發器使用舉例

        說明:創建一個觸發器t1每次向data表中插入一條數據后就計算一下插入后的新表中數據條目數放到total表

        Create trigger t1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #創建觸發器名稱是:t1
          after? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#在下面插入語句insert之后執行這個觸發器
          insert? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#指定只有當執行insert語句才會觸發
          on data for each row? ? ? ? ? ? ? ? ? ? ? ? ?#指定是對表data執行每行都會執行觸發器update操作
          update total set count=char_length(NEW.name)? ? ? ? ? ? ? ? ? ? #指定觸發的事件即執行這條SQL語句

  3、刪除觸發器
      DROP TRIGGER t1;
  4、使用觸發器
      觸發器無法由用戶直接調用,而是由于對表的【增/刪/改】操作被動引發的

1.4 事物?????返回頂部

  1、事務的定義?(作用是可以撤銷begin后面執行的命令)

      1)MySQL 事務主要用于處理操作量大,復雜度高的數據。

      2)在人員管理系統中,你刪除一個人員,你即需要刪除人員的基本資料,也要刪除和該人員相關的信息,如信箱,文章等等

      3)這樣,這些數據庫操作語句就構成一個事務!

      4)在MySQL中只有使用了Innodb數據庫引擎的數據庫或表才支持事務

      5)事務處理可以用來維護數據庫的完整性,保證成批的SQL語句要么全部執行,要么全部不執行

      6)事務用來管理insert,update,delete語句

  2、事務是必須滿足4個條件

      1、原子性:一組事務,要么成功;要么撤回

      2、穩定性?: 有非法數據(外鍵約束之類),事務撤回

      3、隔離性:事務獨立運行。一個事務處理后的結果,影響了其他事務,那么其他事務會撤回

      4、可靠性:軟、硬件崩潰后,InnoDB數據表驅動會利用日志文件重構修改。可靠性和高速度不可兼得,
      ? ? ? ? ? ? ? ? ?innodb_flush_log_at_trx_commit選項 決定什么時候吧事務保存到日志里。

  3、使用事務手動撤銷對MySQL的操作

      mysql> begin;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#開始一個事務

      mysql> insert into student(name,age,register_data) values("wangwu",99,"2016-06-20");????? #執行一條命令

      mysql>rollback;??????????????????????? ?????? #回滾 , 這樣數據是不會寫入的

      mysql> commit;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#執行commit后命令執行結果是正真的寫入硬盤了(rollback也無法撤回)

      注:當然如果上面的數據沒問題,就輸入commit提交命令就行

?

轉載于:https://www.cnblogs.com/xiaonq/p/8398103.html

總結

以上是生活随笔為你收集整理的01: MySql简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。