[머신 러닝] 2-3 & 4 SQLite3 기초(2)

혯응·2024년 9월 5일

DDL (Data Definition Language, 데이터 정의 언어)

각 릴레이션(데이터베이스 테이블)을 정의하기 위해 사용하는 언어
CREATE (테이블 생성) / ALTER (테이블 변경) / DROP (테이블 삭제) 등



1. CREATE - 테이블 생성

항목설명
데이터 타입SQLite에서 사용할 수 있는 다양한 데이터 형식 (INTEGER, REAL, TEXT, BLOB 등)
기본 키 (Primary Key)테이블의 각 행을 고유하게 식별하는 열
자동 증가 (AUTOINCREMENT)자동으로 값이 1씩 증가하는 정수형 열
NOT NULL 제약 조건해당 열에 NULL 값이 들어가는 것을 허용하지 않음
CHECK 제약 조건열에 저장될 값이 특정 조건을 만족해야 함
UNIQUE 제약 조건열의 값이 고유해야 하며, 여러 개의 NULL 값을 허용할 수 있음

입력

# CREATE TABLE IF NOT EXISTS contacts( 

script = """
CREATE TABLE contacts ( 
    contact_id INTEGER PRIMARY KEY,
    likes INTEGER DEFAULT 0, --값이 입력되지 않을 시 디폴트로 0을 저장합니다.
    first_name TEXT NOT NULL,
    last_name TEXT NOT NULL,
    email TEXT NOT NULL UNIQUE, --중복된 값이 입력될 경우 에러를 일으킵니다.
    phone TEXT NOT NULL UNIQUE CHECK (length(phone) >= 10) -- 길이가 10 이상이 아닐 경우 에러를 일으킵니다.
);
""" 
cur.execute(script) 
script = """
SELECT * FROM contacts;
""" 

df = pd.read_sql_query(script, conn)
df

출력


PK를 나중에 지정하는 경우
입력

CREATE TABLE contacts (
    contact_id INTEGER,
    ~~~
    PRIMARY KEY (contact_id)
);


2. ALTER - 테이블 변경

1) 테이블명 수정

script = """
ALTER TABLE devices
RENAME TO equipment; -- devices 테이블의 이름을 equipment로 바꿉니다.
""" 

2) 테이블 컬럼 추가

script = """
ALTER TABLE equipment 
ADD COLUMN location TEXT; -- 명령어를 주목해주세요. ('FIELD'가 아니라 'COLUMN'을 사용)
""" 

3) 컬럼명 수정

script = """
ALTER TABLE equipment 
RENAME COLUMN location TO loc;
""" 


2. DROP - 테이블 삭제

입력

script = """
DROP TABLE equipment ;
""" 




DB 내의 Table 목록 & Table 구조 확인하기

1. 테이블 목록 확인하기

입력

script = """
SELECT 
    name
FROM 
    sqlite_master 
WHERE 
    type ='table' AND --타입이 테이블인걸 꺼내줘
    name NOT LIKE 'sqlite_%'; 
""" 

df = pd.read_sql_query(script, conn)
df

출력



2. 테이블 생성 시 SQL 원문 확인

입력

script = """
SELECT sql 
FROM sqlite_master 
WHERE name = 'contacts';
""" 

df = pd.read_sql_query(script, conn)
print(df['sql'][0])

출력

profile
감자 개발자

0개의 댓글