数据库笔记(接口和SQL语句)
一、接口
A、查询语言
形式化查询语言、表格式查询语言、图形化查询语言、受限的自然语言查询
关系查询语言基础:关系代数、关系演算
SQL(结构化查询语言、标准查询语言)
1、数据定义语言 DDL 定义删除维护数据模式,例如表的创建删除灯
2、查询语言 QL 查找数据
3、数据操纵语言 DML 插入、删除、更新
4、数据控制语言 DCL 控制访问权限
B、接口和访问工具(GUI)
C、APIs 解决在应用程序中访问数据库
D、类库
二、几个重要术语和概念
基表:实实在在的存在硬盘的
视图:通过映射和计算得到的虚表
数据类型:具体数据库内有所区别
NULL(空值)
UNIQUE:说明某一个属性是否允许重复值
DEFAULT:为某一个属性指定缺省值
CHECK:可以定义约束条件
三、基本查询语句
A、SELECT [DISTINCT]target-list(要查询的目标) FROM relation-list(查询要涉及的表) WHRER 查询结果应该满足的条件
执行过程:1、做from语句中表的笛卡尔乘积
2、利用where语句中的条件做筛选
3、根据target-list做投影,如果加了DISTINCT,剔除重复元组
注意:一般使用别名
B、SELECT S.age,age1=S.age-5,2*S.age AS age2 FROM Sailors S WHERE S,sname like 'B_%B'
_表示匹配一个字符,%表示匹配0到多个字符
UNION 并
INTERSECT 交(满足并兼容条件)
IN 可以嵌套
查询只有一个水手定的船:SELECT bid FROM Reservers R1 WHERE bid NOT IN(SELECT bid FROM Reserver R2 WHERE R1.sid不等于R2.sid)
C、聚合操作
COUNT、AVG、SUM、MAX、MIN
SELECT COUNT(*) FROM Sailors S 计算S中的元组数
SELECT COUNT(DISTINCT S.rating)FROM Sailors S WHERE S.sname = 'Bob' 计算S中Bob个数
D、SELECT [DISTINCT]target-list(要查询的目标) FROM relation-list(查询要涉及的表) WHRER qualification GROUP BY grouping-list HAVING group-qualification
HAVING 语句中的属性在每个GROUP中唯一,只能通过语法判断,不能通过语意,即HAVING和SELECT中的属性是GROUP BY的子集。
聚集函数运算不能嵌套
E、NULL
四、新特性
A、CAST表达式
CAST(Expression(NULL) AS Data type)
B、CASE表达式
C、sub-query
Scalar sub-query:标量子查询,查询结果为一个值 凡是出现value的地方均可以使用子表达式
Table expression:表表达式,查询结果是一个表
Common table expression :公共表表达式 ,一类表表达式不止出现一次 WITH语句用于定义公共表表达式
D、外连接
加ALL不处理重复元组
E、Recursion(递归查询)
五、数据操纵语句
Insert INSERT INTO EMPLOYEES VALUES(X,X,X);
Delete DELETE FROM EMPLOYEES WHERE ----
Update UPDATE EMPLOYEES SET 属性=xxx WHERE 属性 =xxx;
View(视图):General view CREATE VIEW 视图名字 AS 查询语句
该视图可以当成一张表来使用,视图定义在数据库中
视图中的属性可以唯一映射会基表这可以修改
六、解决程序语言和SQL语言的兼容
1、Embedded SQL (嵌入式SQL) 2、API 3、Class Library(类库)