基本类型
char(len):固定长度的字符串
如果存放的字符串长度不足,则自动追加空格
varchar(maxlen):可变长度的字符串
int/integer
numeric(p,d):p位数字,小数点后d位
real, double precision:浮点精度数字
float(len):精度至少n位的浮点数
date:日期
time:时间
基本模式定义
数据库的操作
表操作
约束包括:
Primary key
Unique
not null
外键:foreigh key (A) references table_name
多个属性构成键:primary key (A1, A2, …)
增删改查
添加删除修改元素
查询
结果唯一性
select distinct name
select all name from instructor #all显示声明保留重复
查询所有属性
select *
算数表达
select salary * 1.1
聚集函数
sum
avg
count
max
min
排序(默认增序)
模糊查询问题
使用单引号标示字符串,如果单引号位字符串组成部分,则使用2个单引号
字符串函数:upper(s), lower(s), trim(s)
字符串匹配:
% :匹配0个或多个字符
_ :匹配任意一个字符
where
逻辑连接词:and or not
比较运算符,算数表达式
between
in
some/all(支持>, <, >=, <=, <>)
exists:子查询结果中有无元组存在
通常使用not exists
select xxx fromxxx where not exists (子查询)
unique:用来测试子查询结果是否存在重复元素
where unique()
多关系查询
select * from A, B where A.id = B.id
先对A,B进行笛卡尔积,然后查找A.id = B.id的行并返回
自然连接:在两个关系模式中都出现的属性上取值都相同的元组对
select * from A natural join B
指明需要相等的列
select * from A join B using (v1, v2);
更名运算
集合运算
默认去重
union:∪
intersect:∩
except:-
保留重复:UNION ALL
分组聚集
空值不能进行运算:
聚集运算中,除了count(*),其他函数都忽略null数据项
null参与比较运算,结果视为false
null参与算数运算,值为null
链接表达式
链接条件:
A join B on A.id = B.id
A join B using (column)
left outer join:
表1的所有元组都会保留,
如果表2中有满足链接条件的元组,则连接;否则与空值元组连接
right outer join
full outer join:
inner join/ join:
natural join:对两张表中字段名和数据类型都相同的字段进行等值连接,并返回符合条件的结果 。
- natural join和inner join区别:
natural join自动对两个表按照相同的列(不超过1个)进行inner join
inner join可以选择(on)按照哪一列进行连接
视图
对视图的更改最终要反映在对基本表的更改
with check option:对视图进行更改时,检查是否满足条件表达式
MySQL:虚拟表
程序按照视图定义获取/更新数据(安全层)
物化视图(Oracle):实际存在的表
预先计算并保存复杂的操作结果
刷新模式:1.用户需要时更新
2.基表更新提交同时(触发器)
刷新方法:1.FAST:增量刷新
2.COMPLETE:完全刷新
3.FORCE:选择是否能快速刷新,否则完全刷新
4.NEVER
完整性约束
列完整性:
表完整性:
增加、删除约束
断言
数据类型与模式
索引
大对象数据类型(clob)+二进制数据的大对象数据类型(blob):
用户定义类型:
创建与现有某个表模式相同的表:
授权
程序设计语言
JDBC,ODBC
1.连接到数据库 getConnection:
参数1:字符串表示的URL,包括服务器的主机名,通信协议,端口号,数据库
参数2:用户名
参数3:密码
2.传递SQL语句:
Statement传递:自动完成检查,插入转移字符,防止SQL注入
触发器
指明什么条件下执行,当对数据库作修改时,自动触发
数据库将超过某个长度的触发器链看作错误