"20. λ°μ΄ν„°λ² μ΄μŠ€ 관리"| 초보자λ₯Ό μœ„ν•œ κ°€μ΄λ“œ | λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œ, κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€, SQL

20. λ°μ΄ν„°λ² μ΄μŠ€ 관리 초보자λ₯Ό μœ„ν•œ κ°€μ΄λ“œ  데이터
20. λ°μ΄ν„°λ² μ΄μŠ€ 관리 초보자λ₯Ό μœ„ν•œ κ°€μ΄λ“œ 데이터


λ°μ΄ν„°λ² μ΄μŠ€ κ΄€λ¦¬λž€ 데이터λ₯Ό 효율적이고 효과적으둜 μ €μž₯, 관리, κ²€μƒ‰ν•˜λŠ” 것을 λ§ν•©λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€μ˜ λΉ„μ „λ¬Έκ°€λ₯Ό μœ„ν•œ 이 μ„€λͺ…μ„œμ—μ„œλŠ” λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œ, κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€, SQL의 κΈ°λ³Έ 사항을 μ†Œκ°œν•©λ‹ˆλ‹€. 이 글을 톡해 λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ„Έκ³„λ‘œ μ‰½κ²Œ μ§„μž…ν•˜κ³  μ€‘μš”ν•œ κ°œλ…μ„ 이해할 수 있게 λ˜μ‹€ κ²λ‹ˆλ‹€.



"
20, λ°μ΄ν„°λ² μ΄μŠ€ 관리"| 초보자λ₯Ό μœ„ν•œ μ„€λͺ…μ„œ | λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œ, κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€, SQL

🎈 μ•„λž˜μ˜ λͺ©μ°¨μ—μ„œ 각 μ„Ήμ…˜μ— λŒ€ν•œ λΉ λ₯Έ 링크λ₯Ό 찾을 수 μžˆμ–΄μš”
κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ 핡심 κ°œλ… μ—”ν„°ν‹°, 속성, ν‚€
SQL ν•„μˆ˜ 사항 SELECT, INSERT, UPDATE, DELETE λͺ…λ Ή
λ°μ΄ν„°λ² μ΄μŠ€ λ””μžμΈ κΈ°λ³Έ μ •κ·œν™”μ™€ 관계 λͺ¨λΈλ§
λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ 선택 MySQL, PostgreSQL, SQLite
μ‹€μŠ΅μ  μ„€λͺ…μ„œ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ ν”„λ‘œμ νŠΈ 생성




κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ 핡심 κ°œλ… μ—”ν„°ν‹°, 속성, ν‚€


κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λŠ” ν˜„μ‹€ μ„Έκ³„μ˜ λ‚΄μš©μ„ μ²΄κ³„μ μœΌλ‘œ μ €μž₯ν•˜κ³  μ‘°μ§ν•˜λŠ” κ°€μž₯ 일반적인 λ°μ΄ν„°λ² μ΄μŠ€ μœ ν˜•μž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ λ°μ΄ν„°λ² μ΄μŠ€λŠ” μ—”ν„°ν‹°, 속성, 킀와 같은 λͺ‡ 가지 핡심 κ°œλ…μ„ 기반으둜 ν•©λ‹ˆλ‹€.

μ—”ν„°ν‹°λŠ” μ‹€μ œ κ°œμ²΄λ‚˜ κ°œλ…μ„ λ‚˜νƒ€λ‚΄λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ˜ κΈ°λ³Έ ꡬ성 μš”μ†Œμž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ œν’ˆ μΉ΄νƒˆλ‘œκ·Έ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œλŠ” μ œν’ˆμ΄ μ—”ν„°ν‹°κ°€ λ©λ‹ˆλ‹€. 각 μ—”ν„°ν‹°λŠ” 고유 μ‹λ³„μž(ID)에 μ˜ν•΄ κ΅¬λ³„λ©λ‹ˆλ‹€.

