SQL クエリ
備忘録です。
カラムとテーブルの選択
SELECT カラム名
FROM テーブル名;
データの取得
WHERE
SELECT *
FROM テーブル名
WHERE カラム名 = 要素 -- 「取得したい要素」と一致するものを検索
WHERE カラム名 LIKE %要素% -- 「取得したい要素」を含む要素を検索
WHERE NOT カラム名 = 要素 -- 「取得したい要素」と一致しないものを検索
WHERE カラム名 IS NULL -- 指定したカラムのなかでNULLのデータを検索
WHERE カラム名 IS NOT NULL -- 指定したカラムの中でNULLでないデータを検索
比較演算子等
カラム名 = -- 一致
カラム名 >= -- 以上
カラム名 <= -- 以下
カラム名 < -- より大きい
カラム名 > -- 未満
カラム名 LIKE -- 含む
NOT カラム名 演算子 -- NOT文
カラム名 IS NULL -- NULL値である
カラム名 IS NOT NULL -- NULL値でない
AND / OR
WHERE 条件
AND 条件; -- AND文
WHERE 条件
OR 条件; -- OR文
並び替え
ORDER BY 並び替えたいカラム 並び方; -- 並び替え文法
ASC -- 昇順 ascending order
DESC -- 降順 descending order
取得データ数の制限
LIMIT データの件数; -- 指定したデータの件数を取得する(numpyのheadとおなじ)
/*クエリの最後に記述する*/
データベース・テーブルの作成
テーブルの作成
CREATE TABLE テーブル名(
行名1 データ型,
行名2 データ型
)
データ型の種類
分類 | データ型名 | 説明 |
---|---|---|
数値型 | int | 整数型 |
^ | decimal(桁数) | 固定長小数型 |
^ | money | 通貨 |
^ | float | 浮動小数点数値 |
文字列型 | char(文字数), nchar(文字数) | 固定長文字列型(~8000字) |
^ | varchar,nvarchar | 可変長文字列型(~8000字) |
^ | text,ntext | 可変長文字列型(~10億文字) |
日付型 | time | hhss |
^ | date | YYYY-MM-DD |
^ | datetime | YYYY-MM-DD hhss |
データの追加・更新・削除
データの追加
INSERT INTO テーブル名 -- 操作するテーブルを指定
(列名1,列名2,列名3) -- 操作する列を指定
VALUES
(値1,値2,値3); -- 追加する値を入力
データの更新(既に登録されているデータを新しいものに置き換える)
UPDATE テーブル名
SET 列名1 = 値1, 列名2 = 値2, 列名3 = 値3 --更新する値を入力
WHERE 条件 -- 更新する場所の条件を指定
行の削除
DELETE FROM テーブル名
WHERE 条件 -- 指定した条件を満たす行を削除する
列の追加・削除
ALTER TABLE テーブル名 ADD 列名 データ型 初期値 --列の追加
ALTER TABLE テーブル名 DROP COLUMN 列名 -- 列の削除
ALTER TABLE テーブル名 ALTER COLUMN 列名 データ型 -- 指定した列のデータ型の変更
データの加工
重複する要素を省く
/*指定したカラムから重複をのぞいて計算する*/
SELECT DISTINCT(カラム名)
FROM テーブル名;
計算を実行する
SELECT カラムⅠ,カラムⅡ*5 -- カラムⅠと、カラムⅡに5を掛けた値を取得
python(SQLiteの使い方)
#### モジュールのインポートimport sqlite3
conn = sqlite3.connect("データベース.db") # データベースファイルと接続
c = conn.cursor() # カーソルオブジェクトの作成
c.execute('''
クエリ
''') # クエリの実行
conn.close() # 切断を怠るとデータベースにロックがかかってしまう。