數據庫基礎——(SQLserver)約束

                                                          數據庫
定義:一些存儲在硬盤上的數據文件mysql

內存:
計算機臨時存儲的一些數據sql

.net - SQL Server
PHP - MySql
Java - Oreacl數據庫


數據庫中的數據類型:
int decimal(長度,小數位數)編程

bit - 布爾型 1 - true 0 - false服務器

datetime - 時間日期型數據庫設計

nvarchar(長度) 500 max 字符串
varchar(長度)分佈式

text - 長文本
-------------------------------------------
關係型數據庫
四種約束:post

一、主鍵約束:
設置某一列爲主鍵列
不容許重複,不容許爲空,一個表有且只有一個主鍵列網站

二、外鍵約束:(創建表和表之間關係的最重要的約束)
當前表的某一列被其它表的某一個主鍵列/惟一列所約束
當前表被約束的這一列裏面的內容不容許超出約束它的列裏面的內容編碼

要做爲主約束列來約束其它表的列,這一列必須是 主鍵列/惟一列/

 三、惟一約束:

設置一列爲惟一列,讓這一列的數據不能重複

 四、Check約束:
編寫表達式,來約束某一列其中的值的範圍
&& - and
|| - or

------------------------------
做業:

一、經常使用數據庫類型

1. IBM 的DB2

 

做爲關係數據庫領域的開拓者和領航人,IBM在1997年完成了System R系統的原型,1980年開始提供集成的數據庫服務器—— System/38,隨後是SQL/DSforVSE和VM,其初始版本與SystemR研究原型密切相關。DB2 forMVSV1 在1983年推出。該版本的目標是提供這一新方案所承諾的簡單性,數據不相關性和用戶生產率。1988年DB2 for MVS 提供了強大的在線事務處理(OLTP)支持,1989 年和1993 年分別以遠程工做單元和分佈式工做單元實現了分佈式數據庫支持。最近推出的DB2 Universal Database 6.1則是通用數據庫的典範,是第一個具有網上功能的多媒體關係數據庫管理系統,支持包括Linux在內的一系列平臺。

2. Oracle

Oracle 前身叫SDL,由Larry Ellison 和另兩個編程人員在1977創辦,他們開發了本身的拳頭產品,在市場上大量銷售,1979 年,Oracle公司引入了第一個商用SQL 關係數據庫管理系統。Oracle公司是最先開發關係數據庫的廠商之一,其產品支持最普遍的操做系統平臺。目前Oracle關係數據庫產品的市場佔有率名列前茅。

3. Informix

Informix在1980年成立,目的是爲Unix等開放操做系統提供專業的關係型數據庫產品。公司的名稱Informix即是取自Information 和Unix的結合。Informix第一個真正支持SQL語言的關係數據庫產品是Informix SE(StandardEngine)。InformixSE是在當時的微機Unix環境下主要的數據庫產品。它也是第一個被移植到Linux上的商業數據庫產品。

4. Sybase

Sybase公司成立於1984年,公司名稱「Sybase」取自「system」和 「database」 相結合的含義。Sybase公司的創始人之一Bob Epstein 是Ingres 大學版(與System/R同時期的關係數據庫模型產品)的主要設計人員。公司的第一個關係數據庫產品是1987年5月推出的Sybase SQLServer1.0。Sybase首先提出Client/Server 數據庫體系結構的思想,並率先在Sybase SQLServer 中實現。

5. SQL Server

1987 年,微軟和 IBM合做開發完成OS/2,IBM 在其銷售的OS/2 ExtendedEdition 系統中綁定了OS/2Database Manager,而微軟產品線中尚缺乏數據庫產品。爲此,微軟將目光投向Sybase,同Sybase 簽定了合做協議,使用Sybase的技術開發基於OS/2平臺的關係型數據庫。1989年,微軟發佈了SQL Server 1.0 版。

6. PostgreSQL

PostgreSQL 是一種特性很是齊全的自由軟件的對象——關係性數據庫管理系統(ORDBMS),它的不少特性是當今許多商業數據庫的前身。PostgreSQL最先開始於BSD的Ingres項目。PostgreSQL 的特性覆蓋了SQL-2/SQL-92和SQL-3。首先,它包括了能夠說是目前世界上最豐富的數據類型的支持;其次,目前PostgreSQL 是惟一支持事務、子查詢、多版本並行控制系統、數據完整性檢查等特性的惟一的一種自由軟件的數據庫管理系統.

7.mySQL

mySQL是一個小型關係型數據庫管理系統,開發者爲瑞典MySQL AB公司。在2008年1月16號被Sun公司收購。目前MySQL被普遍地應用在Internet上的中小型網站中。因爲其體積小、速度快、整體擁有成本低,尤爲是開放源碼這一特色,許多中小型網站爲了下降網站整體擁有成本而選擇了MySQL做爲網站數據庫。MySQL的官方網站的網址是: www.mysql.com

 


二、搜一下關係型數據庫的特色

關係數據庫,是創建在關係數據庫模型基礎上的數據庫,藉助於集合代數等概念和方法來處理數據庫中的數據,同時也是一個被組織成一組擁有正式描述性的表格,該形式的表格做用的實質是裝載着數據項的特殊收集體,這些表格中的數據能以許多不一樣的方式被存取或從新召集而不須要從新組織數據庫表格。關係數據庫的定義形成元數據的一張表格或形成表格、列、範圍和約束的正式描述。每一個表格(有時被稱爲一個關係)包含用列表示的一個或更多的數據種類。 每行包含一個惟一的數據實體,這些數據是被列定義的種類。當創造一個關係數據庫的時候,你能定義數據列的可能值的範圍和可能應用於那個數據值的進一步約束。
三、四種約束總結