속성은 μ—”ν„°ν‹°μ˜ νŠΉμ„±μ΄λ‚˜ νŠΉμ§•μ„ μ„€λͺ…ν•©λ‹ˆλ‹€. μ œν’ˆ μΉ΄νƒˆλ‘œκ·Έ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ "μ œν’ˆ 이름", "가격", "μˆ˜λŸ‰"은 μ „λΆ€ μ œν’ˆ μ—”ν„°ν‹°μ˜ μ†μ„±μž…λ‹ˆλ‹€. 각 속성은 데이터 μœ ν˜•(예 λ¬Έμžμ—΄, 숫자, λ‚ μ§œ)을 가지며 ν•œ λ²ˆμ— 단일 κ°’λ§Œ 포함할 수 μžˆμŠ΅λ‹ˆλ‹€.

λ°μ΄ν„°λ² μ΄μŠ€ ν…Œμ΄λΈ”μ˜ 각 행은 μ—”ν„°ν‹°λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. ν‚€λŠ” ν…Œμ΄λΈ”μ˜ 각 행을 κ³ μœ ν•˜κ²Œ μ‹λ³„ν•˜λŠ” 속성 λ˜λŠ” 속성 μ§‘ν•©μž…λ‹ˆλ‹€. κΈ°λ³Έ ν‚€λŠ” ν…Œμ΄λΈ”μ—μ„œ 각 엔터티에 λŒ€ν•΄ κ³ μœ ν•œ 값을 가진 νŠΉλ³„ν•œ μœ ν˜•μ˜ ν‚€μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ œν’ˆ μΉ΄νƒˆλ‘œκ·Έ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ œν’ˆ IDλŠ” μ œν’ˆ ν…Œμ΄λΈ”μ˜ κΈ°λ³Έ ν‚€κ°€ λ©λ‹ˆλ‹€.


SQL ν•„μˆ˜ 사항 SELECT, INSERT, UPDATE, DELETE λͺ…λ Ή


SQLite, MySQL, PostgreSQLκ³Ό 같이 λ§Žμ€ λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œμ€ SQL(κ΅¬μ‘°ν™”λœ 쿼리 μ–Έμ–΄)μ΄λΌλŠ” ν‘œμ€€ν™”λœ μ–Έμ–΄λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. SQL을 μ‚¬μš©ν•˜λ©΄ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 데이터λ₯Ό μ‘°μž‘ν•˜κ³  μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œλŠ” μ΄ˆλ³΄μžλ“€μ„ μœ„ν•œ ν•„μˆ˜μ μΈ SQL λͺ…령인 SELECT, INSERT, UPDATE, DELETEλ₯Ό μ†Œκ°œν•©λ‹ˆλ‹€.
λͺ…λ Ή λͺ©μ  ꡬ문
SELECT λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 데이터 쑰회 `SELECT * FROM table_name;`
INSERT λ°μ΄ν„°λ² μ΄μŠ€μ— μƒˆλ‘œμš΄ 데이터 μ‚½μž… `INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);`
UPDATE λ°μ΄ν„°λ² μ΄μŠ€μ˜ 데이터 μ—…λ°μ΄νŠΈ `UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;`
DELETE λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 데이터 μ‚­μ œ `DELETE FROM table_name WHERE condition;`



λ°μ΄ν„°λ² μ΄μŠ€ λ””μžμΈ κΈ°λ³Έ μ •κ·œν™”μ™€ 관계 λͺ¨λΈλ§


λ°μ΄ν„°λ² μ΄μŠ€ μ„€κ³„μ˜ κΈ°λ³Έ 원칙 쀑 ν•˜λ‚˜λŠ” μ •κ·œν™”μž…λ‹ˆλ‹€. μ •κ·œν™”λž€ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 일관성, μ •ν•©μ„±, νš¨μœ¨μ„±μ΄ μ΅œμ ν™”λœ νŠΉμ • κ·œμΉ™μ— λΆ€ν•©ν•˜λ„λ‘ κ΅¬μ„±ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μž…λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ 데이터 쀑볡이 제거되고, 데이터 변경에 λŒ€ν•œ λΆ€μž‘μš©μ΄ μ΅œμ†Œν™”λ˜λ©°, 데이터 무결성이 보μž₯λ©λ‹ˆλ‹€.

