
각 릴레이션(데이터베이스 테이블)을 정의하기 위해 사용하는 언어
CREATE (테이블 생성) / ALTER (테이블 변경) / DROP (테이블 삭제) 등
| 항목 | 설명 |
|---|---|
| 데이터 타입 | 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)
);
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;
"""
입력
script = """
DROP TABLE equipment ;
"""
입력
script = """
SELECT
name
FROM
sqlite_master
WHERE
type ='table' AND --타입이 테이블인걸 꺼내줘
name NOT LIKE 'sqlite_%';
"""
df = pd.read_sql_query(script, conn)
df
출력

입력
script = """
SELECT sql
FROM sqlite_master
WHERE name = 'contacts';
"""
df = pd.read_sql_query(script, conn)
print(df['sql'][0])
출력
