MySQL數(shù)據(jù)庫基礎(chǔ)知識

  • 表與表之間的引用,即為外鍵

  • 范式:第一范式,第二范式,第三范式

  • 關(guān)系運算
    選擇:挑選符合的行
    投影:挑選符合的列

  • 表與表之間的連接,外鏈接、內(nèi)連接

  • 數(shù)據(jù)庫是由表組成的,索引是表中的某個字段或特定數(shù)據(jù),B+樹等,索引會影響寫入操作

  • 視圖:虛表,即select后的結(jié)果

  • SQL:結(jié)構(gòu)化查詢語言,

    • DDL:數(shù)據(jù)定義語言,操作表,索引等
    • DML:數(shù)據(jù)操作語言,操作表中的數(shù)據(jù)
  • 也提供了編程接口:代碼片段

    • 存儲過程:沒有返回值的函數(shù),對數(shù)據(jù)的加工,
    • 存儲函數(shù):有返回結(jié)果的代碼片段,funciton,有輸入、輸出
    • 觸發(fā)器:一類sql語句,或一段代碼,如插入語句執(zhí)行時,會觸發(fā)原
      有的插入程序。
  • 表連接:join,為了滿足關(guān)系范式,拆表之后再合表去查詢數(shù)據(jù),會消耗內(nèi)存

  • RDBMS:

    • MySql:MySql、MariaDB,Percona-server
    • PostgreSQL:即pgsql,商業(yè)版為EnterpriseDB
    • Oracle:
    • MSSQL:微軟的數(shù)據(jù)庫,只能運行在windows上
  • 獨占鎖和共享鎖:寫的過程不能讀,讀的時候可以都讀

  • 事務(wù):ACID:原子性、一致性、隔離性、持久性

  • 事務(wù)日志和數(shù)據(jù)日志,在放寫入事務(wù)日志而沒來得及寫入數(shù)據(jù)日志時,出現(xiàn)問題。則恢復管理器從事務(wù)日志中恢復寫入數(shù)據(jù)日志中

  • SQL:Structure Qurey Language結(jié)構(gòu)化查詢語言

    • 數(shù)據(jù)存取協(xié)議:mysql協(xié)議、oracle協(xié)議都屬于應用層協(xié)議。
    • server端監(jiān)聽在套接字,接收請求
    • client端:程序接口(CLI和GUI)、應用編程接口(ODBC:Open Database Connection開放數(shù)據(jù)庫系統(tǒng)互聯(lián))
      * (1)現(xiàn)成的程序:如php-mysql客戶端程序
      • (2)通過自己編寫代碼實現(xiàn)交互
  • 基礎(chǔ)概念:

    • 1、約束:constraint,輸入的數(shù)據(jù)符合一定的規(guī)范,向數(shù)據(jù)表提供的數(shù)據(jù)要遵守的限制
      主鍵(也是一種約束):只能有1個,一個或多個字段組合,能唯一標識本行,并且不能為空,not null
      唯一鍵:可以有多個,與主鍵描述一致,只是允許為空,null
      外鍵:一個表中的某字段填入的數(shù)據(jù),取決于另一個表的主鍵已有的數(shù)據(jù)
  • 2、索引:將1個或幾個字段數(shù)據(jù)抽取出來,并按照特定順序排序存儲
    稠密索引:
    稀疏索引:

  • 3、關(guān)系運算 :選擇(挑選部分行)、投影(挑選需要的字段,挑選列)、連接(笛卡爾乘積、左聯(lián)接、右聯(lián)結(jié))

  • 4、數(shù)據(jù)抽象:
    物理層:決定數(shù)據(jù)的存儲格式,在磁盤上如何組織文件,一張表存儲于多個文件or多張表存儲于一個文件
    邏輯層:描述DB存儲什么數(shù)據(jù),以及數(shù)據(jù)間存在什么樣的關(guān)系。100張表,某個用戶只能查看20張表

  • 5、關(guān)系模型的分類:
    關(guān)系模型
    實體-關(guān)系模型
    基于對象的關(guān)系模型
    半結(jié)構(gòu)化的關(guān)系模型:以XML格式存儲數(shù)據(jù)

  • 6、安裝MySQL:
    源代碼:編譯安裝:
    二進制格式的程序包:展開至特定路徑,簡單配置后即可使用
    程序包管理的程序包:
    rpm
    deb

  • 7、 MariaDB:存儲引擎也稱之為“表類型”
    支持更多的存儲引擎:MyISAM的升級版----->Aria、InnoDB升級版--->XtraDB

  • 8、centos7:直接提供MariaDB

    centos6: 自行安裝

    rpm -e 包名 卸載包

  • 9、MySQL配置文件查找次序:
    /etc/my.cnf--->/etc/mysql/my.cnf----> --default-extra-file=/PATH/TO/CONF_FILE---> ~/.my.cnf/

  • 10、在mysql的bin目錄下,是mysql的執(zhí)行程序,其中的mysqld_multi是mysql的多實例程序,類似于虛擬主機的概念,通過不同的端口啟用多個mysql進程

  • 11、MariaDB的程序組成:

Client:
mysql:cli交互式客戶端程序
mysqldump,mysqladmin

Server:
mysqld_safe
mysqld
mysqld_multi

  • 12、服務(wù)器監(jiān)聽的兩種socket:
    ip socket:監(jiān)聽在tcp的3306端口,支持遠程通信
    unix sock:監(jiān)聽在sock文件(/tmp/mysql.sock,/var/lib/mysql/mysql.sock),僅支持本地通信,server地址只能為localhost或127.0.0.1

  • 13、mysql:
    -uUSERNAME:用戶名,默認為root
    -hHOST:服務(wù)器主機,默認為localhost
    -pPASSWORD:用戶的密碼,默認為空密碼
    用戶賬號由兩部分組成:‘USERNAME'@'HOST';其中HOST用于限制此用戶可通過哪些主機遠程連接mysql服務(wù)
    支持使用通配符:
    %:匹配任意長度的任意字符
    _:匹配任意單個字符
    安全初始化:執(zhí)行/usr/local/mysql/bin/mysql_secure_installation

  • 命令:
    客戶端命令:本地執(zhí)行,如在mysql下執(zhí)行help,查看status
    服務(wù)端命令:通過mysql協(xié)議發(fā)往服務(wù)器執(zhí)行并取回結(jié)果,每個命令都必須有命令結(jié)束符號,默認為分號;

  • 14、關(guān)系型數(shù)據(jù)庫的常見組件:
    數(shù)據(jù)庫:database,由多張表組成的數(shù)據(jù)集合
    表:table,包含行和列
    索引:index
    視圖:view虛擬出的多個表
    用戶:user
    權(quán)限:privilege用戶對數(shù)據(jù)庫、表的訪問權(quán)限

    被調(diào)用代碼:
    存儲過程:procedure,調(diào)用一下,執(zhí)行,使用call,沒有返回值
    存儲函數(shù):function,使用select,有返回值
    觸發(fā)器:trigger,觸發(fā)已經(jīng)寫好的代碼片段,觸發(fā)額外代碼,如誰查了表等代碼
    事件調(diào)度器:event scheduler

  • 15、SQL語句
    DDL:數(shù)據(jù)定義語言
    create、drop、alter
    DML:數(shù)據(jù)操縱語言
    insert、delete、update、select
    grant、revoke

使用:
(1)創(chuàng)建數(shù)據(jù)庫:create database|schema 'DB_NAME';
        幫助命令:myslq>help create database
        字符集和排序規(guī)則
(2)刪除數(shù)據(jù)庫:drop database|schema 'DB_NAME';
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容