关系模型
relation 指的是多个集合笛卡尔积的子集(集合意味着没有重复的tuple)
relation schema由一个个attribute组成(attribute的集合)
relation instance指的就是一张张表
(这里relation instance和relation schema的关系又类似于数据与类型之间的关系。)
Query Language
1、关系代数是SQL语句的数学基础,下面6个是基本符号,其他运算都可以从这六个推导出。
- select: σ
- project: ∏
- union: ∪
- set difference: –
- Cartesian product: x
- rename: ρ
DDL——维护:relation的schema、attribut的domain、integrity约束、关系的索引集合、授权信息、每个关系的物理存储结构。
create table table_name(
attr1 char(15) not null,
attr2 integer,
primary key(attr2)
)
drop
alter table table_name add attr3 integer
alter table table_name delete attr3(不是所有的数据库都支持)
基本查询语句都是基于集合的关系运算
select允许结果出现重复结果(duplicates),如果希望避免,加入关键字distinct。
select distinct attr1 from table_name
而关键字all则指明重复结果不被消除
select all attr1 from table_name
where子句使用and、or和not作逻辑连接词,子句中允许代数运算
区间值(左右封闭区间)可使用between运算符
字符串匹配使用like运算符,在匹配的pattern中%代表任意子字符串,_代表任意字符
from子句内含笛卡尔积的操作,要使用naturn join的运算,需要配合where子句
as子句可以重命名属性或关系,通常可以省略
order by子句后跟属性名表示按照该属性排序,默认为升序,可以通过关键字desc和asc指定
集合操作运算符union、intersect、except对应关系运算中的集合操作,默认消除duplicates,也可以通过添加all关键字调整
累计函数返回一个值,avg、min、max、sum、count,有时跟group by子句结合使用,以根据不同属性做累计,同时也结合having子句,作用同where
用于控制内嵌于query中的subquery有许多关键字通常配合where子句使用,in(tuple是否在relation中)、>some(比某些大)、>all(比所有tuple大)、exists(relation是否为空)、unique(判断duplicate)、
with子句用于表示新创建view,还有另外的view定义法:create view view_name as <query>,还有其他的view操作方法略
所谓的数据库的增(create)删(delete)改(update)查(retrieve),还剩CUD:
删的语法:delete from table_name where ...
增的语法:insert into table_name values(),这里values可以更换为select子句
改的语法:update table_name set
最后介绍join子句,来看
http://coolshell.cn/articles/3463.html,简单粗暴。
----------------------------------additional-------------------------------------------------
号称Advanced SQL,首先是SQL内建类型
date:'2005-7-27'
time:'09:00:55.2'
timestamp:'2005-7-27 03:00:22.3'
interval:'1'day
blob:binary large object
clob:character large object
下面是主要约束
not null:非空约束
unique:顾名思义,可作为candidate key
check(P):P为判断条件
primary key:主键
foreign key:外键 references 另外表的主键
授权也是SQL命令考虑的,主要的权限有:Read、Insert、Update、Delete、Index(增删索引)、Resources(增添新relation)、Alteration(增删relation属性)、Drop(删除relation)
授权语法(撤销授权为revoke):
grant <权限list>
on <relation名 或 view名> to <用户表>
JDBC使用方法:1、打开连接。2、创建statement。3、执行query。4、处理异常。