μ •κ·œν™”μ˜ μ€‘μš”μ„±

  • λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œμ˜ νš¨μœ¨μ„± ν–₯상 쀑볡 제거λ₯Ό 톡해 데이터 검색 및 μ—…λ°μ΄νŠΈ μ„±λŠ₯이 ν–₯μƒλ©λ‹ˆλ‹€.
  • 데이터 무결성 보쑴 각 데이터 ν•­λͺ©μ΄ ν•œ 번만 μ €μž₯λ˜λ―€λ‘œ λ°μ΄ν„°λ² μ΄μŠ€ μ—…λ°μ΄νŠΈ μ‹œ λˆ„λ½μ΄λ‚˜ 잘λͺ»λœ μˆ˜μ •μ΄ λ°œμƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • 데이터 λ³€κ²½ 및 ν™•μž₯ λŒ€λΉ„ μ •κ·œν™”λœ λ°μ΄ν„°λ² μ΄μŠ€λŠ” λ³€κ²½ 사항에 μœ μ—°ν•˜κ²Œ λŒ€μ‘ν•˜κ³  데이터 ν™•μž₯을 μ‰½κ²Œ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

관계 λͺ¨λΈλ§

관계 λͺ¨λΈλ§μ€ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό ν…Œμ΄λΈ”(관계) μ»¬λ ‰μ…˜μœΌλ‘œ ν‘œν˜„ν•˜λŠ” 데이터 λͺ¨λΈλ§ κΈ°λ²•μž…λ‹ˆλ‹€. 각 ν…Œμ΄λΈ”μ€ λ°μ΄ν„°λ² μ΄μŠ€μ— μžˆλŠ” νŠΉμ • 개체 λ˜λŠ” κ°œλ…μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 고객 ν…Œμ΄λΈ”μ€ 고객 이름, μ£Όμ†Œ, μ—°λ½μ²˜ 정보와 같은 각 고객에 λŒ€ν•œ 데이터λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.

관계 λͺ¨λΈλ§μ˜ μž₯점

  • 데이터 ν‘œν˜„μ˜ λ‹¨μˆœμ„± 관계 λͺ¨λΈμ€ 데이터λ₯Ό 논리적이고 κ΅¬μ‘°ν™”λœ λ°©μ‹μœΌλ‘œ ν‘œν˜„ν•˜μ—¬ 이해와 μ‘°μž‘μ„ μ‰½κ²Œ λ§Œλ“­λ‹ˆλ‹€.
  • λ‹€μ–‘ν•œ λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œ κ°„μ˜ ν˜Έν™˜μ„± 관계 λͺ¨λΈμ€ λŒ€λΆ€λΆ„μ˜ λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œμ—μ„œ μ‚¬μš©λ˜λ―€λ‘œ 데이터 이식성을 κ°„μ†Œν™”ν•©λ‹ˆλ‹€.
  • λ³΅μž‘ν•œ 쿼리λ₯Ό 지원 κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λŠ” λ³΅μž‘ν•œ 데이터 쑰회 및 뢄석을 μœ„ν•œ ν‘œμ€€ν™”λœ 쿼리 언어인 SQL을 μ§€μ›ν•©λ‹ˆλ‹€.



λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ 선택 MySQL, PostgreSQL, SQLite


λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ(DBMS)을 μ„ νƒν•˜λŠ” 것은 μ€‘μš”ν•œ 결정이며, λ‹€μ–‘ν•œ μš”μΈμ— 따라 λ‹¬λΌμ§‘λ‹ˆλ‹€. 초보자λ₯Ό μœ„ν•΄ μΆ”μ²œν•˜λŠ” DBMS 3가지λ₯Ό μ œμ‹œν•©λ‹ˆλ‹€.

  1. MySQL 무료이고 μ˜€ν”ˆ μ†ŒμŠ€, κ°€μž₯ 많이 μ‚¬μš©λ˜λŠ” κ΄€κ³„ν˜• DBMS둜, μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό μ†Œκ·œλͺ¨ ν”„λ‘œμ νŠΈμ— μ ν•©ν•©λ‹ˆλ‹€.
  2. PostgreSQL 무료이고 μ˜€ν”ˆ μ†ŒμŠ€, κ°•λ ₯ν•œ κΈ°λŠ₯ 집합을 μ œκ³΅ν•˜λŠ” κ΄€κ³„ν˜• DBMS둜, λ³΅μž‘ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό λŒ€λŸ‰μ˜ λ°μ΄ν„°μš©μœΌλ‘œ μ ν•©ν•©λ‹ˆλ‹€.
  3. SQLite μž„λ² λ””λ“œ DBMS둜, 파일 기반이며 μ„€μΉ˜κ°€ ν•„μš”ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ κ°œλ³„ ν”„λ‘œμ νŠΈ λ˜λŠ” λͺ¨λ°”일 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ ν•©ν•©λ‹ˆλ‹€.



μ‹€μŠ΅μ  μ„€λͺ…μ„œ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ ν”„λ‘œμ νŠΈ 생성



Q λ°μ΄ν„°λ² μ΄μŠ€ ν”„λ‘œμ νŠΈλ₯Ό λ§Œλ“€λ €λ©΄ 무엇뢀터 μ‹œμž‘ν•΄μ•Ό ν•˜λ‚˜μš”?


A
λ¨Όμ € λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ(DBMS)을 μ„ νƒν•˜λŠ” 것뢀터 μ‹œμž‘ν•˜μ„Έμš”. MySQL, PostgreSQL, Oracle λ“±μ˜ μ˜΅μ…˜μ΄ μžˆμŠ΅λ‹ˆλ‹€. 각 DBMSμ—λŠ” κ³ μœ ν•œ μž₯점이 μžˆμœΌλ―€λ‘œ μš”κ΅¬ 사항에 λ§žλŠ” 것을 μ„ νƒν•©λ‹ˆλ‹€.


Q μƒˆ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ–΄λ–»κ²Œ λ§Œλ“€ 수 μžˆλ‚˜μš”?


A
DBMS μ½˜μ†”μ„ 톡해 μƒˆ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. λŒ€λΆ€λΆ„μ˜ DBMSμ—λŠ” λ°μ΄ν„°λ² μ΄μŠ€ 생성을 μœ„ν•œ λͺ…령이 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, MySQLμ—μ„œλŠ” λ‹€μŒκ³Ό 같은 λͺ…령을 μ‚¬μš©ν•©λ‹ˆλ‹€.

CREATE DATABASE my_database;


Q ν…Œμ΄λΈ”μ„ λ§Œλ“œλŠ” 방법은 λ¬΄μ—‡μΈκ°€μš”?


A
λ°μ΄ν„°λ² μ΄μŠ€μ— CREATE TABLE 문을 μ‚¬μš©ν•˜μ—¬ ν…Œμ΄λΈ”μ„ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. 각 ν…Œμ΄λΈ”μ€ κ³ μœ ν•œ 이름, μ—΄ 및 데이터 μœ ν˜•μ„ κ°€μ Έμ•Ό ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ‹€μŒκ³Ό 같이 μ£Όλ¬Έ ν…Œμ΄λΈ”μ„ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

CREATE TABLE orders ( order_id INT NOT NULL AUTO_INCREMENT, customer_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, PRIMARY KEY (order_id) );


Q 데이터λ₯Ό μ‚½μž…ν•˜λŠ” 방법은 λ¬΄μ—‡μΈκ°€μš”?


A
데이터λ₯Ό INSERT 문을 μ‚¬μš©ν•˜μ—¬ ν…Œμ΄λΈ”μ— μ‚½μž…ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 각 열에 ν•΄λ‹Ήν•˜λŠ” κ°’ λͺ©λ‘μ„ 지정해야 ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ‹€μŒκ³Ό 같이 μ£Όλ¬Έ ν…Œμ΄λΈ”μ— 데이터λ₯Ό μ‚½μž…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

