it-place.net > Уроци > PostgreSQL
Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Масиви в PostgreSQL
  1. Масиви в PostgreSQL
  2. Масиви в PostgreSQL - II
SOMNIVM
     
Автор  SOMNIVM (30.08.2006 09:47)  съобщение до автора
Погледнат  4214 пъти  добави към любими
Оценка  добави коментар
Гласове  --  изпрати на приятел
Коментари  (0)  абонирай се за PostgreSQL
    Страница 1 / 2

 



Масиви в PostgreSQL

PostgreSQL дава възможност на потребителя да дефинира полета от таблиците като многомерни масиви, които от своя страна да са от основен или потребителски дефиниран тип. Масивите от съставен (сложен) тип все още не са имплементирани.

Дефинирането на колона като масив става като прибавим по чифт квадратни скоби ( [] ) за всяко измерение на масива след типа на колоната. Така например конструкцията:

CODE
1
2
3
4
5
CREATE TABLE weather (
       
place text,
       
temperatures real [],
       
wind text [][]
)
;

ще създаде таблица с колона place от тип text, колона temperatures, която ще е едномерен масив от числа с плаваща запетая и колона wind – двумерен масив от тип text. Така в тази таблица ще можем да съхраняваме названието на местото, където са извършени замерванията, измерените температури и данни за вятъра – посока и сила. При нужда да се зададе ограничение на дължината на масивите е достатъчно да се добави желаната дължина между квадратните скоби, например:

CODE
1
2
3
CREATE TABLE hora (
       
trite_imena text [3]
)
;

Друг начин е trite_imena text ARRAY[3] , но този синтаксис изисква задължително да се укаже дължина на масива.

Въвеждането на данни в колона-масив става като масивите се ограждат с { }.  Например, за да въведем данни в таблицата за времето трябва да изпълним следната заявка:

CODE
1
2
3
4
5
6
INSERT INTO weather
         VALUES
(
               
'Saint-Etienne',
               
'{2.0, 1.0, 0.5, -0.2, -1.0 }',
               
'{{„NE“,“weak“},{„NE“,“medium“},{„0“,“0“},{„N“,“medium“},{„N“,“strong“}}'
       
);

В резултат на този етап би трябвало да имаме следната таблица:
     place     |    temperature    |                        wind
---------------+-------------------+-----------------------------------------------------
 Saint-Etienne | {2,1,0.5,-0.2,-1} | {{NE,weak},{NE,medium},{0,0},{N,medium},{N,strong}}



Достъпът до масиви в PostgreSQL бази данни наподобява по конструкция този в голяма част от езиците за програмиране. Нека да добавим още един запис в таблицата за времето и да се опитаме да направим заявка в която условието ще е поставено върху елемент от масив:

CODE
1
2
3
4
5
6
INSERT INTO weather
         VALUES
(
               
'Tarare',
               
'{-0.8, -1.5, -1.5, -2.0, -3.0 }',
               
'{{„NE“,“weak“},{„NE“,“strong“},{„0“,“0“},{„N“,“strong“},{„N“,“strong“}}'
       
);

За да видим местата където при първото измерване температурите са били положителни ще изпълним следната заявка:

CODE
1
SELECT * FROM weather WHERE temperature[1]>0;

В PostgreSQL масив от n елемента започва с 1 и завършва с n, затова не се учудвайте, че не извикваме първия елемент с 0, а с 1.
От показания по-горе начин за достъп до елементи от колони-масиви и от факта, че SQL е алгебричен език можем да се досетим, че е възможна заявка, която да ни покаже стойностите на даден елемент от масив за всички редове на таблицата. Например:

SELECT temperature[3] FROM weather;

ще ни даде:

temperature
         0.5
        -1.5

което са температурите при третото засичане за всички редове в таблицата.
Можем също така да използваме отрязъци от масиви и суб-масиви. Забележете, че не е нужно да посочваме дълбочината на масива в заявката ако не искаме точно определен отрязък от суб-масива. В този пример извличаме данните за вятъра в Tarare при измервания от 3 до 5:

CODE
1
SELECT wind[3:5] FROM weather WHERE place='Tarare';

Ако не се интересуваме от силата, а само от посоката на вятъра, можем да формулираме заявката така:

CODE
1
SELECT wind[3:5][1] FROM weather WHERE place='Tarare';



  Следваща страница >> 


Ключови думи: паскал postgresql база данни многомерни масиви едномерен масив


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 За автора: SOMNIVM  
Информатик!
   
 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008