Стасышина
Татьяна Леонидовна
pk@nstu.ru, +7 (383) 319 59 99 — приёмная комиссия

4.1. Рекомендации

При написании запроса к БД прежде всего необходимо четко понимать, что именно должен возвращать запрос.  Для этого прежде всего следует внимательно прочитать задание  и проанализировать задачу.  Кроме того, необходимо знать, где какие данные хранятся, а значит нужно детально изучить структуру БД.  Так как в нашем случае число строк в таблицах невелико, можно также визуально проанализировать данные.

 Если запрос сложный,  не пытайтесь  сразу его написать, особенно на этапе освоения SQL.  Постарайтесь выделить более простые подзадачи и напишите запросы для них, а затем, комбинируя решения подзадач, попытайтесь решить основную задачу.

В сложных  запросах  довольно часто требуется выполнить соединение таблицы с ней самой. Также  во вложенных коррелированных  подзапросах на разных  уровнях могут использоваться экземпляры  одной  и той же таблицы. Если в запросе таблица упоминается более одного раза, чтобы не запутаться, где какой экземпляр таблицы имеется ввиду,  рекомендуется применять псевдонимы (они же синонимы - динамические имена, присваиваемые на время выполнения запроса  таблицам, полям и подзапросам). 

В  пунктах  4.3-4.5  описан по шагам процесс написания запросов для первых трёх упражнений, приведенных в п. 4.2.
Запросы  написаны для таблиц имеющих следующую структуру:

Таблица изделий  J

n_izd

character(6)
Primary key
номер изделия
name
character(20)
 
название изделия
town
character(20)
 
город изделия

 

Таблица поставщиков S

n_post

character(6)
Primary key
номер поставщика
name
character(20)
 
имя  поставщика
rg
integer
 
ранг поставщика
town
character(20)
 
город поставщика

 

Таблица деталей P

n_det

character(6)
Primary key
номер детали
name
character(20)
 
название детали
color
character(20)
 
цвет детали
ves
Integer
 
вес детали
town
character(20)
 
город детали

 

Таблица поставок SPJ

n_post

character(6)
NOT NULL
номер поставщика
n_det
character(6)
NOT NULL
номер детали
n_izd
character(6)
NOT NULL
номер изделия
kol
integer
 
количество

 

Запросы выполнялись на следующих данных

Таблица изделий  J

n_izd

name
town
J1   
Жесткий диск       
Париж              
J2   
Перфоратор         
Рим                
J3   
Считыватель        
Афины              
J4   
Принтер            
Афины              
J5    
Флоппи-диск        
Лондон             
J6   
Терминал           
Осло               
J7   
Лента              
Лондон           

Таблица поставщиков (S)

n_post

name
rg
town
S1   
Смит               
20
Лондон             
S2   
Джонс              
10
Париж              
S3   
Блейк              
30
Париж              
S4   
Кларк              
20
Лондон              
S5   
Адамс              
30
Афины     

Таблица деталей (P)

n_det

name
color
ves
town
P1   
Гайка              
Красный            
12
Лондон             
P2   
Болт               
Зеленый            
17
Париж              
P3   
Винт               
Голубой             
17
Рим                
P4   
Винт               
Красный            
14
Лондон             
P5   
Кулачок            
Голубой            
12
Париж              
P6   
Блюм               
Красный             
19
Лондон             

Таблица поставок (SPJ)

n_post

n_det
n_izd
kol
S1
P1
J1
200
S1
P1
J4
700
S1
P2
J1
500
S2
P3
J1
400
S2
P3
J2
200
S2
P3
J3
200
S2
P3
J4
500
S2
P3
J5
600
S2
P3
J6
400
S2
P3
J7
800
S2
P5
J2
100
S3
P3
J1
200
S3
P4
J2
500
 S4
P6
J3
300
S4
P6
J7
300
S5
P1
J4
100
S5
P2
J2
200
S5
P2
J4
100
S5
P3
J4
200
S5
P4
J4
800
S5
P5
J4
400
S5
P5
J4
400
S5
P5
J5
500
S5
P5
J7
100
S5
P6
J2
200

 

Наверх