我正在独自学习SQL,并且一直在尝试一些练习。我已经尝试在下面回答这些问题,但是我似乎无法正确解决这些问题,并且感到沮丧(我不应该这样做)。我已经阅读了本书和示例,但尝试时会出错。
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());
非常感谢您。
答案 0 :(得分:0)
该错误表示要么
根据您的评论,您在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
几乎可以肯定是引用Users
和Products
表的外键。
答案 1 :(得分:0)
我能够找出解决方案。在第一个问题上,我不需要添加UserID,因为我将其字段定义为整数主键。这样,它将自动添加下一个值。 关于产品之一,我需要打开和关闭标识符。一旦完成,一切都会完成。 谢谢您的协助。