說明:
本文節選自《python語言及應用》的第八章《資料的歸宿》,稍有改動;
因在csdn找不到合適分類,故暫列為原創。
儘管關係型資料庫只有40多年的歷史,卻無處不在,經常會使用到其提供的如下功能:
被稱為 關係型(relational) 的原因是資料庫展現了 表單(table) 形式的不同型別資料之間的關係。
表單是乙個具有行和列的二元組,和電子**類似。要建立乙個表單,需要給他命名,明確次序、每一項的名稱以及每一列的型別。每一行都存在相同的列,即使允許缺失項(也稱為null)。
某一行或某幾行通常作為表單的主鍵,在表單中主鍵的值是獨一無二的,防止重複新增資料項。這些鍵在查詢時被快速索引,類似於圖示的索引,方面快速地找到指定行。
每乙個表單都附屬於某個資料庫,類似於乙個檔案都存在於某目錄下,兩層的層次結構便於更好地組織和管理。
如果想通過非主鍵的列的值查詢資料,可以定義乙個二級索引,否則資料庫伺服器需要掃瞄整個表單,暴力搜尋每一行找到匹配列的值。
表單之間可以通過外來鍵建立關係,列的值受這些鍵的約束。
sql既不是乙個api也不是一種協議,而是一種宣告式語言,只需要告訴sql需要做什麼即可。它是關係型資料庫的通用語言。sql查詢是客戶端傳送給資料庫伺服器的文字字串,指明需要執行的具體操作。
儘管sql語言存在很多標準定義格式,但是所有的資料庫製造商都會增加自己的擴充套件,導致產生許多sql方言。如果你把資料儲存在關係型資料庫中,sql會帶來一定的可移植性,但是方言和操作差異仍然會導致難以將資料移植到另一種類似的資料庫中。
sql語句有兩種主要的型別:
表1 基本的sql ddl語句操作
sql模式
sql示例
建立資料庫
create databse dbname
create databse d
選擇當前資料庫
use dbname
use d
刪除資料庫及表單
drop database dbname
drop database d
建立表單
create table tbname (coldefs)
create table t(id int,count int)
刪除表單
drop table tbname
drop table t
刪除表單中所有的行
truncate table tbname
truncate table t
說明:為什麼語句中命令都是大寫?sql是不區分大小寫的,但一般為了區分命令和名稱,在**示例中還是用大寫字母。
sql關係型資料庫的主要dml操作可以縮略為crud。
表2 基本的sql dml語句操作
sql模式
sql示例
增加行insert into tbname values(…)
insert into t values(7,40)
選擇全部行和全部列
select * from tbname
select * from t
選擇全部行和部分列
select cols from tbname
select id,count from t
選擇部分行和部分列
select cols from tbname where condition
select id,count from t where count > 5 and id=9
修改一列的部分行
update tbname set col=vaule where condition
update t set count=3 where id=5
刪除部分行
delete from tbname where condition
delete from t where count <= 10 or id = 16
關係型資料庫與非關係型資料庫
關係型資料庫與非關係型資料庫的區別 非關係型資料庫的優勢 1.效能 nosql是基於鍵值對的,可以想象成表中的主鍵和值的對應關係,而且不需要經過sql層的解析,所以效能非常高。2.可擴充套件性 同樣也是因為基於鍵值對,資料之間沒有耦合性,所以非常容易水平擴充套件。關係型資料庫的優勢 1.複雜查詢 可...
關係型資料庫與非關係型資料庫
關係型資料庫最典型的資料結構是表,由二維表及其之間的聯絡所組成的乙個資料組織 優點 1 易於維護 都是使用表結構,格式一致 2 使用方便 sql語言通用,可用於複雜查詢 3 複雜操作 支援sql,可用於乙個表以及多個表之間非常複雜的查詢。缺點 1 讀寫效能比較差,尤其是海量資料的高效率讀寫 2 固定...
關係型資料庫與非關係型資料庫
指採用了關係模型來組織資料的資料庫。關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個資料組織。關係 一張二維表,每個關係都具有乙個關係名,也就是表名 元組 二維表中的一行,在資料庫中被稱為記錄 屬性 二維表中的一列,在資料庫中被稱為字段 域 屬性的取值範圍,也就是...