编写添加行的脚本

时间:2018-08-02 19:53:54

标签: sql-server

我正在独自学习SQL,并且一直在尝试一些练习。我已经尝试在下面回答这些问题,但是我似乎无法正确解决这些问题,并且感到沮丧(我不应该这样做)。我已经阅读了本书和示例,但尝试时会出错。

  1. 编写一个脚本,将行添加到Myth数据库。该数据库具有三个表:Users,Downloads和Products。

a。在“用户和产品”表中添加两行。

我的答案:

INSERT into users values(‘user 1’,’user 2’);
INSERT into Products values(‘products 1’,‘products 2’)

b。在下载表中添加三行:用户1和产品2一行;一个用于用户2和产品1;一个用于用户2和产品2。使用GET DATE函数将当前日期和时间插入“下载日期”列。

我的答案:

INSERT INTO Downloads VALUES('user 1','Product 2',GETDATE());
INSERT INTO Downloads VALUES('user 2',' Product 1',GETDATE());
INSERT INTO Downloads VALUES('user 2',' Product 2',GETDATE());

非常感谢您。

2 个答案:

答案 0 :(得分:0)

该错误表示要么

  1. 您正在将数据插入到不存在的列中
  2. 它们的顺序不正确。

根据您的评论,您在User表中有一个错误要开始。由于您没有说明哪些行是NULL可空的,或者没有自动生成primaryKey,因此您需要为每个列插入一个值。默认情况下,列将不会为可空,这意味着您必须插入值。您也没有说明这些列的数据类型是什么,所以这些是假设:

INSERT into users (UserId, EmailAddress, FirstName, LastName)
values
(1,'me@domain.com','Joe','Dirt'),   --row 1
(2,'you@domain.com','Jane','Doe');  --row 2

products表也是如此

INSERT into Products (ProductId, ProductName)
values
(1,'products 1'),
(2,'products 2');

问题可能是您插入的顺序。您会注意到,我通过INSERT into SomeTable (col1, col2, ...)在上面明确列出了插入的顺序。您可以在这里更改顺序,只要插入顺序与您列出的内容匹配即可。如果您未在INSERT中明确列出它,则您插入的数据必须与列定义匹配。 Downloads的顺序为(DownloardId,UserId,DownloardDate,FileName和ProductID)。因此,未明确列出插入内容的插入内容将如下所示:

Insert into Downloads  
values
(1,1,getdate(),'my file',1),
(2,1,getdate(),'my file2',2),
(3,2,getdate(),'my file3',1);

注意,您没有列出任何外键,但是您需要对此进行研究。 UserId, ProductID表中的Downloads几乎可以肯定是引用UsersProducts表的外键。

答案 1 :(得分:0)

我能够找出解决方案。在第一个问题上,我不需要添加UserID,因为我将其字段定义为整数主键。这样,它将自动添加下一个值。 关于产品之一,我需要打开和关闭标识符。一旦完成,一切都会完成。 谢谢您的协助。