sql - 我在 STU_GPA 行或附近不断收到错误。我不明白问题是什么
问题描述
这是我的代码:
CREATE TABLE STUDENT
(
STU_NUM INTEGER NOT NULL,
STU_LNAME VARCHAR(25) NOT NULL,
STU_FNAME VARCHAR(20) NOT NULL,
STU_INIT CHAR(1),
STU_DOB DATE NOT NULL,
STU_HRS INTEGER DEFAULT 0 CHECK(STU_HRS IN (STU_HRS >= 0 AND STU_HRS <=1000)),
STU_CLASS CHAR(2) NOT NULL CHECK(STU_CLASS IN ('Fr', 'So', 'Jr', 'Sr', 'Gr')),
STU_GPA NUMBER(3,2) DEFAULT 0.00 NOT NULL CHECK(STU_GPA IN (STU_GPA >= 0.00 AND STU_GPA <= 4.00)),
STU_PHONE NUMBER(4,0) NOT NULL,
PRIMARY KEY (STU_NUM)
);
我不断收到一条错误消息,指出我在行或行附近缺少括号STU_GPA
ORA-00907: 缺少右括号
但我其实不是。我错过了什么?谢谢你的帮助!
解决方案
所以你在表中有一个字段
STU_GPA NUMBER(3,2) DEFAULT 0.00 NOT NULL
现在你想要check
它来获取有效值。如果您有它们的枚举(例如,如果仅0, 1, 2, 3, 3.5, 4
是有效的),请输入IN
:
CHECK(STU_GPA IN (0, 1, 2, 3, 3.5, 4))
但是,如果您想声明range,例如其中的任何STU_GPA
值0..4
都是有效的,那么直接不使用 any IN
:
CHECK(STU_GPA >= 0.00 AND STU_GPA <= 4.00)
清除查询可以
CREATE TABLE STUDENT (
STU_NUM INTEGER NOT NULL,
STU_LNAME VARCHAR(25) NOT NULL,
STU_FNAME VARCHAR(20) NOT NULL,
STU_INIT CHAR(1),
STU_DOB DATE NOT NULL,
-- Range of valid values
STU_HRS INTEGER DEFAULT 0 CHECK(STU_HRS >= 0 AND STU_HRS <= 1000),
-- Enumeration of valid values
STU_CLASS CHAR(2) NOT NULL CHECK(STU_CLASS IN ('Fr', 'So', 'Jr', 'Sr', 'Gr')),
-- Range of valid values
STU_GPA NUMBER(3,2) DEFAULT 0.00 NOT NULL CHECK(STU_GPA >= 0.00 AND STU_GPA <= 4.00),
STU_PHONE NUMBER(4,0) NOT NULL,
PRIMARY KEY (STU_NUM)
);
推荐阅读
- java - 松露上的 GraalVM Java - 执行 Java 代码时来自 NFIContext.getBackend 的 NullPointerException
- python - 将文件中的数据分配给字典对象
- node.js - 为什么编译器找不到 Sass 模块?
- javascript - Discord.js:[对象对象]
- google-api - 如何减少检索时间以使用 API 从 Google Classroom 获取单个课程的所有草稿成绩
- c# - 返回的参数格式不正确
- json - 对象列表的 json 表示法
- python - 带有频率计数的数据帧分组
- r - 将 R 中的值四舍五入
- c# - 如何更改循环内声明的变量?