第1行“cgpa”列的sql值超出范围

rpppsulh  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(562)

--1)创建表student

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十进制(2,2)检查(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);

我有上面的代码,当我运行得到下面的错误:准备。。。正在导入我的\u test.sql。。。已在第8行执行完脚本错误1264(22003):第1行“cgpa”列的值超出范围操作失败,exitcode为1
我试过把我输入的数值或数字改成十进制,但运气不好。
如果我做下面的改变,它是工作。形式

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

CGPA float

你能帮我理解一下我在这里遗漏了什么吗?

busg9geu

busg9geu1#

你的问题是 NUMERIC(2, 2) . 这基本上支持 0.000.99 --两位数的精度。
我想你是有意的 NUMERIC(4, 2) 或者 NUMERIC(3, 2) 为了支持小数点前的数字。

axkjgtzd

axkjgtzd2#

此外,理解以下概念也很有帮助:
ddl如下所示:创建表account(accountno integer,balance numeric(8,2));
“余额”列可以安全地存储数字173226.62。

sql中的数字、十进制数据类型
p-8(这是总小数位数)s-2

相关问题