第1行的“ CGPA”列的SQL超出范围值

时间:2018-11-08 12:30:36

标签: mysql sql mysql-workbench

-1)创建学生表格

CREATE TABLE student (IDNO VARCHAR(11) NOT NULL PRIMARY KEY,
                      NAME VARCHAR(64) NOT NULL,
                      ROOM INTEGER,
                      HOSTEL CHAR(2),
                      CGPA NUMERIC (2,2) CHECK(CGPA < 10 and CGPA > 0));

-插入给定数据CGPA DECIMAL(2,2)CHECK(CGPA <10和CGPA> 0)

INSERT INTO student VALUES('2000A3PS177', 'Raoul', 222, 'AK', 8.8);

INSERT INTO student VALUES('2001A7PS098', 'Kapil', 143, 'RM', 7.9);

INSERT INTO student VALUES('2000A7PS588', 'Sriram', 175, 'RP', 10.0);

INSERT INTO student VALUES('2001A7PS721', 'Nikhil', 112, 'RM', 9.2);

INSERT INTO student VALUES('2001A3PS588', 'Mouli', 121, 'BD', 7.5);

运行时出现以上代码,出现以下错误: 正在准备... 导入my_test.sql ... 完成执行脚本 第8行的错误1264(22003):第1行的“ CGPA”列的值超出范围 操作失败,退出代码为1

我尝试将输入的数值或NUMERIC更改为DECIMAL,但是没有运气。

如果我进行以下更改,则它可以工作。 表格

CGPA NUMERIC (2,2) CHECK(CGPA < 10 and CGPA > 0)

CGPA float 

您能帮我了解我在这里想念的吗?

2 个答案:

答案 0 :(得分:2)

您的问题是NUMERIC(2, 2)。这基本上支持从0.000.99的值-两位精度。

我认为您打算NUMERIC(4, 2)NUMERIC(3, 2)来支持小数点前 的数字。

答案 1 :(得分:0)

除了ans之外,理解以下概念也很有帮助:

DDL看起来像这样: 创建表帐户( accountNo整数, 余额数字(8,2) );

“余额”列可以安全地存储号码173226.62。 enter image description here

SQL中的数字,十进制数据类型

P- 8(总十进制数字) S- 2