【CSE103 数据库期末总结】
一、关键字(Key):
1、关键字包含 超键(Super key),候选键(Candidate key),组合键(Composite key)和主键(Primary key)。
2、候选键和组合键都可以作为主键,候选键和组合键统称为超键。
3、键(key)由关系内的一组属性集组成,通过定义键可以保证关系实例(relation instance)上任何两个元组(tuple)的值在定义键的属性集不同。
4、主键在SQL语言中用 Primary key(属性名)关键字 和 unique (属性名)关键字定义, primary key 定义的主键内不可有空值(即NULL值),而unique定义的主键内可以有空值(即NULL值)。
二、数据库:
1、数据库(Data base)是一个关系(relation)的集合。
2、数据库内每个关系由 属性(Attribute),元组(Tuple),域(Domain),和 元素(Component)组成。
3、属性 是一个关系内每一列的列名。关系模式中的属性是集合,而不是列表。 可是为了讲述关系,常常赋予属性一个“标准”顺序。当需要介绍具有一组属性的关系模式时,常以这个标准次序显示关系或关系的任意一行。
3、元组 是每个关系中一组属性的关系模式。
4、域 关系模型要求元组的每个分量具有原子性。也就是说,它必须属于某种元素类型,如 integer 或String, 而不能记录、集合、列表、数组或其他任何可以被分解成更小分量的组合类型。
如:
表示一个关系Movies 的关系模式为:
Movies(title: string, year: integer, length:integer, genre: string)。
5、关系的等价描述:
在一个关系中元组的顺序与属性的顺序可以改变,即有不同的排列方式,而关系不会改变。但重新排序关系模式时,要记住属性是列标题。因此,改变属性次序,也要改变它们所在列的次序。
6、关系的实例:
一个给定关系的元组的集合叫做关系的实例。
7、在表示关系模式(Schema)时在属性名下划线可以表示该属性集是该关系的主键。
三、代数查询语言:
个人理解代数查询语言就是SQL语言的伪代码。
1、 关系代数的操作符:
(1) 并(Union)、交(intersection)、差(minus)
(2) 除去某些行或者列的操作用“选择” 和 “投影”来表示。选择除去了某些行,投影除去了某些列。
(3) 组合两个关系的操作 包括 笛卡尔积(Cartesian Product)和其他许多连接(join)操作,包括Theta-join, Natural join。
(4) “重命名”(renaming)操作。不影响关系中的元组对关系或者属性进行重命名。
注:
人们一般把关系代数的表达式称为 查询(query)。
四、数据库语言SQL:
1、SQL即 Structured Query Language 结构化查询语言。
2、SQL存在很多版本,但都要符合ANSI(美国国家标准机构)
A、在1992年c采纳的对ANSI SQL进行修改的标准,称为SQL-92 或 SQL2
B、最近的SQL-99(也称为SQL3)标准。SQL-99对SQL2进行了扩充,引入了对象关系特征和许多其他功能。
3、SQL consists of:
A: data definition language
B: data manipulation language
C: data control language
4、SQL数据库语言-Database Definition的关键字与语法:
(1)Creating Database:
语法:
CREATE DATABASE <name>;
注:
<name> is the name of the actual database.
(2) Related Commands:
语法:
A、 STOP DATABASE;
---closes the currently active database
B、 DROP DATABASE<name>
---erases the named database
C、 SHOW DATABASE;
---lists all the databases
(3)Create a Table:
A.例如:
CREATE TABLE Book
(
Book_no integer NOT NULL,
Title varchar(20) NOT NULL,
Subject char(12)
PRIMARY KEY(Book_no);
)
B. 语法:
表用保留字CREATE TABLE后跟关系名以及括起来属性名与类型组成来定义。
注: 例子中NOT NULL表明Book_no 和 Title 必须有数据。
C. char(),varchar(),与nvarchar()的区别:
l Char(n)表示长度为n的字符串,如果长度不到n 会自动补值,如果超出长度会截取长度为n的字符串
l Varchar(n)表示可变长度为n的非unicode表的字符串
l Nvarchar(n)表示可变长度为n的unicode表的字符串
(5) Altering Table:
A. 语法:
ALTER TABLE<table_name>
ADD <columns>;
注: <table_name> is the name of the table to alter
<columns> is one or more attributes to “alter”
- B. 例子:
ALTER TABLE Book
ADD Author char(20) NOT NULL;
(6) Deleting Tables:
(1)语法:
DROP TABLE<table_name>;
(2)例子:
DROP TABLE Book;
5. SQL中的数据类型:
CHAR(n); 字符串
VARCHAR(n); 字符串
BIT(n); 位串
BIT VARING(n) ; 位串
INT; 整数型
INTEGER;整数型
SHORT;整数型
FLOAT;浮点型
REAL; 浮点型
DOUBLE PRECISION;浮点型
DATE; 日期型
和 TIME.时间型
6. SQL数据库语言-Database Manipulation的关键字与语法:
(1)SQL中的简单查询:
A. SQL中的简单查询和关系代数中的选择(Selection) 和 投影(Projection)类似。
B. SQL查询语句的典型格式: select-from-where
(2)查询语句的三个保留字:SELECT、FROM和WHERE。
SELECT 后跟投影属性。
FROM 后跟需要查询的关系名。
WHERE 后跟选择元组的条件。
(3)例:
SELECT title,length
FROM Movies
WHERE studioName – ‘Disney’ AND year = 1990;
这个例子表示查询关系Movies中 studioName为 Disney 年份为1990 的电影,并选择title 和 length 输出。
注: SQL中字符串用单引号, 如‘Disney’;
当不需要投影 或者 不需要 选择时 SELECT与 WHERE 后加 * 号, 表示空值。