表與表之間的引用遥皂,即為外鍵
范式:第一范式指攒,第二范式叶眉,第三范式
關系運算
選擇:挑選符合的行
投影:挑選符合的列表與表之間的連接址儒,外鏈接、內連接
數據庫是由表組成的衅疙,索引是表中的某個字段或特定數據莲趣,B+樹等,索引會影響寫入操作
視圖:虛表饱溢,即select后的結果
-
SQL:結構化查詢語言喧伞,
- DDL:數據定義語言,操作表绩郎,索引等
- DML:數據操作語言潘鲫,操作表中的數據
-
也提供了編程接口:代碼片段
- 存儲過程:沒有返回值的函數,對數據的加工肋杖,
- 存儲函數:有返回結果的代碼片段溉仑,funciton,有輸入状植、輸出
- 觸發(fā)器:一類sql語句浊竟,或一段代碼怨喘,如插入語句執(zhí)行時,會觸發(fā)原
有的插入程序逐沙。
表連接:join哲思,為了滿足關系范式,拆表之后再合表去查詢數據吩案,會消耗內存
-
RDBMS:
- MySql:MySql、MariaDB帝簇,Percona-server
- PostgreSQL:即pgsql徘郭,商業(yè)版為EnterpriseDB
- Oracle:
- MSSQL:微軟的數據庫,只能運行在windows上
獨占鎖和共享鎖:寫的過程不能讀丧肴,讀的時候可以都讀
事務:ACID:原子性残揉、一致性、隔離性芋浮、持久性
事務日志和數據日志抱环,在放寫入事務日志而沒來得及寫入數據日志時,出現(xiàn)問題纸巷。則恢復管理器從事務日志中恢復寫入數據日志中
-
SQL:Structure Qurey Language結構化查詢語言
- 數據存取協(xié)議:mysql協(xié)議镇草、oracle協(xié)議都屬于應用層協(xié)議。
- server端監(jiān)聽在套接字瘤旨,接收請求
- client端:程序接口(CLI和GUI)梯啤、應用編程接口(ODBC:Open Database Connection開放數據庫系統(tǒng)互聯(lián))
* (1)現(xiàn)成的程序:如php-mysql客戶端程序- (2)通過自己編寫代碼實現(xiàn)交互
-
基礎概念:
- 1、約束:constraint存哲,輸入的數據符合一定的規(guī)范因宇,向數據表提供的數據要遵守的限制
主鍵(也是一種約束):只能有1個,一個或多個字段組合祟偷,能唯一標識本行察滑,并且不能為空,not null
唯一鍵:可以有多個修肠,與主鍵描述一致贺辰,只是允許為空,null
外鍵:一個表中的某字段填入的數據氛赐,取決于另一個表的主鍵已有的數據
- 1、約束:constraint存哲,輸入的數據符合一定的規(guī)范因宇,向數據表提供的數據要遵守的限制
2魂爪、索引:將1個或幾個字段數據抽取出來,并按照特定順序排序存儲
稠密索引:
稀疏索引:3艰管、關系運算 :選擇(挑選部分行)滓侍、投影(挑選需要的字段,挑選列)牲芋、連接(笛卡爾乘積撩笆、左聯(lián)接捺球、右聯(lián)結)
4、數據抽象:
物理層:決定數據的存儲格式夕冲,在磁盤上如何組織文件氮兵,一張表存儲于多個文件or多張表存儲于一個文件
邏輯層:描述DB存儲什么數據,以及數據間存在什么樣的關系歹鱼。100張表泣栈,某個用戶只能查看20張表5、關系模型的分類:
關系模型
實體-關系模型
基于對象的關系模型
半結構化的關系模型:以XML格式存儲數據6弥姻、安裝MySQL:
源代碼:編譯安裝:
二進制格式的程序包:展開至特定路徑南片,簡單配置后即可使用
程序包管理的程序包:
rpm
deb7、 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灾票、服務器監(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.113刊苍、mysql:
-uUSERNAME:用戶名,默認為root
-hHOST:服務器主機濒析,默認為localhost
-pPASSWORD:用戶的密碼正什,默認為空密碼
用戶賬號由兩部分組成:‘USERNAME'@'HOST';其中HOST用于限制此用戶可通過哪些主機遠程連接mysql服務
支持使用通配符:
%:匹配任意長度的任意字符
_:匹配任意單個字符
安全初始化:執(zhí)行/usr/local/mysql/bin/mysql_secure_installation命令:
客戶端命令:本地執(zhí)行,如在mysql下執(zhí)行help号杏,查看status
服務端命令:通過mysql協(xié)議發(fā)往服務器執(zhí)行并取回結果婴氮,每個命令都必須有命令結束符號,默認為分號盾致;-
14主经、關系型數據庫的常見組件:
數據庫:database,由多張表組成的數據集合
表:table庭惜,包含行和列
索引:index
視圖:view虛擬出的多個表
用戶:user
權限:privilege用戶對數據庫罩驻、表的訪問權限被調用代碼:
存儲過程:procedure,調用一下护赊,執(zhí)行惠遏,使用call砾跃,沒有返回值
存儲函數:function,使用select节吮,有返回值
觸發(fā)器:trigger抽高,觸發(fā)已經寫好的代碼片段,觸發(fā)額外代碼透绩,如誰查了表等代碼
事件調度器:event scheduler 15翘骂、SQL語句
DDL:數據定義語言
create、drop渺贤、alter
DML:數據操縱語言
insert雏胃、delete、update志鞍、select
grant、revoke
使用:
(1)創(chuàng)建數據庫:create database|schema 'DB_NAME'方仿;
幫助命令:myslq>help create database
字符集和排序規(guī)則
(2)刪除數據庫:drop database|schema 'DB_NAME'固棚;