Основные запросы
На изучение основ запросов в EdgeQL не требуется много времени. Он сочетает в себе интуитивность ORM с мощью чистого SQL.
Все приведенные ниже запросы предполагают следующую схему
.
Схема для тестирования запросов
abstract type Person {
required name: str {
constraint exclusive;
};
}
type Villain extending Person {
nemesis: Hero;
}
type Hero extending Person {
secret_identity: str;
number_of_movies: int64;
multi link villains := .<nemesis[is Villain];
}
type Movie {
required title: str;
multi characters: Person;
}
select Hero {
id,
name,
secret_identity
};
select Hero {
id,
name,
secret_identity
}
filter .name = "Tony Stark";
select Hero {
id,
name
}
filter .id = <uuid>'d3b353c6-9d33-11eb-aea4-67d68adf9596';
# no joins! no foreign keys!
select Hero {
id,
name,
villains: {
id, name
} filter .name ilike 'The %'
}
filter .name = "Peter Parker";
# no joins! no foreign keys!
select Hero {
id,
name,
all_caps_name := str_upper(.name),
villain_list := array_agg(.villains.name)
}
filter .name = "Tony Stark";
# no joins! no foreign keys!
select Hero {
id,
name,
all_caps_name := str_upper(.name),
villain_list := array_agg(.villains.name)
}
filter .name = "Tony Stark";