๐ SQL ์์ํ๊ธฐ
โ๏ธ PostgreSQL ์ค์น
๋จผ์ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์์คํ ์ํํธ์จ์ด ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
sudo apt update
๊ธฐ๋ณธ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ต์ ๋ฒ์ ์ PostgreSQL์ ์ค์นํฉ๋๋ค.
sudo apt install postgresql
์ค์น ํ PostgreSQL ์๋น์ค๊ฐ ํ์ฑ ์ํ์ธ์ง, ์คํ ์ค์ธ์ง, ํ์ฑํ๋์ด ์๋์ง ๋๋ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์ ์๋ฝํ ์ค๋น๊ฐ ๋์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
sudo systemctl is-active postgresql
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql
sudo pg_isready
โ๏ธ pgAdmin ์ค์น
pgAdmin์ PostgreSQL์ฉ ๊ด๋ฆฌ ๋๊ตฌ์ด์ง๋ง Ubuntu ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก pgAdmin4 APT ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ค์นํ๊ณ ๊ณต๊ฐ ํค๋ฅผ ์ถ๊ฐํ๊ณ ๋ฆฌํฌ์งํ ๋ฆฌ ๊ตฌ์ฑ ํ์ผ์ ์์ฑํด์ผ ํฉ๋๋ค.
curl https://www.pgadmin.org/static/packages_pgadmin_org.pub
sudo apt-key add
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
๊ทธ๋ฐ ๋ค์ ์ค์น
sudo apt install pgadmin4
โ๏ธ NodeJ ๋ฐ node-postgres ์ค์น
node-postgres
๋ PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธํฐํ์ด์คํ๊ธฐ ์ํ node.js ๋ชจ๋ ๋ชจ์์
๋๋ค.sudo apt install nodejs
sudo apt install npm
npm install pg
๐ PostgreSQL๊ณผ NodeJ ์ฐ๊ฒฐํ๊ธฐ
const { Pool } = require('pg');
const pool = new Pool({
user: 'lessa',
password: '88eb9394',
host: '/var/run/postgresql',
port: 5432,
database: 'service_management',
});
pool.on('error', (err, client) => {
console.error('Unexpected error on idle client', err)
process.exit(-1)
})
const startDatabase = (req, res, query, values) => {
pool.connect()
.then(client => {
return client.query(query, values)
.then(result => {
client.release();
res.status(200).send(result.rows)
})
.catch(err => {
client.release();
res.sendStatus(500);
})
})
}
๐ป pg
๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ ์กฐ์ ์์
const getCustomer = (req, res) => {
const customer = [req.params.name];
let query = 'SELECT * FROM customer WHERE deleted_date IS NULL'
if (customer) {
query += " AND name LIKE '%'||$1||'%'"
}
startDatabase(req, res, query, customer)
}
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ SQL ์์ํ๊ธฐ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค
https://dev.to/luanalessa/getting-started-with-sql-2nkj
ํ
์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
const { Pool } = require('pg');
const pool = new Pool({
user: 'lessa',
password: '88eb9394',
host: '/var/run/postgresql',
port: 5432,
database: 'service_management',
});
pool.on('error', (err, client) => {
console.error('Unexpected error on idle client', err)
process.exit(-1)
})
const startDatabase = (req, res, query, values) => {
pool.connect()
.then(client => {
return client.query(query, values)
.then(result => {
client.release();
res.status(200).send(result.rows)
})
.catch(err => {
client.release();
res.sendStatus(500);
})
})
}
const getCustomer = (req, res) => {
const customer = [req.params.name];
let query = 'SELECT * FROM customer WHERE deleted_date IS NULL'
if (customer) {
query += " AND name LIKE '%'||$1||'%'"
}
startDatabase(req, res, query, customer)
}
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ SQL ์์ํ๊ธฐ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/luanalessa/getting-started-with-sql-2nkjํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค