"外键与引用完整性是数据库设计中的关键概念,主要应用于关系型数据库如MySQL中。外键用于在两个表之间建立关联,确保数据的一致性和完整性。父表是指包含原始键值的表,而子表则引用父表的键值,形成一种依赖关系。这种关系使得子表中的特定索引引用父表中的索引,其值要么必须与父表中的某个键值匹配,要么可以为空(NULL),表示父表中没有对应记录。在MySQL中,外键的支持由InnoDB存储引擎提供。
在创建外键时,可以使用以下SQL语法:
```
FOREIGN KEY [index_name] (index_columns)
REFERENCES tbl_name (index_columns)
[ON DELETE action]
```
这里的`index_name`是外键的名称,`index_columns`是子表中引用父表索引的列名,`tbl_name`是父表的名称,而`ON DELETE action`则是定义当父表中的记录被删除时,如何处理子表中的相关记录。例如,`ON DELETE CASCADE`表示父表记录删除时,子表中对应的记录也会被级联删除,而`ON DELETE RESTRICT`则阻止父表记录的删除,除非没有相关联的子表记录。
MySQL支持多种SQL语句,包括数据库的选取、创建、丢弃和变更,如`USE`, `CREATE DATABASE`, `DROP DATABASE`, `ALTER DATABASE`等;数据表和索引的操作,如`CREATE TABLE`, `DROP TABLE`, `CREATE INDEX`, `DROP INDEX`, `ALTER TABLE`;获取数据库和表信息,如`DESCRIBE`, `SHOW`;数据检索,如`SELECT`, `UNION`;事务处理,如`BEGIN`, `COMMIT`, `ROLLBACK`, `SET AUTO_COMMIT`;以及数据插入、删除、更新,如`DELETE`, `INSERT`, `LOAD DATA`, `REPLACE`, `UPDATE`;还有管理性语句,如`FLUSH`, `GRANT`, `REVOKE`等。
在示例中,我们看到了三个表格——`student`, `score`, 和 `event`。`student`表存储学生信息,`score`表记录学生的分数,`event`表记录考试事件,而`absence`表则记录学生的缺席情况。这些表格可以通过`student_id`和`event_id`等共同的字段实现关联,利用外键机制确保数据的完整性。"