我需要回答以下说明,想知道我是否在正确的道路上回答它。
说明
为以下场景设计一个数据库:您需要在一场敏捷比赛中追踪所有的狗。 他们在每场比赛中都有不同的项目,每只狗都有每个项目的分数。 此外,编写 SQL 查询以返回所有参加比赛的狗、每只狗参加的项目以及他们在该项目中获得的分数。
CREATE DATABASE Competition (
Dogs CHAR(30) NOT NULL,
Score INT NOT NULL,
Event CHAR(30) NOT NULL,
)
SELECT *
FROM Competition
这似乎有点太简单了,但这会满足给出的所有指令吗?
编辑
这个解决方案行得通吗?
CREATE TABLE Dogs (
Name STRING,
EventId INT
)
CREATE TABLE Events (
Name STRING,
Id INT
)
CREATE TABLE Scores (
Score INT,
EventId INT
)
SELECT name
FROM Dogs
INNER JOIN Events On Events.Id = Dogs.EventId
INNER JOIN Scores On Events.Id = Scores.Event.Id
最佳答案
您的实体在语法中混淆了。数据库是逻辑容器,您可以在其中创建表。 例如,如果您使用的是 T-SQL:
CREATE DATABASE DogCompetition;
USE DogCompetition;
CREATE TABLE Dogs
(Dog VARCHAR(30) PRIMARY KEY);
CREATE TABLE Events
(Event VARCHAR(30) PRIMARY KEY);
CREATE TABLE DogEventScores
(Dog VARCHAR(30) REFERENCES Dogs(Dog),
Event VARCHAR(30) REFERENCES Events (Event),
Score INT NOT NULL,
PRIMARY KEY (Dog, Event)
);
INSERT INTO Dogs (Dog) VALUES ('Charlie');
INSERT INTO Events (Event) VALUES ('Running');
INSERT INTO DogEventScores (Dog, Event, Score) VALUES ('Charlie', 'Running', 8);
SELECT * FROM DogEventScores;
HTH
关于SQL - 创建数据库并查询它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55253394/