SQL memo

Uncategorized コーディング
  • SQLを使い始めたので、使ったものをまとめていきます
  • PythonでSQLを使う方法についても少しまとめました
  • 順次追加予定です

テーブルの作成・削除

作成

CREATE TABLE 【テーブル名】(【カラム内容】)

例:テーブル「users」を作成する

CREATE TABLE users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    age INTEGER
)

カラム

カラムは【カラム名】 【型】 【オブション】と記述する

  • 【カラム名】:任意
  • 【型】:INTEGER TEXT etc.
  • 【オプション】の例
    • PRIMARY KEY = プライマリーキー指定
    • NOT NULL = NULLを許容しない
    • AUTOINCREMENT = 値を1ずつ増加させて入れる

削除

DROP TABLE 【テーブル名】

例: テーブル「users」を削除する

DROP TABLE users

補足:IF EXIST

  • IF EXISTIF NOT EXISTで対象テーブルが存在する場合、しない場合のみ作る、削除することも可能

テーブル「users」がない場合に作成

CREATE TABLE IF NOT EXISTS users(【カラム内容】)

テーブル「users」がある場合は削除

DROP TABLE IF EXISTS users

補足:複数カラムでのPRIMRY KEY

複数カラムの組み合わせをPRIMARY KEYに指定することもできる。

例: テーブル「utilities」を作成、year,monthの組み合わせをPRIMARY KEYにする

CREATE TABLE IF NOT EXISTS utilities (
    year INTEGER NOT NULL,
    month INTEGER NOT NULL,
    electricity_cost INTEGER,
    gas_cost INTEGER,
    water_cost INTEGER, 
    PRIMARY KEY (year, month)
)
  • PRIMARY KEYはユニークに設定する必要がある
  • year、monthそれぞれだと、同年別月、別年同月の重複があるが、year, monthを組み合わせることでユニークになる

データ取得

SELECT 【カラム】 FROM 【テーブル名】

例: テーブル「users」からカラム「id」「name」「age」を取得

SELECT id, name, age FROM users
  • 【カラム】を*にすると、全カラムを取得する

例: テーブル「users」から全カラムを取得

SELECT * FROM users

データ挿入

"INSERT INTO users (【カラム1】, 【カラム2】, …) VALUES (?, ?, …)", (【値1】, 【値2】, …)

例: テーブル「users」のカラム「name」「age」に「Alice」「30」を入れる

"INSERT INTO users (name, age) VALUES (?, ?)", ('Alice', 30)
  • INSERT時、
    • 既にあったら上書きする時 → INSERT OR REPLACE
    • 既にあったら上書きしない時 → INSERT OR IGNORE

PythonでSQLを使う(sqlite3)

使用するためにはsqlite3のimportが必要

import sqlite3

sqlite3.connectでDBに接続(無い場合は作成される)、その後はexecuteでSQLコマンドを実行できる

例: DB「example.db」に接続し、テーブル「users」を作成する

conn = sqlite3.connect("example.db")
conn.execute(
    '''
    CREATE TABLE users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        age INTEGER
    )
    '''
)

コメント

タイトルとURLをコピーしました