Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle中的完整性约束_Sql_Oracle_Constraints - Fatal编程技术网

Sql 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

我对数据库完全陌生,对Oracle语法感到有些困惑。我正在尝试创建一个带有完整性约束的表

这是我的密码:

   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.