--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
你能帮我理解一下我在这里遗漏了什么吗?
2条答案
按热度按时间busg9geu1#
你的问题是
NUMERIC(2, 2)
. 这基本上支持0.00
至0.99
--两位数的精度。我想你是有意的
NUMERIC(4, 2)
或者NUMERIC(3, 2)
为了支持小数点前的数字。axkjgtzd2#
此外,理解以下概念也很有帮助:
ddl如下所示:创建表account(accountno integer,balance numeric(8,2));
“余额”列可以安全地存储数字173226.62。
sql中的数字、十进制数据类型
p-8(这是总小数位数)s-2