Słowo kluczowe table używane jest do tworzenia oraz opcjonalnie do dodawania wierszy danych do tabeli. Tabele mogą być tworzone na kilka sposobów:
przez ręczną specyfikację wszystkich wartości,
przez wzięcie wartości z struktury danych jako listę,
przez wzięcie wartości z wyniku zapytania SQL,
Składnia:
table table_name: format_declaration creating_index column_name, column_name ... column_value, column_value ... column_value, column_value ... ...
format_declaration opisany jest w format section.
Wartości łańcucha znaków nie muszą być umieszczone wewnątrz apostrofów (ale umieszczenie ich może być konieczne w niektórych przypadkach, np. gdy pierwsza wartość łańcucha znaków zawiera tylko cyfry). Jedynymi wyjątkami są deklaracje DATE, TIME oraz TIMESTAMP:
DATE format_string [ language_code [country_code] ] TIME format_string [ language_code [country_code] ] TIMESTAMP format_string [ language_code [country_code] ]
format_string w formacie Java LST jest formatem godziny
Lista możliwych wartości dla language_code opisana jest przez specyfikację ISO 639 (zobacz Załącznik)
Lista możliwych wartości dla country_code opisana jest przez specyfikację ISO 3166 (zobacz Załącznik)
Następująca składnia używana jest do tworzenia indeksu:
[unique] index on col1[(n)] [,col2[(n2)]...]["index_name"]
Każda linia opisuje jeden (pojedynczy lub wielo-kolumnowy) indeks. W kolejności tworzenia liczby indeksów wielo-kolumnowych, instrukcje powyżej powinny być powtarzane wymaganą ilość razy. Jeżeli index_name jest ominięty, nazwa będzie automatycznie wygenerowana w formie: "idx_LINENUMBER"
Liczba column_value wpisu w jednym wierszu musi być taka sama jak liczba wpisucolumn_name.
Przykład 4.11. Format declaration:
table '_table_': format a VARCHAR(5) format b INTEGER format c DATE 'yyyy MM dd' format d TIMESTAMP 'yyyy MMMM dd - HH:mm:ss' "en" "en" format e TIMESTAMP 'yyyy MMM dd - HH:mm:ss' "pl" "pl" a b c d e str 2 '2000 11 4' '2000 JULY 4 - 12:12:12' None 2 None None None '2000 STY 02 - 3:45:5' 'str' -3 '2001 05 13' None '1999 LUT 10 - 16:12:00' sql a: select * from _table_ for c in a.header: # see the chapter Data Access and Data Processing: Using SQL statement print c
Output:
{'columnTypeName': 'VARCHAR', 'precision': None, 'displaySize': 2147483647, 'columnName': 'a', 'columnType': 12, 'isNullable': None, 'scale': None} {'columnTypeName': 'INTEGER', 'precision': None, 'displaySize': 2147483647, 'columnName': 'b', 'columnType': 4, 'isNullable': 0, 'scale': 0} {'columnTypeName': 'DATE', 'precision': None, 'displaySize': 2147483647, 'columnName': 'c', 'columnType': 91, 'isNullable': None, 'scale': None} {'columnTypeName': 'TIMESTAMP', 'precision': None, 'displaySize': 2147483647, 'columnName': 'd', 'columnType': 93, 'isNullable': None, 'scale': None} {'columnTypeName': 'TIMESTAMP', 'precision': None, 'displaySize': 2147483647, 'columnName': 'e', 'columnType': 93, 'isNullable': None, 'scale': None}
Aby szybko sprawdzić zawartość stworzonej tabeli poniższa komenda może być użyteczna:
Składnia:
table table_name <- sequence: format_declaration creating_index column_name , column_name ... ...
Przykład 4.14. Sequences as source of data
ll = [[0, 1, 2], [3, 4, 5]] table 'TAB1' <- ll: a b c lt = [(0, 1, 2),(3, 4, 5)] table 'TAB2' <- lt: a b c tt = ((0, 1, 2),(3, 4, 5)) table 'TAB3' <- tt: a b c tl = ([0, 1, 2],[3, 4, 5]) table 'TAB4' <- tl: a b c tm = ([0, 1, 2],(3, 4, 5)) table 'TAB5' <- tm: a b c trans None <- 'TAB5': print a, b, c
Output
0 1 2 3 4 5
Składnia:
table table_name <- sql_result: format_declaration creating_index column_name, column_name ... ...
Przykład 4.15. SQL-query result as source of data
lista = [['2005-04-12', 12, 'aaa'], ['2007-08-16', None, 'bbb'], [None, 10, None]] table 'TAB1' <- lista: format a DATE 'yyyy-MM-dd' format b INTEGER format c VARCHAR(10) a b c sql res: select * from TAB1 print "SQL-query result:" print res table 'TAB2' <- res: a b c trans None <- 'TAB2': print a, b, c
Output
SQL-query result: a | b | c | +----------+------+------+-- 2005-04-12 | 12 | aaa | 2007-08-16 | None | bbb | None | 10 | None | 2005-04-12 12 aaa 2007-08-16 None bbb None 10 None
Niezależnie od użytej metody do tworzenia tabeli, możliwe jest zdefiniowanie nazw kolumn lub formatu na zewnątrz części ‘tabeli’ (jako listę). Aby użyć takiego definiowania konieczne jest zastosowanie prefiksu dla nazwy listy/list wewnątrz procedury tabeli z użyciem znaku ‘$’:
Przykład 4.16. Defining column names and column formats as a list.
tm = ([0, 1, 2],(3, 4, 5)) col_formats = ["a DOUBLE", "b INTEGER", "c VARCHAR"] col_names = ['a', 'b', 'c'] table 'TAB1' <- tm: format $col_formats $col_names trans None <- 'TAB1': print a, b, c print tableColumns('TAB1')
Output
0.0 1 2 3.0 4 5 ['a', 'b', 'c']
Metody te tworzenia tabel zalecane są tylko dla małej ilości danych. W innych przypadkach dane mogą importowane być przy użyciu:
Komenda csvImport dla danych trzymanych w plikach CSV,
Opcja GUI based CSV import,
Komenda xlsImport dla danych przetrzymywanych w MS Excel,
Komenda GDBase IMPORT TABLE dla danych przetrzymywanych w innych bazach danych,
funkcja do inportu jakiejkolwiek innej używanej bazy danych.