《資料庫系統概念》6 資料型別 授權等

2021-08-11 02:24:35 字數 2957 閱讀 1062

一、一致性

一致性包括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 模型,主要用於描述資訊世界中實體的聯絡 在概念模型中用於描述其資料的...