1 SQL 資料庫基本概念簡介

2021-09-29 15:35:14 字數 3805 閱讀 5712

通常所說的資料庫有兩種含義,一是指實際儲存資料的倉庫,二是指抽象層面上容納一組表的那個database,我們這裡所講的資料庫屬於後一種,最常用的資料庫是關係型資料庫。

我們與計算機的互動本質上是對資料的增刪改查,資料庫就提供了這些功能。它可以實現對資料的定義、插入、更新、刪除、查詢等操作,提供了工程師與資料互動的視窗。

主流的關聯式資料庫主要分為以下幾類:

商用資料庫,例如:oracle,sql server,db2等;

開源資料庫,例如:mysql,postgresql等;

桌面資料庫,以微軟access為代表,適合桌面應用程式使用;

嵌入式資料庫,以sqlite為代表,適合手機應用和桌面程式。

sql是結構化查詢語言(structured query language)的縮寫,用來訪問和運算元據庫系統的標準語言。sql語句既可以查詢資料庫中的資料,也可以新增、更新和刪除資料庫中的資料,還可以對資料庫進行管理和維護操作。

不同的資料庫,雖然多多少少都對sql進行了擴充套件,但是標準的sql核心功能是通用的,這樣我們通過學習sql這一種語言,就可以操作各種不同的資料庫。

sql語言定義了幾種運算元據庫的能力:

ddl:data definition language

ddl允許使用者定義資料,也就是建立表、刪除表、修改表結構這些操作。通常,ddl由資料庫管理員執行。

dml:data manipulation language

dml為使用者提供新增、刪除、更新資料的能力,這些是應用程式對資料庫的日常操作。

dql:data query language

dql允許使用者查詢資料,這也是通常最頻繁的資料庫日常操作。

關係型資料庫建立在關係模型上,關係模型的本質是若干個儲存資料的二維表,我們可以將其視為excel**。

表是資料儲存的直接載體,資料庫基本上都是通過表來組織資料的。所以是我們查詢並獲取資料最直接的物件。

表的幾個特徵:

表的每一行稱為乙個記錄(record),記錄乙個邏輯意義上的資料。

表的每一列稱為乙個字段(column),同乙個表每一行都有相同的若干字段。

每乙個記錄,包含若干個字段,同乙個表所有記錄有相同的字段。

行列交叉唯一確定乙個單元格。

表中列名不能重複,即列名需唯一。

表中每一列只能儲存同一型別資料。

不同資料庫管理系統支援型別有些許差異,以mysql為例,常用資料型別如下:

數值型別

數值型別中,bigint能基本滿足整數儲存需求,最常用。

日期型別

字串型別

varchar(n)能滿足字串儲存的需求,最為常用。

對於關係表,有個很重要的約束:任意兩條記錄不能重複。不能重複不是指兩條記錄不完全相同,而是指能夠通過某個字段唯一區分出不同的記錄,這個欄位被稱為主鍵。

主鍵最關鍵要求:

一旦插入表中,主鍵最好不要修改,用於唯一定位記錄。

與業務無關,可以選擇自增型別或者全域性唯一guid型別。

主鍵不允許為null。

主鍵可以是一列(如下圖1)也可以是多列(如下圖2),目的就是為了唯一區分定位記錄。多列主鍵稱為聯合主鍵。聯合主鍵允許一列重複,只要所有主鍵列不重複即可。

表和表之間的關係通常有三種,一對

一、一對多、多對多:

一對一:指表a和表b通過某欄位關聯後,表a中的一條記錄最多對應表b中的一條記錄,表b中的一條記錄也最多對應表a中的一條記錄。

一對多:指表a和表b通過某欄位關聯後,表a中的一條記錄可能對應表b中的多條記錄,而表b中的一條記錄最多對應表a中的一條記錄。

多對多:指表a和表b通過某欄位關聯後,表a中的一條記錄可能對應表b中的多條記錄,而表b中的一條記錄可能對應表a中的多條記錄。

一對一和一對多關係,通常使用外來鍵引用對應表的主鍵就可以表達。而多對多關係,通常需要使用中間表來表達,中間表中記錄了兩張表的主鍵的對應關係。

因此,外來鍵通常用來建立兩張表之間的關聯關係。如下圖兩個表

students表:

classes表:

想要找到學生與班級的對應關係,相當於classes對students是一對多,使用外來鍵class_id關聯兩個表:

注意:

外來鍵不是通過列名實現的,而是通過定義外來鍵約束。

alter

table students

addconstraint fk_class_id

foreign

key(class_id)

references classes (id)

;

刪除外來鍵約束。

alter

table students

drop

foreign

key fk_class_id;

外來鍵約束一般會有效能問題,所以一般不會設定外來鍵約束,而是將class_id作為普通列,起到外來鍵作用。

對於資料庫中的表來說,索引就相當於是表的目錄,是關聯式資料庫中對某一列或多個列的值進行預排序的資料結構,其存在的主要目的就是為了加快查詢速度。

索引的效率取決於索引列的值是否雜湊,該列值越不同效率越高。對於主鍵,關聯式資料庫會自動對其建立主鍵索引,因為主鍵會保證絕對唯一,所以使用主鍵索引的效率是最高的

建立索引

alter

table students

addindex idx_score (score)

;

建立唯一索引

唯一索引可以約束列中元素不能相同,保證唯一性。

alter

table students

addindex idx_name_score (name, score)

;

使用唯一約束

新增唯一約束,也可以保證唯一性。

alter

table students

addconstraint uni_name unique

(name)

;

檢視就是一張虛擬的表,但是注意,檢視儲存的是sql語句,而不是sql執行後的結果

檢視主要解決經常用到的sql日常查詢,可以儲存為檢視,方便下次直接讀取使用。

集合表示資料庫中記錄的集合,表、檢視和查詢的執行結果都是記錄的集合。可以做交集,並集,差集。

查詢的執行結果也是集合,那麼就可以把查詢的結果再當做乙個表,繼續基於這個表做分析。這個便是子查詢的理論基礎。

SQL資料庫 1 SQL語言

sql structured query language 結構化查詢語言 資料庫分為 層次型,網狀型,關係型。關係型資料庫 是乙個二維表的集合,可以用來儲存不同型別資料資訊,易於檢索,冗餘度較小。常用的資料庫包括 oracle mysql microsoft sql server access d...

資料庫基本概念

資料庫的分類 一 網路資料庫 網路資料庫是指把資料技術引入到計算機網路系統中,借助與網路技術將儲存於資料庫中的大量資訊及時發布出去,而計算器網路借助於成熟的資料庫技術對網路中的各種資料進行有效管理,並實現使用者與網路中的資料進行有效管理 並實現使用者與網路中的資料庫進行實時動態資料互動 二 層次資料...

資料庫基本概念

資料庫的基本概念 資料庫管理系統 dbms 是一種操作和管理資料庫的大型軟體,用於建立 使用和維護資料庫。它對資料庫進行統一的管理和控制,以保證資料庫 的安全性和完整性。dbms提供資料定義語言ddl與資料操作語言dml。資料庫的三種模型 網狀資料庫 層次資料庫 關聯式資料庫。1.網狀模型 層次模型...