一、CHECK 約束

在數據庫中,CHECK 約束是指約束表中某一個或者某些列中可接受的數據值或者數據格式。例如,能夠要求 authors 表的 postcode 列只容許輸入六位數字的郵政編碼。

CHECK 約束能夠應用於一個或者多個列,也能夠將多個CHECK 約束應用於一個列。

當除去某個表時,對這個表的CHECK 約束也將同時被去除。

CHECK 約束的限制

CHECK 約束不接受計算結果爲 FALSE 的值。由於 空值的計算結果爲 UNKNOWN,因此若是 賦值表達式中存在這些值,則約束可能會被覆蓋而不起做用。例如,假設對 int 列 MyColumn 應用一個約束,指定 MyColumn 只能包含值 10(即 MyColumn = 10)。若是將值 NULL 插入到 MyColumn, 數據庫引擎將插入 NULL 且不返回錯誤。

若是 CHECK 約束檢查的條件對於表中的任何行都不是 FALSE,它將返回 TRUE。若是剛建立的表沒有任何行,則此表的任何 CHECK 約束都視爲有效。這種狀況可能會產生意外結果,以下面的示例所示。

CREATE TABLE CheckTbl (col1 int, col2 int);GOCREATE FUNCTION CheckFnctn()RETURNS intAS BEGIN DECLARE @retval int SELECT @retval = COUNT(*) FROM CheckTbl RETURN @retvalEND;GOALTER TABLE CheckTblADD CONSTRAINT chkRowCount CHECK (dbo.CheckFnctn() >= 1 );GO 添加的 CHECK 約束指定表 CheckTbl 必須至少包含一行。可是,由於表中不包含任何可供檢查此約束的條件的行,因此 ALTER TABLE 語句將成功。

執行 DELETE 語句時不驗證 CHECK 約束。所以,使用特定類型的 CHECK 約束對錶執行 DELETE 語句時可能會產生意外結果。例如,假設對錶 CheckTbl 執行下列語句。

INSERT INTO CheckTbl VALUES (10, 10)

GO

DELETE CheckTbl WHERE col1 = 10;

即便 CHECK 約束指定表 CheckTbl 必須至少包含 1 行,DELETE 語句也會成功。

二、主鍵約束

主鍵約束在表中定義一個主鍵來惟一肯定表中每一行數據的標識符.(非空,唯一)例如:altertablememberaddconstraintPK_member_member_noprimarykeyclustered(member_no)主鍵列的數據類型不限,但此列必須是惟一而且非空。如該表中已有主鍵爲1000的行,則不能再添加主鍵爲1000。人工或程序很差控制的時候,也能夠設置主鍵列爲自動增加列。

主鍵的做用

主鍵是一個表中能標識惟一行的標誌(也有其餘方法表示惟一行,如惟一列)。

主鍵主要用在查詢單調數據,修改單調數據和刪除單調數據上。

通常作程序的時候,都將表的主鍵設置爲int型的可自增的列,這樣在 編程的時候,很容易區分數據。

三、惟一約束

惟一約束SQL實現

  惟一約束保證在一個字段或者一組字段裏的數據與表中其它行的數據相比是惟一的。

  建立惟一約束

  在服務器資源管理器中,選擇要將惟一約束添加到的表,再從「數據庫」菜單中單擊「打開表定義」。

  該表在「表設計器」中打開。

  從「表設計器」菜單中單擊「索引/鍵」。

  在「索引/鍵」對話框中單擊「添加」。

  在網格中單擊「類型」,再從屬性右側的下拉列表框中選擇「惟一鍵」。

  當保存表時,將在數據庫中建立該惟一約束。

  建立惟一約束可確保在不參與主鍵的特定列中不輸入重複值。當惟一約束和主鍵都強制惟一性時,若是知足下列條件,則應將惟一約束而不是主鍵約束附加到表上:

  1.但願在列或列的組合中強制惟一性。可將多個惟一約束附加到表,可是隻能將一個主鍵約束附加到表。

  2.但願在容許空值的列中強制惟一性。可將惟一約束附加到容許空值的列,可是隻能將主鍵約束附加到不容許空值的列。當將惟一約束附加到容許空值的列時,請確保在約束的列中最多有 一行包含空值。

  對字段使用了unique約束,能夠當主健在數據庫中使用

四、外鍵

若是公共關鍵字在一個關係中是主關鍵字,那麼這個公共關鍵字被稱爲另外一個關係的外鍵。因而可知,外鍵表示了兩個關係之間的相關聯繫。以另外一個關係的外鍵做主關鍵字的表被稱爲主表,具備此外鍵的表被稱爲主表的從表。外鍵又稱做外關鍵字。

外鍵(Foreign Key)

換而言之,若是關係模式R中的某屬性集不是R的 主鍵,而是另外一個關係R1的主鍵則該屬性集是關係模式R的外鍵,一般在 數據庫設計中縮寫爲FK。

做用

保持 數據一致性,完整性,主要目的是控制存儲在外鍵表中的數據。 使兩張表造成關聯,外鍵只能引用外表中的列的值或使用空值。

軟道語錄

外鍵就是指另外表中的主鍵 。

相關文章
相關標籤/搜索