关系数据库三级模式结构
外模式:视图,基本表导出的表,数据库中只存放视图的定义而不存放视图对应的数据。
模式:基本表
内模式:存储文件
数据定义
操作对象 | 创建 | 删除 | 修改 |
模式 | create schema | drop schema | |
表 | create table | drop table | alter table |
视图 | create view | drop view | |
索引 | create index | drop index | alter index |
模式的定义与删除
要创建模式,调用该命令的用户必须拥有数据库管理员权限,或者获得了数据库管理员授予的create schema 权限
语句: create schema 模式名 authorization 用户名
删除模式,drop schema 模式名 <cascade| restrict>
cascade 级联 :删除模式的同时把该模式下的数据库对象全部删除、
restrict 限制:如果该模式下定义有表,视图,则拒绝该删除语句的执行。只有当该模式下没有任何下属对象时才能执行drop schema语句
基本表的定义、删除、修改
定义 create table 表名(<字段1><数据类型>[列级完整性约束条件],...,[<表级完整性约束条件>])
修改基本表 alter table<表名>
删除 drop table <表名>[restric|cascade]
cascade:该表的删除没有限制条件
restrict:该表的删除有限制条件,要删除的基本表不能被其他表的约束条件所引用,不能有视图,触发器,存储过程或函数 (默认情况)
索引的建立与删除
索引可以加速数据库查询,但要占用一定存储空间。基本表更新时,索引要进行相应维护。
建立索引create [unique][cluster] index <索引名> on 表名(<列名>[<次序>][,<列名>[<次序>]])
修改索引 alter index <旧索引名> rename to <新索引>
删除索引 drop index <索引名>
数据查询
select [all | distinct] <目标列表达式>[,目标列表达式] ...
from <表名 or 视图名>[,<表名 or 视图名>,...] | (select 语句) [as]<别名>
[where <条件表达式>]
[group by <列名1> [having <条件表达式>]]
[oder by <列名2>[ASC|DESC]];
根据where子句的条件表达式从from 子句指定的基本表,视图或派生表中找出满足条件的元组,再按照select 子句中的目标列表达式选出元组中的属性值形成结果表。
有group by 子句,则将结果按列名1 的值进行分组,该属性列值相等的元组为一个组
oder by 子句 按列名2事务值的升序或降序排序
单表查询
指定列 select <列名1>,<列名2>,... from tablename;
全部列 select * from tablename;
选择表中的若干元组
消除取值重复的行 select distinct 列名 ,... from tablename;
满足一定条件的元组
查询条件 | 谓词 |
比较 | =,>,<,>=,<=,!=,<>,!=,!>,!<,;not +上述比较运算符 |
确定范围 | between (下限) and (上限), not between and |
确定集合 | in , not in |
字符匹配 | like , not like |
空值 | is null , is not null |
多重条件 | and , or , not |
聚集函数
count(*) | t统计元组个数 |
count( [distinct|all ] <列名>) | t统计一列中的值的个数 |
sum( [distinct|all ] <列名>) | j计算一列值的总和 |
avg ( [distinct|all ] <列名>) | j计算一列值的平均值 |
max ( [distinct|all ] <列名>) | y一列的最大值 |
min ( [distinct|all ] <列名>) | y一列的最小值 |
all为默认的
where语句里不能有聚集函数作为条件表达式,having 里面可以有