在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)
);