生物信息学中的数据管理/数据查询
外观
章节导航 | |
顶部 | E/R 理论 - 规范化 - 数据查询 - 整合 SQL 和编程语言 |
- SQL(结构化查询语言)。SQL 是一种数据定义和操作语言(DDL 和 DML 两种)
- RA(关系代数)
- Datalog
- 命令:CREATE TABLE
对于关系
Gene(gid, name, annotation)
Experiment(eid, name,date)
Microarray(gid, eid, exprlevel)
可以使用以下 SQL 命令集创建表
CREATE TABLE Gene( gid INTEGER, name VARCHAR(20), annotation
VARCHAR(50), PRIMARY KEY (gid));
CREATE TABLE Experiment(eid INTEGER, name VARCHAR(10), date
DATE, PRIMARY KEY (eid));
CREATE TABLE Microarray (a INTEGER, b INTEGER, exprlevel REAL,
PRIMARY KEY (gid, eid));
主键用于唯一标识表中的每一行。它可以是实际记录的一部分,也可以是人工字段。SQL 将根据主键自动对表进行索引。还可以对其他键(除了主键)进行索引;可以通过使用 CREATE INDEX 命令来完成。
请注意,“Microarray”表的 主键 由其他两个表(即 Gene 和 Experiment)的键组成。这些字段称为外键。必须参考表从哪里获得主键。语法如下。
CREATE TABLE Microarray (a INTEGER, b INTEGER, exprlevel REAL,
PRIMARY KEY (gid, eid), FOREIGN KEY (a) REFERENCES Gene
(gid), FOREIGN KEY (b) Experiment (eid) );
这些类型的约束通常称为引用完整性约束。
- 命令:INSERT INTO
示例
INSERT INTO Gene VALUES(1, "1433E", "enzyme binding");
大多数数据库管理系统都具有能够一次加载大量数据的功能。
- 显示 Gene 表中存储的所有数据
- SQL
SELECT * FROM Gene;
- RA
- Datalog
- SQL
- 显示 Gene 表中所有基因的名称
- SQL
SELECT name FROM Gene;
- RA
- Datalog 注意:要列出仅唯一的 值,请在 SQL 中使用 SELECT DISTINCT。RA 和 Datalog 默认情况下返回唯一值。
- SQL
- 显示满足特定条件的基因名称
- SQL
SELECT * FROM Gene WHERE annotation like '%phosphates%';
- RA
- Datalog
- SQL
定义:两个大小分别为 nxa 和 mxb 的表的笛卡尔积是一个具有 n*m 行和 a+b 列的表
- SQL
SELECT * FROM Gene, Experiment;
- RA
- Datalog
- 表格
|
|
|
- E-R 图
- SQL
SELECT Genes.*, Expts.*, exp_level FROM Genes, Expression, Expts WHERE Genes.gid = Expression.gid AND Expression.eid = Expts.gid;
- 关系代数
Genes ?? Expression ?? Expts (A ?? B) ?? C = A ?? (B ?? C)
- Datalog
Answer(x, y, t, a, b, w) ← Genes(x, y, z), Expression(x, t, w), Expts(t, a, b) Genes' x match Expression's x Expts' t match Expression's t
问题:...
|
- RA CannotbeMax = ... Allpairs = ... Allpairs - CannotbeMax
- SQL
CREATE VIEW CannotbeMax(gid, eid) AS SELECT E1.gid, E1.eid FROM Expression AS E1, Expression AS E2 WHERE E1.explevel < E2.explevel; CREATE VIEW Allpairs(gid, eid) AS SELECT gid, eid FROM expression; SELECT * FROM Allpairs EXCEPT SELECT * FROM CannotbeMax;
- EXCEPT ∪ UNION ∩ INTERSECT
- Datalog
CannotbeMax(x, y) <- Expression(x, y, t), Expression(a, b, w), t < w. Answer(x, y) <- Expression(x, y, a), NOT CannotbeMax(x, y).
没有 MAX() 运算符
- 最大值
- ref. Join section Example 2
- 最小值
- 第二大值
- 中位数
A X B = C C / B = ?
|
|
通过关系代数
1. sid =sid学生和课程
2. Ideal = sid X R4G
3. Reality = 学生和课程
4. Defaulters = Ideal - Reality
5. Answer = sid - sidDefaulters
通过 SQL
1.
CREATE VIEW SID(sid)<BR>
SELECT sid<BR>
FROM Student&Courses<BR>
2.
CREATE VIEW IDEAL(sid,courseId)<BR>
SELECT sid,courseID<BR>
FROM SID,R4G<BR>
3.
CREATE VIEW REALITY(sid,courseId)<BR>
SELECT *<BR>
FROM Student&Courses<BR>
4.
CREATE VIEW Defaulters(sid,courseId)<BR>
SELECT * <BR>
FROM IDEAL<BR>
EXCEPT<BR>
SELECT *<BR>
FROM REALITY<BR>
5.
SELECT * <BR>
FROM SID<BR>
EXCEPT <BR>
SELECT sid<BR>
FROM Defaulters <BR>
练习
- 找出满足毕业要求但只差一门课的学生。
- 找出满足大多数毕业要求的学生。
视图并没有真正计算,大多数情况下,由于歧义,无法插入行。
SQL 注入是一种黑客技术,它利用格式化的输入执行了非预期的 SQL 查询。
花哨的功能
1. ORDER BY
2. MAX,AVG,SUM,MIN
3. GROUP BY, HAVING
4. SELECT 具有打印功能