INSERT INTO orders (customer_id, product_id, quantity) VALUES (1, 10, 5);


Q 데이터λ₯Ό κ²€μƒ‰ν•˜λŠ” 방법은 λ¬΄μ—‡μΈκ°€μš”?


A
데이터λ₯Ό SELECT 문을 μ‚¬μš©ν•˜μ—¬ ν…Œμ΄λΈ”μ—μ„œ 검색할 수 μžˆμŠ΅λ‹ˆλ‹€. λ°˜ν™˜ν•  μ—΄, 쑰건 및 μ •λ ¬ μˆœμ„œλ₯Ό 지정할 수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 고객 IDκ°€ 1인 λͺ¨λ“  주문을 κ²€μƒ‰ν•˜λ €λ©΄ λ‹€μŒμ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

SELECT * FROM orders WHERE customer_id = 1;


λ‚΄μš©μ΄ κΆκΈˆν•˜λ‹€λ©΄, μš”μ•½λΆ€ν„° μ‹œμž‘ν•˜λŠ” 건 μ–΄λ•Œμš”?
πŸš€


['μΆ•ν•˜ν•©λ‹ˆλ‹€! λ°μ΄ν„°λ² μ΄μŠ€ 관리가 더 이상 λ―Έμ§€μ˜ μ˜μ—­μ΄ μ•„λ‹™λ‹ˆλ‹€. 이 μ„€λͺ…μ„œλ₯Ό 읽음으둜써 λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ˜ κΈ°λ³Έ, κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ 핡심 κ°œλ…, SQL의 핡심 λͺ…령을 배웠을 κ²ƒμž…λ‹ˆλ‹€.', '', '데이터 κ΄€λ¦¬μ˜ κ°•λ ₯ν•œ 도ꡬλ₯Ό κ°–μΆ˜ μ—¬λŸ¬λΆ„μ€ 이제 κ·€μ€‘ν•œ 데이터λ₯Ό 효율적이고 μ•ˆμ „ν•˜κ²Œ μ‘°μ§ν•˜κ³  μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ°μ΄ν„°μ—μ„œ 톡찰λ ₯을 μ΄λŒμ–΄ μ˜μ‚¬ 결정을 κ°œμ„ ν•˜κ³  λΉ„μ¦ˆλ‹ˆμŠ€ μ„±κ³Όλ₯Ό λ†’μ΄λŠ” 데이터 쀑심적 λ―Έλž˜κ°€ μ—¬λŸ¬λΆ„μ„ 기닀리고 μžˆμŠ΅λ‹ˆλ‹€.', '', '여정을 κ³„μ†ν•˜μ„Έμš”. 싀무λ₯Ό 톡해 지식을 ν™•μž₯ν•˜κ³  λ°μ΄ν„°λ² μ΄μŠ€ 관리λ₯Ό λŠ₯μˆ™ν•˜κ²Œ μ΅νžˆμ„Έμš”. λ°μ΄ν„°μ˜ λ¬΄ν•œν•œ κ°€λŠ₯성을 λΉ„κ΅ν•˜κ³  데이터λ₯Ό 톡해 ν˜μ‹ μ„ μ΄λ£¨μ„Έμš”. 이 μ„€λͺ…μ„œκ°€ μ—¬λŸ¬λΆ„μ˜ λ°μ΄ν„°λ² μ΄μŠ€ 관리 λͺ¨ν—˜μ„ μœ„ν•œ μ΄ˆμ„μ΄ 되기λ₯Ό λ°”λžλ‹ˆλ‹€. 성곡을 κΈ°μ›ν•©λ‹ˆλ‹€!']

Related Photos

μƒ˜ν”Œ (57)

μƒ˜ν”Œ (88)

μƒ˜ν”Œ (32)

μƒ˜ν”Œ (43)

μƒ˜ν”Œ (73)

μƒ˜ν”Œ (83)

μƒ˜ν”Œ (89)

μƒ˜ν”Œ (72)

μƒ˜ν”Œ (79)