4์ . TCL (TRANSACTION CONTROL LANGUAGE) ํธ๋์ญ์ - ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ผ๋ฆฌ์ ์ฐ์ฐ๋จ์ - ๋ถํ ํ ์ ์๋ ์ต์์ ๋จ์ - ํ๋์ ํธ๋์ญ์ ์๋ ํ๋ ์ด์์ SQL๋ฌธ์ฅ์ด ํฌํจ๋๋ค. - ALL OR NOTHING์ ๊ฐ๋ ํธ๋์ญ์ ์ ํน์ฑ 1. ์์์ฑ - ๋ชจ๋ ์ฑ๊ณต์ ์ผ๋ก ์คํ๋๋์ง ์ ํ ์คํ๋์ง ์์ ์ํ 2. ์ผ๊ด์ฑ - ํธ๋์ญ์ ์คํ ์ ๊ณผ ํ์ ์ผ๊ด์ฑ์ด ์์ด์ผ ํจ 3. ๊ณ ๋ฆฝ์ฑ(๊ฒฉ๋ฆฌ์ฑ) - ํธ๋์ญ์ ์ด ์คํ๋๋ ๋์ค ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ํฅ์ ๋ฐ์ ์๋ชป๋ ๊ฒฐ๊ณผ ๋ง๋ค๋ฉด ์๋จ 4. ์ง์์ฑ - ํธ๋์ญ์ ์ํ์ ๊ฐฑ์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ด์ฉ์ ์๊ตฌ ์ ์ฅ 1. ์ปค๋ฐ(COMMIT) - ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๊ตฌ์ ์ผ๋ก ๋ฐ์ COMMIT; 2. ๋กค๋ฐฑ(ROLLBACK) - ๋ณ๊ฒฝ ์ ๋ฐ์ดํฐ๋ก ๋ณต๊ท ROL..
3์ . DML 1. INSERT 1) INSERT INTO ํ ์ด๋ธ๋ช (COLUMN_LIST) VALUES (VALUE_LIST); ์นผ๋ผ์ ์์๋ ํ ์ด๋ธ์ ์นผ๋ผ ์์์ ๋งค์นํ ํ์๋ ์๊ณ , ์ ์ํ์ง ์์ ์นผ๋ผ์ NULL๊ฐ์ด ์ ๋ ฅ๋จ. ๋จ PK ๊ฑฐ๋ NOT NULL ์ฒ๋ผ NULL๊ฐ์ ํ์ฉํ์ง ์๋๋ค๋ฉด ๋ฐ๋์ ๊ฐ์ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ค. NULL๊ณผ DEFAULT์ค ์ฐ์ ์์๋ NULL์ด๋ค. NOT NULL์ด๋ผ๋ฉด DEFAULT๊ฐ์ด ์๋ค๊ณ ํ๋๋ผ๋ ์๋ฌ๊ฐ ๋จ 2) INSERT INTO ํ ์ด๋ธ๋ช VALUES (VALUE_LIST); ์นผ๋ผ์ ์์๋๋ก ๋น ์ง์์ด ๋ฐ์ดํฐ๊ฐ ์ ๋ ฅ๋์ด์ผ ํ๋ค. ์ ์๋์ง ์์ ๋ฏธ์ง์ ๊ฐ์ ' ' ๋๋ NULL ๋ก ํํํ๋ค. 3) INSERT INTO ํ ์ด๋ธ๋ช (COLUMN_LIST) SELECT (CO..
์์์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ -ํ๋ฅผ ์ด์ฉ 1. ์ง์ ์ฐจ์๊ฐ 0์ธ ๋ชจ๋ ๋ ธ๋๋ฅผ ํ์ ๋ฃ๋๋ค. 2. ํ๊ฐ ๋น ๋๊น์ง ๋ค์์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค. 1) ํ์์ ์์๋ฅผ ๊บผ๋ด ํด๋น ๋ ธ๋์์ ๋๊ฐ๋ ๊ฐ์ ์ ๊ทธ๋ํ์์ ์ ๊ฑฐํ๋ค. 2) ์๋กญ๊ฒ ์ง์ ์ฐจ์๊ฐ 0์ด ๋ ๋ ธ๋๋ฅผ ํ์ ๋ฃ๋๋ค. --> ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ ๋ ธ๋๊ฐ ํ์ ๋ค์ด์จ ์์๊ฐ ์์ ์ ๋ ฌ์ ์ํํ ๊ฒฐ๊ณผ์ ๊ฐ๋ค. (ํน์ง) - ์ฌ์ดํด์ด ์๋ ๋ฐฉํฅ๊ทธ๋ํ(DAG)์ฌ์ผ ํ๋ค. - ํ ๋จ๊ณ์์ ํ์ ์๋กญ๊ฒ ๋ค์ด๊ฐ๋ ์์๊ฐ 2๊ฐ ์ด์์ธ ๊ฒฝ์ฐ๊ฐ ์๋ค๋ฉด ์ฌ๋ฌ๊ฐ์ง ๋ต ์กด์ฌ. - ๋ชจ๋ ์์๋ฅผ ๋ฐฉ๋ฌธํ๊ธฐ ์ ์ ํ๊ฐ ๋น๋ค๋ฉด ์ฌ์ดํด์ด ์กด์ฌํ๋ค๊ณ ํ๋จํ ์ ์์ (์๊ฐ๋ณต์ก๋) - ์ฐจ๋ก๋๋ก ๋ชจ๋ ๋ ธ๋๋ฅผ ํ์ธํ๋ฉฐ ๊ฐ ๋ ธ๋์์ ๋๊ฐ๋ ๊ฐ์ ์ ์ฐจ๋ก๋๋ก ์ ๊ฑฐํ๋ฏ๋ก ์๊ฐ๋ณต์ก๋๋ O(V+E)์ด๋ค. ์์์ ๋ ฌ ์ฝ๋ from ..
2์ . DDL 1. CREATE TABLE ํ ์ด๋ธ ์์ฑ์ ๊ท์น : - ๊ฐ๋ฅํ ๋จ์ํ ๊ถ๊ณ - ๋ค๋ฅธ ํ ์ด๋ธ ์ด๋ฆ๊ณผ ์ค๋ณต X - ํ ํ ์ด๋ธ ๋ด์์๋ ์นผ๋ผ๋ช ์ด ์ค๋ณต ๋ถ๊ฐ - ์นผ๋ผ์ ๋ํด์๋ ์ผ๊ด์ฑ ์๊ฒ ์ฌ์ฉ - ์นผ๋ผ ๋ค์ ๋ฐ์ดํฐ ์ ํ์ ๊ผญ ์ง์ ๋์ด์ผ ํจ - ํ ์ด๋ธ๋ช ๊ณผ ์นผ๋ผ๋ช ์ ๋ฐ๋์ ๋ฌธ์๋ก ์์ํด์ผ ํ๊ณ , ๋ฒค๋๋ณ๋ก ๊ธธ์ด์ ๋ํ ํ๊ณ๊ฐ ์๋ค. - ๋ฒค๋์์ ์ฌ์ ์ ์ ์ํ ์์ฝ์ด๋ ์ธ ์ ์๋ค. - A-Z, a-z, 0-9, _ , $, # ๋ฌธ์๋ง ํ์ฉ CREATE TABLE ํ ์ด๋ธ์ด๋ฆ ( ์นผ๋ผ๋ช 1 ํ์ , default ํ์, ์นผ๋ผ๋ช 2 ํ์ , default ํ์, ์นผ๋ผ๋ช 3 ํ์ , default ํ์ ); โป ์ฃผ์์ฌํญ - ํ ์ด๋ธ ์์ฑ ์ ๋/์๋ฌธ์ ๊ตฌ๋ถ์ ํ์ง ์๋๋ค. - DATETIME ๋ฐ์ดํฐ ์ ํ์ ๋ณ๋๋ก ํฌ๊ธฐ..
1์ . ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค (Relation DB) DB์ ์ข ๋ฅ - ๊ณ์ธตํ DB: ํธ๋ฆฌ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ. - ๋คํธ์ํฌํ DB: owner์ member ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ. - ๊ด๊ณํ DB: ๋ฆด๋ ์ด์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ. ๋ฆด๋ ์ด์ ์ ์ฌ์ฉํด ์งํฉ,๊ด๊ณ ์ฐ์ฐ DBMS -๊ณ์ธตํ/๋คํธ์ํฌํ/๊ด๊ณํ DB๋ฑ์ ๊ด๋ฆฌํ๊ธฐ ์ํ SW -Oracle, MySQL,Sybase ..๋ฑ SQL(Structured Query Language) - ๊ด๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ํฌ๊ด์ ์ธ ํ์ค์ธ์ด - ๋ฐ์ดํฐ ์ ์/์กฐ์/์ ์ด๋ฅผ ์ํด ์ฌ์ฉํ๋ ์ ์ฐจํ ์ธ์ด - ANSI/ISO ํ์ค์ ์ค์ํ๋ฏ๋ก DBMS๊ฐ ๋ณ๊ฒฝ๋์ด๋ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๋ค. SQL ์คํ ์์ - ๊ฐ๋ฐ์๊ฐ ์์ฑํ SQL๋ฌธ์ 3๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ ์ค..
๋๋ ๋ด๋ถ mysql์ ์ด์ฉํ์๋ค. * ํฐ๋ฏธ๋์์ mysql ์คํ ๋ฐฉ๋ฒ 1. mysql.server start 2. mysql -uroot -p 3. ๋น๋ฐ๋ฒํธ ์ ๋ ฅ management ๋ฐ์ดํฐ๋ฒ ์ด์ค์ customerํ ์ด๋ธ์ ์์ฑ ํ ์ฌ์ฉ์๋ค์ ์์๋ก ์ฝ์ ํด์ฃผ์๋ค. ์ฐ์ npm install mysql์ ํฐ๋ฏธ๋์ ์ ๋ ฅํ์ฌ ํ์ฌ ํ๋ก์ ํธ ํด๋์ mysql ํจํค์ง๋ฅผ ์ค์นํ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ฒ์ database.json ํ์ผ์ ๋ง๋ค์ด { "host":"0.0.0.0", "user":"user", "password":"user ๋น๋ฐ๋ฒํธ", "port":"3306", "database":"management" } ์์ ๊ฐ์ด ์์ฑํด์ค๋ค. ๊ทธ๋ฆฌ๊ณ server.js ์์ database.jsonํ์ผ์ ์ฝ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ..
node.js express ๋ฅผ ์ค์นํ์ฌ REST API๋ฅผ ๊ตฌ์ถํด๋ณด์๋ค. REST API๋ ์ต๊ทผ ์๋น์์ ์น ์๋ฒ ํ๋ ์์ํฌ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ๋ ๊ธฐ๋ฅ์ผ๋ก ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์น ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ ํจ๊ณผ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ํด์ค๋ค. ์ ๋ฒ ๊ฐ์์ ์ด์ด์ ์ ์ฒด ๊ณ ๊ฐ ๋ชฉ๋ก์ ๋ถ๋ฌ์ค๋ API๋ฅผ ๊ตฌํํด๋ณด์๋ค. ํฐ๋ฏธ๋์ ๊ฐ๊ฐ npm run server ์ npm run client๋ฅผ ์ ๋ ฅํ๋ฉด ๊ฐ๊ฐ์ ํฌํธ๊ฐ ์ด๋ฆฌ๋๋ก ์๋ฒ์ ๋ง๋ package.json์ scripts์ ์์ฑํด๋์๋ค. ์๋ฒ ํด๋ผ์ด์ธํธ 5000๋ฒ ํฌํธ 3000๋ฒ ํฌํธ package.json package.json server.js app.js ํด๋ผ์ด์ธํธ์ package.json ์ "proxy": "http://localhost:..
react.js ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ์ฌ์ฌ์ฉ์ฑ์ด ๋ฐ์ด๋๋ค๋ ํน์ง์ด ์๋ค. ์๋ก๊ณ ์นจ์ ํ์ง ์์๋ ์์ ๋ ๋ถ๋ถ์ด ๋ฐ๋ก๋ฐ๋ก ์ ๋ฐ์ดํธ๊ฐ ๋๋ค. ์ค๋์ props(property)๋ฅผ ํตํด ์ปดํฌ๋ํธ์๊ฒ ๊ฐ์ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ๊ณต๋ถํ๋ค. ์ฐ์ App.js์ ์์ ๊ฐ์ด ์ ์ ๋ค์ ์ ๋ณด๊ฐ ๋ด๊ธด ๋ฐฐ์ด์ ๋ง๋ค์ด์ค๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ๊ฐ์ด ์ปดํฌ๋ํธ ์์ customers ๋ฐฐ์ด์ ํ๋์ฉ ํ์ํ๊ธฐ ์ํด map ํจ์๋ฅผ ์ด์ฉํ์ฌ ๋ชจ๋ ๋ฐฐ์ด์ ๋๋ค. ์ด๋, Customer๋ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ Customer.js ์ ํด๋์ค์ด๋ค. ์ฌ๊ธฐ์ ๊ตฌ์ฒด์ ์ธ UI๋ฅผ ๋ง๋ค์๋ค. Customer๋ CustomerProfile ๊ณผ CustomerInfo๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ์ฌ๊ธฐ์ props๋ฅผ ํตํด ์ปดํฌ๋ํธ๋ก ๊ฐ์ ๋ฐ์์๋ค. - ์ฒ์ ํด๋ณด๋ ๋ฆฌ์กํธ ๊ณต๋ถ์๋..
์ต์ ์คํจ๋ ํธ๋ฆฌ๋ ์คํจ๋ ํธ๋ฆฌ์ค ๋ชจ๋ ๊ฐ์ค์น์ ํฉ์ด ์ต์์ธ ํธ๋ฆฌ์ด๋ค. (ํ๋ฆผ, ํฌ๋ฃจ์ค์นผ) 1. ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ - ๊ฐ์ค์น๊ฐ ์ต์์ธ ๊ฐ์ ์ ํ๋์ฉ ์ ํํด ๋๊ฐ๋ ๊ฐ์ ๊ธฐ๋ฐ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ฌ์ดํด์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ์ ๋ํด์๋ ์์ธ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ค. def find_parent(a): # ๋ถ๋ชจ์ฐพ๊ธฐ if parent[a] == a: return a else: parent[a] = find_parent(parent[a]) return parent[a] def merge(a, b): x = find_parent(a) y = find_parent(b) if x != y: parent[x] = y return True return False v, e = map(int, input().split()) parent = d..
1. BFS def depth(tree,root): queue = deque() queue.append((root,1)) visit = [] count = 1 while queue: #while๋ฌธ์ ๋๋ฆฌ๋ ๋งํผ ๊น์ด ์ฆ๊ฐ v, count= queue.popleft() visit.append(v) for node in tree[v]: if node != '.' and node not in visit: queue.append((node,count+1)) return count ๊ฐ ๋ ธ๋์์์ count๋ฅผ ๊ณ์ ๋๋ ค์ฃผ๊ณ while๋ฌธ์ ๋น ์ ธ๋์์ ๋ ๋ง์ง๋ง count๋ฅผ ๋ฆฌํดํ๋ฉด ์ต๋ ๊น์ด๋ฅผ ๊ตฌํ ์ ์๋ค. 2. ์ฌ๊ท def depth(tree,root): if root =='.': return 0 left = d..
๋ง๊ทธ๋๋ก ๋ฏธ๋กํ์ ๋ฌธ์ ์๋ค. 1,1์์ n,m๊น์ง ์ด๋ํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ์ผ๋ฉด ๋๋ค. ์ต์์ ์นธ ์๋ฅผ ์ถ๋ ฅํด์ผ ํ๊ธฐ ๋๋ฌธ์ BFS๋ฅผ ์ฌ์ฉํ์๋ค. from collections import deque def bfs(v): queue.append((0, 0)) dx = [0, 0, 1, -1] dy = [1, -1, 0, 0] while queue: x, y = queue.popleft() for i in range(4): # ์์๋ ธ๋ ํ์ ์ถ๊ฐํ๊ธฐ ์ํจ nx, ny = x + dx[i], y + dy[i] if 0