Baza
DVD Rental Service
source
Arrays
'{27000,27000}'
ARRAY [ 27000 , 27000 ] CREATE TABLE sal_emp (
name text ,
pay_by_quarter integer [],
schedule text [][]
); CREATE TABLE tictactoe (
squares integer [ 3 ][ 3 ]
); INSERT INTO sal_emp
VALUES ( 'Bill' ,
ARRAY [ 10000 , 10000 , 10000 , 10000 ],
ARRAY [[ 'meeting' , 'lunch' ], [ 'training' , 'presentation' ]]);
INSERT INTO sal_emp
VALUES ( 'Carol' ,
ARRAY [ 20000 , 25000 , 25000 , 25000 ],
ARRAY [[ 'breakfast' , 'consulting' ], [ 'meeting' , 'lunch' ]]); SELECT schedule [ 1 : 2 ][ 1 : 1 ] FROM sal_emp WHERE name = 'Bill' ;
SELECT schedule [ 1 : 2 ][ 2 ] FROM sal_emp WHERE name = 'Bill' ;
SELECT schedule [: 2 ][ 2 :] FROM sal_emp WHERE name = 'Bill' ;
SELECT schedule [:][ 1 : 1 ] FROM sal_emp WHERE name = 'Bill' ; SELECT
name ,
pay_by_quarter
FROM
sal_emp
WHERE
10000 = ANY ( pay_by_quarter );
JSONB
CREATE TABLE config (
ID serial NOT NULL PRIMARY KEY ,
value jsonb NOT NULL
); INSERT INTO config ( value )
VALUES
(
'{ "api-key": "AASzzQ!@#)(_*44*_)", "active": true, "roles": ["admin", "sudo"]}'
);
INSERT INTO config ( value )
VALUES
(
'{ "api-key": " $%^&*( --w*", "active": "off", "roles": [], "opts": { "on": true}}'
); SELECT
value -> 'api-key' AS "api-key"
FROM
config SELECT
value -> 'opts' ->> 'on' AS "opts-on"
FROM
config SELECT *
FROM config
WHERE value -> 'opts' ->> 'on' IS TRUE SELECT *
FROM config
WHERE ( value -> 'opts' ->> 'on' ):: bool IS TRUE
SELECT *
FROM config
WHERE CAST ( value -> 'opts' ->> 'on' AS BOOLEAN ) IS TRUE
Ćwiczenia
Uruchomic przykłady.
Utworzyć nową tabele new_customer (na podstawie tabeli customer) zastąpić
pole address_id polem address (typ: jsonb), utworzyć nowych customer-ów
w tabeli new_customer. Przepisać dane z tabeli customer do new_customer tak aby zawiera adres w polu address.
hints
CREATE TABLE [ Table to copy To ]
AS [ Table to copy From ]
WITH NO DATA ; INSERT INTO [ Table to copy To ]
SELECT [ Columns to Copy ]
FROM [ Table to copy From ]
WHERE [ Optional Condition ]; INSERT INTO new_customer ( SELECT customer_id , .... FROM customer WHERE ...)