数据库系统原理笔记(4)

在SQL中定义关系模式

SQL中的关系

SQL区分三类关系:

1.存储的关系,称为(table),类似于excel中的sheet,其在数据库中存储,用户可以依此对其元组进行查询和更新。

2.视图(view),通过计算来定义的关系。这种关系并不在数据库中促成农户,而是在需要上的自定义构造。

3.临时表,是在执行数据查询和更新时由SQL处理程序临时构造。这些临时表会在处理结束后被删除而不会存储在数据库里。

数据类型

关系中所有属性都必须具有数据类型,而这些数据类型也是SQL系统所支持的。

1.可变长度或固定长度字符串,具体体现为CHAR(n)(最大为n个字符的固定长度字符串)VARCHAR(n)(最多只有n个字符的字符串)

具体实现的时候,前者在占用不足的情况下会填充空格,而后者则是直接添加一个结束符号或者字符长度值。

2.固定或可变长度的位串

位串和字符串类似,但是它们的值是由比特而不是由字符组成,类型BIT(n)表示长度为n个比特的位串。BIT VARYING(n)表示最大长度为n的位串。

3.BOOLEAN

该类属性表示逻辑值,具体可能值是TURE、FALSE和UNKNOW

4.类型INT和INTEGER(二者同义)

这表示典型的整数值,类型SHORTINT也表示整数,但是表示的位数可能小写,具体取决于实现。

5.浮点值

类型FLOAT和REAL(二者同义),表示典型的浮点数值。高精度浮点值使用DOUBLE PRECISION。

SQL还指定了小数点后位数的浮点类型,例如DECIMAL(n,d)表示n位有效数字的十进制数,而小数点位于右数第d位

6.日期和时间

这分别通过DATA和TIME数据类型表示

简单的表定义

保留字(关键字)CREATE TABLE

CREATE TABLE Movies(
    title CHAR(100);
    year INT,
    length INT,
    genre CHAR(100),
    studioName CHAR(30),
    producerC# INT,
);

修改关系模式

删除某个关系R

DROP TABLE R;

修改关系

修改操作语句关键字ALTER TABLE,其后加上关系的名字,后还可以接选项,最重要的两种就是:

①ADD后面加上属性名字和数据类型
②DROP后面加上属性名字

例如 修改关系MovierStar,为其添加属性phone

语句为ALTER TABLE MovieStar ADD phone CHAR(16);

另一个例子则是ALTER TABLE MovieStar DROP birthdate;

默认值

创建或者修改时,通常建议使用NULL值来代替该位置上的“真实值” 有的时候也可能是使用默认值

声明的时候,可以加上保留字DEFAULT和一个合适的值。要么是NULL,要么是常量。

例如使用默认值进行生命

gender CHAR(1) DEFAULT '?',
birthdate DATE DEFAULT DATE '0000-00-00'

至于其他例子,例如在新增属性phone时,可以声明默认值为'unlisted'

语句为ALTER TABLE MovieStar Add phone CHAR(16) DEFAULT 'unlisted';

键的声明

声明键的方法:

①属性被列入关系模式的时候,声明其是键(键仅由单个属性组成)
②在模式声明的项目表中增加表象,声明一个或一组属性是键(键由单个或者多个属性组成)

有两种键的声明方式:

①PRIMARY KEY (不允许NULL值存在)
②UNIQUE (允许NULL值存在)

以下是几个常见的例子;

//使用方式①声明
CREATE TABLE MovieStar(
  name CHAR(30) PRIMARY KEY,
  address VARCHAR(255),
  gender CHAR(1),
  birthdate DATE
);
//使用方式②声明
CREATE TABLE MovieStar(
  name CHAR(30),
  address VARCHAR(255),
  gender CHAR(1),
  birthdate DATE,
  PRIMARY KEY(name)
);
//只使用方式②声明,因为涉及到了多个属性作为键
CREATE TABLE MovieStar(
  name CHAR(30),
  address VARCHAR(255),
  gender CHAR(1),
  birthdate DATE,
  PRIMARY KEY(name,birthdate)
);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章