一、一致性
一致性包括not null、unique、check
a)not null
name varchar(20) not null
b)unique
如果a1, a2...等構成了候選鍵,可以用unique(a1, a2...)來保證其唯一性,但這些字段仍然可為空,而為空值與任何值都不相等。
c)check
限制semester的值:
check (semester in (』fall』, 』winter』, 』spring』, 』summer』)
d)referential integrity參照完整性
如果course.dept_name作為外來鍵引用department表,為了保證course.dept_name的取值都存在於department.dept_name,新增參照完整性約束為:
e)foreign key (dept name) references department
二、資料型別和schemas
a)date和time
sql標準規定的time相關型別有:
date 』2001-04-25』
time 』09:30:00』
timestamp 』2001-04-25 10:29:01.45』
字串形式的日期可以使用cast e as t的方式來轉換;也可以使用extract year/month/day/hour/minute/second from d的方式來單獨提取年月日等資料;
還有current_day, current_timestamp(包含時區), localtimestamp(不包含時區的本地時間);
interval型別表示時間的差
b)default value
create table student
(id varchar (5),
name varchar (20) not null,
dept name varchar (20),
tot_cred numeric (3,0) default 0,
primary key (id));
這裡設定了tot_cred的預設值為0
c)建立索引
create index studentid index on student(id)表示建立了名為studentid的索引,有的資料庫產品又進一步區分了聚集索引(clustered)與非聚集索引(nonclustered)
d)大物件型別large-object type
如果要儲存聲音、影象等資料,資料量可能為kb甚至mb, gb級別,為此sql提供了兩種大物件型別 clob(character large object)和blob(binary...)。不同資料庫的具體實現會有區別,而且實際使用中不推薦使用這些型別,而往往將資料儲存在檔案系統,並在資料庫儲存其存放位置。
e)使用者自定義型別
允許基於現有的型別來自定義資料型別,比如:
create type dollars as numeric(12,2);
create type pounds as numeric(12,2);
自定義型別dollars和pounds雖然都是numeric(12,2)型別,但在業務上被認為是不同的資料型別。
還有一種定義方式為:
create domain ddollars as numeric(12,2) not null;
type和domain的細微的區別在於domain可以同時新增約束如not null,;而且domain也不是完全的強型別,只要值是相容的,就可以賦值給domain定義的型別,而type卻不行。
e)create table的擴充套件
create table temp instructor like instructor;建立了乙個與sinstructor有相同結構的表
在編寫sql時,有時會建立臨時表並存入資料,這時可以用簡化寫法:
create table t1 as
(select *
from instructor
where dept name= 』music』)
with data;
t1表結構與查詢結果集相同,如果去掉with data,則只建立schema而不插入資料。
三、授權
許可權控制可以針對使用者或角色進行資料操縱、schema更新等的控制。
a)分配、撤銷授權
分配許可權的語法為:
grant
on to ;
privilege list包括select, insert, update, delete
對於update,可以設定允許更新某些屬性:
grant update (budget) on department to amit, satoshi;
類似地,撤銷授權語法為:
revoke
on to ;
b)角色
基於角色的許可權控制不是sql的專利,很多共享型應用都採用這種授權方式。
create role instructor;
grant select on takes to instructor;
grant dean to amit;
前面的語句建立了角色instructor,為期分配select from takes許可權,然後將amit歸入instructor角色。在amit執行查詢前,sql根據它所屬角色具有的許可權來做控制。
c)關於schema的授權
因為外來鍵會影響後續的更新、刪除等操作,所以有必要為外來鍵的建立做許可權控制:
grant references (dept name) on department to mariano;
學習資料:database system concepts, by abraham silberschatz, henry f.korth, s.sudarshan
《資料庫系統概念》6 資料型別 授權等
一 一致性 一致性包括not null unique check a not null name varchar 20 not null b unique 如果a1,a2.等構成了候選鍵,可以用unique a1,a2.來保證其唯一性,但這些字段仍然可為空,而為空值與任何值都不相等。c check ...
資料庫系統概念 回顧
資料抽象一般分三層 最底層 物理層physical level 描述資料實際上是怎樣儲存的 中間層 邏輯層logic level 描述資料庫中儲存什麼資料及這些資料間存在什麼關係 最頂層 檢視層view level 只描述整個資料庫的某個部分 關係模型 relational model logic ...
SQLServer資料庫系統概念
資料模型是一種抽象模型,現實世界中的客觀事物是彼此相互聯絡的 1 資料模型是一組整合的概念,使用者描述和操作組織內的資料,資料間的聯絡以及對資料的約束,它包含了資料結構,資料操作和完整性約束 2 概念模型又被稱為實體 聯絡 e r 模型,主要用於描述資訊世界中實體的聯絡 在概念模型中用於描述其資料的...