《数据库系统概念》6-数据类型、授权等

?一、一致性
一致性包括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 <privilege list>
on <relation name or view name>
to <user/role list>;
privilege list包括select, insert, update, delete
对于update,可以设定允许更新某些属性:
grant update (budget) on department to Amit, Satoshi;
类似地,撤销授权语法为:
revoke <privilege list>
on <relation name or view name>
to <user/role list>;
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

时间: 2024-10-09 06:37:54

《数据库系统概念》6-数据类型、授权等的相关文章

《数据库系统概念》学习笔记2

第二章       关系模型 a.关系代数基本运算有:选择.投影.并.集合差.笛卡尔积.和更名 b.附加的关系代数运算:集合交.自然连接.除运算.赋值运算. c.扩展的关系代数运算:广义投影,聚集函数,外连接 d.数据库的修改:删除,插入,更新 小结 A.关系数据模型建立在表的集合的基础之上.数据库系统的用户可以对这些表进行查询,可以插入新元组.删除元组以及更新(修改)元组. B.关系代数定义了一套在表上运算,且输出结果也是表的代数运算.这些运算可以混合使用以得到表达所希望查询的表达式.关系代数

数据库系统概念 - 关于这本书

它是什么? 西尔伯沙茨 等著,最新版本第六版 <Database System Concepts> 将数据库系统的概念,要和数据库厂商(如:Oracle,MySql 等等)区分开来.另外,很多高校选择作为本科生,研究生的数据库课程教材. 豆瓣评分80% 四星以上.其中,一个强烈推荐的评语: 我每天读一章.大约每天3小时,在索引,查询处理那两章花了8小时以上,在范式那节重新整理下以前的看法,非常不错的书,翻译的也不错.相比国内的<数据库系统概论>,这书适合自学,并且非常详细,算法伪代

MongoDB入门学习(二):MongoDB的基本概念和数据类型

上一篇讲了MongoDB的安装和管理,其中涉及到了一些概念,数据结构还有一些API的调用,不知道的没关系,其实很简单,这篇会简单介绍一下. 1.文档 文档是MongoDB的核心概念,多个键值对有序的放在一起就是一个文档,文档是MongoDB存储数据最基本的数据结构.对MongoDB都是以文档的形式来操作的,使用了一种类似JSON的二进制BSON数据格式,对API的调用都是传的文档参数.每种编程语言都有标示文档的数据结构,比如java的map,lua的table,python的dict等等,但是都

数据库系统概念笔记-引言

 数据库管理系统(DBMS)由一个互相关联的数据的集合和一组用以访问这些数据的程序组成.这个数据集合通常称作数据库,其中包含了关于某个企业的信息.   DBMS的主要目标是要提供一种可以方便.高效地存取数据库信息的途径. 1.1 数据视图 1.1.1 数据抽象 一个可用的系统必须能高效地检索数据.这种高效性的需求促使设计者在数据库中使用了复杂的数据结构来表示数据,但是,有很多数据库用户不懂这些.为此,数据库的系统开发人员通过如下几个层次上的抽象来对用户屏蔽复杂性,以简化用户与系统的交互: 物理层

?《数据库系统概念》1-数据抽象、模型及SQL

?DBMS(database-management system)包括数据库和用于存取数据的程序,DBMS的基本目标是为数据的存取提供方便.高效的方式,此外对大多数企业来说,数据是非常重要的,所以DBMS还要保证数据的安全,比如在系统奔溃或收到未授权访问请求的时候. 一.数据抽象a) 数据库系统隐藏了数据在存储.维护方面的细节,以视图的形式为用户提供数据.数据库系统必须能满足高效地查询数据的需求,为此设计者将数据库系统抽象为三层:物理层.逻辑层.视图层b) 物理层,描述了数据在物理存储介质的实际

计算机科学丛书:数据库系统概念 读书笔记(十四)--事务

构成单一逻辑工作单元的操作集合称作事务(transaction). 即使有故障,数据库系统也必须保证事务的正确执行--要么执行整个事务,要么属于该事务的操作一个也不执行. 1. 事务概念 事务通常由高级数据操纵语言或编程语言通过JDBC或ODBC嵌入式数据库访问书写的用户程序的执行所引起. 四大特性:原子性.隔离性.一致性.持久性 原子性:如果一个事务开始执行,但是由于某些原因失败,则事务对数据库造成的任何可能的修改都要撤销.无论事务本身是否失败,或者操作系统崩溃,或者计算机停止运行,这项操作都

JavaScript基础——基本概念:数据类型及其转换

任何语言的核心必然会描述这门语言最基本的工作原理.而描述的内容通常都要设计这门语言的语法.操作符.数据类型.内置功能等用于构建复杂解决方案的基本概念. 语法 ECMAScript的语法大量借鉴了C及其他类语言(如Java和Perl)的语法.因此,熟悉那些语言的开发人员在接受ECNAScript更加宽松的语法时,一定会有一种轻松自在的感觉. 区分大小写 要理解的第一个概念就是ECMAScript中的一切(变量.函数和操作符)都区分大小写.标识符 所谓标识符,就是指变量.函数.属性的名字,或者函数的

数据库系统概念:基础的SQL

public class DataBase { public static void main() { } } /* 3.1 SQL查询语言概览 SQL语言有一下几个部分: 数据定义语言:提供定义关系模式,删除关系以及修改关系模式的命令 数据操纵语言:提供从数据库中查询信息,以及在数据库中插入元组,删除元组,修改元组的能力 完整性:定义完整性约束的命令 视图定义: 事务控制:定义事务的开始和结束的命令 嵌入式SQL和动态SQL:嵌入式和和动态SQL定义SQL语如何嵌入到通用编程语言 授权:定义了

JS的基本概念和数据类型

什么是 JavaScript 语言 JavaScript 是一种轻量级的脚本语言.所谓“脚本语言”,指的是它不具备开发操作系统的能力,而是只用来编写控制其他大型应用程序(比如浏览器)的“脚本”,本身不提供任何的 API,都要靠宿主环境(host)提供,所以 JavaScript 只合适嵌入更大型的应用程序环境,去调用宿主环境提供的底层 API. JavaScript 的核心语法部分相当精简,只包括两个部分:基本的语法构造(比如操作符.控制结构.语句)和标准库(就是一系列具有各种功能的对象比如Ar