sql - 如何在 SQL 3 中创建一个继承自另一个表的表?
问题描述
我有这个表 salle 有 2 个属性这是从 salle 继承的表,它被称为 salleCours 并且有 3 个附加属性。当我在 sql 命令行中运行 oracle 11g express 中的第二个命令时,它在“under”下显示:缺少或无效选项。我不知道这是语法问题还是其他问题
Create table salle(
Numero varchar(20) primary key,
Videoprojecteur char(1) ) ;
Create table salleCours UNDER salle(
Capacite number(3),
Retroprojecteur char(1),
micro char(1)) ;
解决方案
你想定义一个OBJECT
类型,然后使用一个对象定义的表:
CREATE TYPE salle_type AS OBJECT(
Numero varchar(20),
Videoprojecteur char(1)
) NOT FINAL;
CREATE TYPE salleCours_type UNDER salle_type(
Capacite number(3),
Retroprojecteur char(1),
micro char(1)
);
CREATE TABLE salle OF salle_type (
Numero PRIMARY KEY
);
然后您可以插入任一类型的行:
INSERT INTO salle VALUES( salle_type( 'abc', 'Y' ) );
INSERT INTO salle VALUES( salleCours_type( 'def', 'Y', 42, 'N', 'X' ) );
而且,如果你想要这些值:
SELECT s.*,
TREAT( VALUE(s) AS salleCours_type ).Capacite AS capacite,
TREAT( VALUE(s) AS salleCours_type ).Retroprojecteur AS Retroprojecteur,
TREAT( VALUE(s) AS salleCours_type ).micro AS micro
FROM salle s
哪个输出:
数字 | 视频项目 | 电容 | 逆向投影 | 微 :----- | :--------------- | --------: | :--------------- | :---- 美国广播公司 | 是 | 空| 空 | 无效的 定义 | 是 | 42 | N | X
db<>在这里摆弄
推荐阅读
- flutter - Flutter - 如何在材质应用程序中调用多个构建器项目?
- php - 如何使用 cURL 和 PHP 从使用 SSL 的网站获取数据?
- flutter - 我想在一个容器中显示 ListView,它的大小随着列表项的增加而动态增加
- iis - 按 Header 值列出的 IIS 白名单
- marklogic - 有没有办法在 MarkLogic 中以优化的方式为所有数据库安排备份?
- python - python子进程函数找不到路径:php文件
- time-complexity - 动态规划中记忆递归与表法的时间复杂度比较
- c# - While 循环中的“System.Argument.Exception 参数无效”位图错误
- python - 如何在重定向视图中获取 kwargs 值
- smartcard - 有没有办法重置个人识别码 (PIN) 尝试计数器?(标签 0x9F17)