数据库_数据库篇-第一章:数据库基本概念
基礎(chǔ)知識(shí)學(xué)習(xí),面試必備,關(guān)注吧 騷年
01 第一,什么是數(shù)據(jù)庫(kù)?
維基百科上是這樣定義的:
所謂“數(shù)據(jù)庫(kù)”是以一定方式儲(chǔ)存在一起、能予多個(gè)用戶共享、具有盡可能小的冗余度、與應(yīng)用程序彼此獨(dú)立的數(shù)據(jù)集合。一個(gè)數(shù)據(jù)庫(kù)由多個(gè)表空間(Tablespace)構(gòu)成。
數(shù)據(jù)庫(kù)就是一個(gè)存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)的倉(cāng)庫(kù)。
02 第二,數(shù)據(jù)庫(kù)管理系統(tǒng)
數(shù)據(jù)庫(kù)管理系統(tǒng)(Database Management System,簡(jiǎn)稱(chēng)DBMS)是為管理數(shù)據(jù)庫(kù)而設(shè)計(jì)的電腦軟件系統(tǒng),一般具有存儲(chǔ)、截取、安全保障、備份等基礎(chǔ)功能。
數(shù)據(jù)庫(kù)管理系統(tǒng)主要分為以下兩類(lèi):2.1 關(guān)系數(shù)據(jù)庫(kù)
關(guān)系數(shù)據(jù)庫(kù)是創(chuàng)建在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),借助于集合代數(shù)等數(shù)學(xué)概念和方法來(lái)處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)。現(xiàn)實(shí)世界中的各種實(shí)體以及實(shí)體之間的各種聯(lián)系均用關(guān)系模型來(lái)表示。
幾乎所有的數(shù)據(jù)庫(kù)管理系統(tǒng)都配備了一個(gè)開(kāi)放式數(shù)據(jù)庫(kù)連接(ODBC)驅(qū)動(dòng)程序,令各個(gè)數(shù)據(jù)庫(kù)之間得以互相集成。
典型代表有:MySQL、Oracle、Microsoft SQL Server、Access、PostgreSQL、DB2、MariaDB
2.2 非關(guān)系型數(shù)據(jù)庫(kù) NoSQL
非關(guān)系型數(shù)據(jù)庫(kù)也被稱(chēng)為 NoSQL 數(shù)據(jù)庫(kù),NoSQL 并不是某個(gè)具體數(shù)據(jù)庫(kù),它泛指所有非關(guān)系型數(shù)據(jù)庫(kù)。
非關(guān)系型數(shù)據(jù)庫(kù)種類(lèi)有很多,我們列舉其中較為流行的幾種。2.2.1、鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù)
鍵值數(shù)據(jù)庫(kù)主要是使用一個(gè)哈希表,表中有一個(gè)特定的鍵和一個(gè)指針指向特定的數(shù)據(jù)。Key/value 模型的鍵值數(shù)據(jù)庫(kù)的優(yōu)勢(shì)在于,通過(guò)鍵的 hash 碼可以快速查詢(xún)到 value,并且能夠應(yīng)對(duì)高并發(fā)。
市面上成熟的產(chǎn)品有,Memcached、Redis、MemcacheDB、Berkeley DB。前兩個(gè)可能比較有名,做緩存的數(shù)據(jù)庫(kù)。2.2.2、列存儲(chǔ)(Column-oriented)數(shù)據(jù)庫(kù)
列存儲(chǔ)數(shù)據(jù)庫(kù)又被稱(chēng)為面向可擴(kuò)展性的分布式數(shù)據(jù)庫(kù),它反轉(zhuǎn)了傳統(tǒng)的行存儲(chǔ)數(shù)據(jù)庫(kù)。
先看一個(gè)普通表結(jié)構(gòu),表student
idnameage1aa212bb223cc23
傳統(tǒng)的行存儲(chǔ)數(shù)據(jù)庫(kù):
1aa212bb223cc23
列存儲(chǔ)數(shù)據(jù)庫(kù):
123aabbcc212223
因?yàn)槭且粤凶侄巫鳛樽鳛楸砀竦男?#xff0c;那么同一行記錄取的就是該表中所有記錄的的某一個(gè)列數(shù)據(jù)集合,必然是同一類(lèi)型的數(shù)據(jù),要么都是 int 類(lèi)型,要么都是 varchar 類(lèi)型。
行存儲(chǔ)如果要取表中某一列的所有數(shù)據(jù)集合,就會(huì)復(fù)雜的多,所以在大部分場(chǎng)景下,列存儲(chǔ)的解析過(guò)程更有利于分析大數(shù)據(jù)的數(shù)據(jù)分析。
當(dāng)然了,這只是其中一個(gè)區(qū)別,他們之間的優(yōu)劣對(duì)比有很多個(gè)方面,這里不可能都進(jìn)行列舉,你們可以自行去搜索了解。
最典型的產(chǎn)品應(yīng)用就是,Hbase,大數(shù)據(jù)存儲(chǔ)用的非常多。2.2.3、面向文檔數(shù)據(jù)庫(kù)
文檔數(shù)據(jù)庫(kù)是一種非關(guān)系數(shù)據(jù)庫(kù),旨在將半結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)為文檔,其中文檔包括 XML、YAML、JSON、BSON、office 文檔等。
簡(jiǎn)而言之,就是將數(shù)據(jù)保存到以上類(lèi)似格式的文檔中,數(shù)據(jù)庫(kù)中的每個(gè)記錄都是以文檔形式存在的,相互之間不再存在關(guān)聯(lián)關(guān)系。
典型的應(yīng)用就是,MongoDB、CouchDB。
03 第三,數(shù)據(jù)庫(kù)架構(gòu)
數(shù)據(jù)庫(kù)的架構(gòu)可以大致區(qū)分為三個(gè)概括層次:內(nèi)層、概念層和外層。
內(nèi)層:最接近實(shí)際存儲(chǔ)體,亦即有關(guān)數(shù)據(jù)的實(shí)際存儲(chǔ)方式。
外層:最接近用戶,即有關(guān)個(gè)別用戶觀看數(shù)據(jù)的方式。
概念層:介于兩者之間的間接層
04 第四,SQL簡(jiǎn)介
1,SQL
SQL(Structured Query Language 結(jié)構(gòu)化查詢(xún)語(yǔ)句)是一種特定目的程序語(yǔ)言,用于管理關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),或在關(guān)系流數(shù)據(jù)管理系統(tǒng)(RDSMS)中進(jìn)行流處理。
SQL基于關(guān)系代數(shù)和元組關(guān)系演算,包括一個(gè)數(shù)據(jù)定義語(yǔ)言和數(shù)據(jù)操縱語(yǔ)言。SQL的范圍包括數(shù)據(jù)插入、查詢(xún)、更新和刪除,數(shù)據(jù)庫(kù)模式創(chuàng)建和修改,以及數(shù)據(jù)訪問(wèn)控制。2,SQL語(yǔ)法簡(jiǎn)介
2.1 運(yùn)算符
2.2 查詢(xún)
SQL中最常見(jiàn)的操作是查詢(xún),它是通過(guò)陳述性SELECT語(yǔ)句執(zhí)行的。SELECT從一個(gè)或多個(gè)表或表達(dá)式中檢索數(shù)據(jù)。
SELECT是最復(fù)雜的SQL語(yǔ)句,可選的關(guān)鍵詞和子句包括:
select * from student where id=1;
查詢(xún)可以嵌套,以便一個(gè)查詢(xún)的結(jié)果可以通過(guò)關(guān)系運(yùn)算符或聚合函數(shù)在另一個(gè)查詢(xún)中使用。嵌套查詢(xún)也稱(chēng)為子查詢(xún):
select * from student where id in (select id from student where age<23);
2.3 空值與三值邏輯
SQL中引入了空值的概念,用來(lái)處理關(guān)系模型中缺少信息的情況。NULL一詞表示空白值,是SQL中的保留詞。如果Null進(jìn)行比較,例如在WHERE子句中使用“=”判斷相等,那么會(huì)返回未知值,而SELECT語(yǔ)句只會(huì)返回WHERE子句條件為真(TRUE)的結(jié)果,不會(huì)返回條件為假(FALSE)或未知的結(jié)果。
“真”、“假”以及與空值直接比較時(shí)所得到的“未知”共同組成了SQL的three-valued logic 三值邏輯
由于直接與空值比較會(huì)返回未知,因此SQL又提供了兩個(gè)用于測(cè)試空值的語(yǔ)句:IS NULL和IS NOT NULL
2.4 數(shù)據(jù)類(lèi)型
一張表中的每個(gè)字段都要定義該字段的類(lèi)型。ANSI SQL包括下列數(shù)據(jù)類(lèi)型:
2.5 數(shù)據(jù)定義
數(shù)據(jù)定義語(yǔ)言(DDL)管理表和索引結(jié)構(gòu)。DDL的最基本是CREATE、ALTER、RENAME、DROP和TRUNCATE語(yǔ)句:
CREATE在數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)對(duì)象(例如一張表)
create table teacher(id int,name varchar(50),primary key id);
ALTER以不同方式修改現(xiàn)有對(duì)象的結(jié)構(gòu),例如向現(xiàn)有的表或約束添加字段:
alter table teacher add age int not null;
TRUNCATE以一種非常快速的方式刪除表中的所有數(shù)據(jù),刪除表內(nèi)的數(shù)據(jù)而不是表本身
truncate table teacher;
DROP刪除數(shù)據(jù)庫(kù)中的對(duì)象,通常無(wú)法挽回的,即,它不能被回滾
drop table teacher;
2.6 數(shù)據(jù)操作
數(shù)據(jù)操縱語(yǔ)言(DML)是SQL用于添加、更新和刪除數(shù)據(jù)的子集:
INSERT添加行(正式名稱(chēng)為元組)到一個(gè)現(xiàn)有的表
insert into teacher(id,name,age) values(1,'張老師',32);
UPDATE修改現(xiàn)有的表中一些行
update teacher set id=33 where id=1;
DELETE從表中刪除現(xiàn)有的行
delete from teacher where age>60;2.7 數(shù)據(jù)控制
數(shù)據(jù)控制語(yǔ)言 (Data Control Language, DCL) 授權(quán)的用戶訪問(wèn)和操作的數(shù)據(jù)。它的兩個(gè)主要的語(yǔ)句是:
GRANT:授權(quán)的一個(gè)或多個(gè)用戶執(zhí)行在一個(gè)對(duì)象上的一個(gè)操作或者一組操作。
REVOKE:消除了授權(quán),其可以是默認(rèn)的授權(quán)。
grant select on teacher to xiaoming;
revoke select on teacher from xiaoming;
總結(jié)
以上是生活随笔為你收集整理的数据库_数据库篇-第一章:数据库基本概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: /xiaolei.php|martin_
- 下一篇: 置顶带滚动效果_高端大气的滚动条图表,你