更新声明不起作用。怎么了

时间:2013-10-04 15:32:35

标签: sql sql-server ssms

我很抱歉,不允许我发表评论。你是对的。这是我遇到的问题。如何将累积GPA列添加到表中(使用alter语句),其中gpa显示在0.00和4.00之间

CREATE database "IS4440_DuBoseJasmine"

CREATE TABLE StudentInformation (
StudentID               CHAR(7) not null,
StudentSSN              CHAR(9) null,
StudentFirstName        VARCHAR(50) null,
StudentLastName         VARCHAR(50) null,
StudentMiddleName       VARCHAR(50) null,
StudentHomeCountry      CHAR(2) not null
)
/*2*/
ALTER TABLE StudentInformation ADD Cumulative GPA ;

/*3*/
INSERT INTO StudentInformation (StudentID, StudentLastName, StudentFirstName,     StudentMiddleName,     StudentHomeCountry)
VALUES ('1352154', 'DuBose', 'Jasmine', 'Leigh', 'US')
INSERT INTO StudentInformation (StudentID, StudentLastName, StudentFirstName, StudentMiddleName, StudentHomeCountry)
VALUES ('1234565', 'Smith', 'Johnny', 'Apple', 'GB');
/*4*/
UPDATE StudentInformation SET StudentSSN = 123456789
WHERE StudentID = 1352154;

2 个答案:

答案 0 :(得分:2)

更新工作正常(demonstrated on SQL Fiddle),ALTER TABLE语句失败。这一行:

ALTER TABLE StudentInformation ADD Cumulative GPA;

应该是:

ALTER TABLE StudentInformation ADD [Cumulative GPA] INT -- OR WHATEVER TYPE IT SHOULD BE;

<强> ALTER TABLE Documentation

顺便说一下,虽然这可能只是一个例子,但如果不是这样的话,在创建表之前你需要USE数据库:

CREATE database "IS4440_DuBoseJasmine";
GO
USE IS4440_DuBoseJasmine;

CREATE TABLE ...

否则,您只需在所连接的数据库中创建表。

答案 1 :(得分:0)

您的更新查询没问题,您的ALTER语句失败了,您正在向表中添加新列而没有任何数据类型或约束,请尝试此更改您的表

您可以使用Numeric(3,2)Decimal(3,2),这意味着小数点后两位总共三位数,因此最多为9.99

 ALTER TABLE StudentInformation ADD CumulativeGPA Numeric(3,2) NULL

要更改表格以添加新列,请将该列NULLABLE设为列,并在命名列时不提供空格。

使列类型不可为空

ALTER TABLE StudentInformation ALTER COLUMN CumulativeGPA  DECIMAL(3,2) NULL ;