데이터베이스

컴순이·2022년 12월 24일
0

데이터베이스: 구조화된 데이터의 집합
DBMS: DB에 데이터 삽입, 조회, 수정, 삭제가 가능한 시스템

데이터베이스 = 테이블의 집합
테이블 = 행의 집합
행: 한 단위의 데이터 기록 = record
열: 데이터의 항목 = field

클라이언트 -SQL→ 서버(DBMS)
클라이언트 ←응답- 서버

SQLite

데이터타입: integer, real(실수), text, null

DDL

데이터 정의 언어

CREATE TABLE 테이블명(컬럼명1 데이터타입, 컬럼명2 데이터타입);

데이터 뒤에 붙을 수 있는 제약조건
① primary key (기본키): 레코드를 구분짓는 값
② not null
③ default CREATE TABLE post(title text default('제목없음'))
④ unique: 중복 X

DROP TABLE 테이블명
ALTER TABLE 테이블명 RENAME TO 테이블명2
ALTER TABLE 테이블명 ADD COLUMN 컬럼명
RENAME COLUMN DROP COLUMN

DML

데이터 조작 언어

INSERT INTO 테이블명 (컬럼명1, 컬럼명2) VALUES (값1, 값2);
SELECT 컬럼명1, 컬럼명2 FROM 테이블명;
SELECT title, content FROM post WHERE id=3;
SELECT * FROM post WHERE title LIKE 'start%'

WHERE 뒤에
BETWEEN IN

정렬
ORDER BY [ACS|DESC]

수정
UPDATE 테이블명 SET 컬럼명 = 값, … WHERE 조건식;

삭제
DELETE FROM 테이블명 WHERE 조건식;

COUNT() AVG()

INNER JOIN,로 쓸 수 있음

파이썬에서 SQLite 쓰기

create DB

import sqlite3

# 데이터베이스 열기
conn = sqlite3.connect('a.db')

# 커서 생성
cur = conn.cursor()

# SQL 명령 작성
CREATE_SQL = """
    CREATE TABLE IF NOT EXISTS Item(
    id integer primary key autoincrement,
    code text not null,
    name text not null,
    price integer not null
    )
"""

# SQL 명령 실행
cur.execute(CREATE_SQL)

# 데이터베이스 닫기
conn.close()

insert data

conn = sqlite3.connect('a.db')
cur = conn.cursor()

INSERT_SQL = "INSERT INTO Item(code, name, price) VALUES (?, ?, ?)"

# 1개
cur.execute(INSERT_SQL, ('A00001', '가위', 3000))

# 여러개
data = {('A00002', '게이밍 마우스', 30000), ('A00003', '스마트폰', 900000)}
cur.executemany(INSERT_SQL, data)

conn.commit()
conn.close()

INSERT, UPDATE, DELETE는 commit 필요

select

conn = sqlite3.connect('a.db')
cur = conn.cursor()

SELECT_SQL = "SELECT * FROM Item LIMIT 2"

cur.execute(SELECT_SQL)

rows = cur.fetchall()
for row in rows:
    print(row)

conn.close()

정규화

ERD

profile
음음

0개의 댓글