Sql Oracle中的完整性约束
我对数据库完全陌生,对Oracle语法感到有些困惑。我正在尝试创建一个带有完整性约束的表 这是我的密码:Sql Oracle中的完整性约束,sql,oracle,constraints,Sql,Oracle,Constraints,我对数据库完全陌生,对Oracle语法感到有些困惑。我正在尝试创建一个带有完整性约束的表 这是我的密码: CREATE TABLE Students ( id INTEGER, name CHAR(10) NOT NULL, classification CHAR(10) NOT NULL, hours INTEGER, gpa NUMBER(3,2
CREATE TABLE Students
(
id INTEGER,
name CHAR(10) NOT NULL,
classification CHAR(10) NOT NULL,
hours INTEGER,
gpa NUMBER(3,2) NOT NULL,
mentor INTEGER,
CONSTRAINT IC1 CHECK (PRIMARY KEY (id))
CONSTRAINT IC2 CHECK (classification = 'freshman' or classification = 'sophomore' or classification = 'junior' or classification = 'senior')
CONSTRAINT IC3 CHECK (gpa >= 0 AND gpa <= 4)
CONSTRAINT IC4 CHECK (classification = 'junior' AND hours >= 55 AND hours <= 84) );
创建学生表
(
id整数,
名称字符(10)不为空,
分类字符(10)不为空,
小时整数,
gpa编号(3,2)不为空,
导师整数,
约束IC1检查(主键(id))
约束IC2检查(分类=‘新生’或分类=‘大二’或分类=‘初级’或分类=‘高级’)
约束IC3检查(gpa>=0和gpa=55)和小时约束IC1检查(主键(id))
SP2-0734:以“约束…”开头的未知命令-忽略行的其余部分。
SQL>约束IC2检查(分类=‘新生’或分类=‘大二’或分类=‘初级’或分类=‘高级’)
SP2-0734:以“约束…”开头的未知命令-忽略行的其余部分。
SQL>约束IC3检查(gpa>=0和gpa约束IC4检查(classification='junior'和hours>=55和hours主键约束的声明中存在语法错误。主键约束不是检查约束,因此您不需要检查关键字。在每个内联约束定义后还需要逗号
SQL> ed
Wrote file afiedt.buf
1 CREATE TABLE Students
2 (
3 id INTEGER,
4 name CHAR(10) NOT NULL,
5 classification CHAR(10) NOT NULL,
6 hours INTEGER,
7 gpa NUMBER(3,2) NOT NULL,
8 mentor INTEGER,
9 CONSTRAINT IC1 PRIMARY KEY (id),
10 CONSTRAINT IC2 CHECK (classification = 'freshman' or classification = 'sophomore' or classification = 'junior' or classification = 'senior'),
11 CONSTRAINT IC3 CHECK (gpa >= 0 AND gpa <= 4) ,
12* CONSTRAINT IC4 CHECK (classification = 'junior' AND hours >= 55 AND hours <= 84) )
SQL> /
Table created.
SQL>ed
已写入文件afiedt.buf
1.为学生创建表格
2 (
3 id整数,
4名称字符(10)不为空,
5分类字符(10)不为空,
6小时整数,
7 gpa编号(3,2)不为空,
8个整数,
9约束IC1主键(id),
10约束IC2检查(分类=‘新生’或分类=‘大二’或分类=‘初级’或分类=‘高级’),
11约束IC3检查(gpa>=0且gpa=55小时)/
表已创建。
根据您使用的前端工具和工具的设置,您可能希望避免SQL语句中间有完全空行。从SQL的角度来看,这是完全有效的语法。但是一些前端将解释空白行作为结束之前的语句。
是所有约束的逗号添加结束。不是最后一个吗?不幸的是,添加逗号后我得到了相同的输出。谢谢你的提示。现在一切都很顺利。
SQL> ed
Wrote file afiedt.buf
1 CREATE TABLE Students
2 (
3 id INTEGER,
4 name CHAR(10) NOT NULL,
5 classification CHAR(10) NOT NULL,
6 hours INTEGER,
7 gpa NUMBER(3,2) NOT NULL,
8 mentor INTEGER,
9 CONSTRAINT IC1 PRIMARY KEY (id),
10 CONSTRAINT IC2 CHECK (classification = 'freshman' or classification = 'sophomore' or classification = 'junior' or classification = 'senior'),
11 CONSTRAINT IC3 CHECK (gpa >= 0 AND gpa <= 4) ,
12* CONSTRAINT IC4 CHECK (classification = 'junior' AND hours >= 55 AND hours <= 84) )
SQL> /
Table created.