Ólafur Sverrir Kjartansson, [email protected]
- Eða bara postgres
- Open source gagnagrunnur sem er mjög útbreiddur og mikið notaður
- Object-relational database management system (ORDBMS), styður classes, erfðir beint
- ACID og útfærir mest allan SQL staðalinn
- Styður margar gerðir af týpum
- Fylki, JSON, geometrískar o.fl.
- Einfaldari týpur:
- Tölulegar (integer, serial)
- Stafi (char, varchar, text)
- Dagsetningar (timestamp with time zone)
- Yfirlit yfir týpur
- Sækjum og setjum upp postgres frá postgresql.org
- Á Mac OS er gott að nota homebrew til að setja upp
brew install postgres
brew services start postgresql
til að kveikja á þjónustu
psql
er CLI aðgangur að Postgres- Getum gert allar aðgerðir, en getur tekið tíma að læra á og venjast
- PostgreSQL on the Command Line
- pgAdmin er grafískt viðmót ofaná postgres
- Sækjum sérstaklega fyrir Windows og Mac fylgir með flestum útgáfum af Linux
- Getum útbúið gagnagrunna, töflur og allskonar
Búa til töflu (create table)
CREATE TABLE texts(
id serial primary key,
name varchar(64) not null,
text text,
date timestamp with time zone not null default current_timestamp
);
Bæta við töflu (insert)
INSERT INTO texts
(name, text)
VALUES
('Jón Jónsson', 'Halló heimur!');
Velja úr töflu (select)
SELECT * FROM texts;
id | name | text | date
----+-------------+---------------+-------------------------------
1 | Jón Jónsson | Halló heimur! | 2018-01-25 12:45:06.41663+00
(1 rows)
Uppfæra töflu (update)
UPDATE texts SET NAME = 'Óli' WHERE id = 1;
UPDATE 1
Eyða úr töflu (delete)
DELETE FROM texts WHERE id = 1;
DELETE 1
- Þetta samansafn af aðgerðum kallast oftast CRUD
- Create (þá INSERT)
- Read
- Update
- Delete
- node-postgres er hrein JavaScript útfærsla af PostgresSQL client
npm install --save pg
- Callback og promise viðmót
- Styður prepared statements sem við notum alltaf til að minnka líkur á SQL injection árásum
Ef við höfum keyrandi gagnagrunn á vél getum við tengst á nokkra vegu
- Útbúa nýjan
Client
og gefa upplýsingar um tengingu - Tengjast með connection streng, URI sem skilgreinir upplýsingar um hvernig tengjast skuli
- Hentugt þar sem allar upplýsingar eru í einum streng
- Útbúa connection pool og tengjast gegnum hann
- Æskilegt fyrir vefforrit sem opna margar gagnagrunnstengingar
const { Client } = require('pg')
const client = new Client({
user: '',
host: 'localhost',
database: 'examples',
password: '',
})
client.connect();
client.query();
const { Client } = require('pg')
const connectionString = 'postgres://:@localhost/examples';
const client = new Client({
connectionString,
})
client.connect();
client.query();
const { Pool, Client } = require('pg')
const connectionString = 'postgres://:@localhost/examples';
const pool = new Pool({
connectionString,
});
pool.query();
client.query('SELECT * FROM texts', (err, res) => {
if (err) {
console.error(err);
return;
}
console.log(res.rows);
client.end();
});
client.query(query, values)
.then(res => {
console.log(res.rows);
client.end();
})
.catch(e => {
console.error(err);
client.end();
});
async function select() {
try {
const res = await client.query('SELECT * FROM texts');
console.log(res.rows);
} catch (e) {
console.error('Error selecting', e);
}
await client.end();
}
select().catch(e => console.error(e));
const query = 'INSERT INTO texts(name, text) VALUES($1, $2) RETURNING *';
const values = ['Foo', 'Foo bar'];
client.query(query, values, (err, res) => {
if (err) {
console.error(err);
return;
}
console.log(res.rows);
client.end();
});
- node-postgres documentation
- PostgreSQL Exercises – SQL æfingar í postgres