1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SQLite学習メモ

Last updated at Posted at 2022-06-16

:large_blue_diamond:SQLiteのこと
基本はデータベース毎に1ファイル作成して管理する。

:large_blue_diamond:データ型
テーブル作成時に型の定義は必須でない。
どんな型かは区別されている。

NULL
INTEGER
TEXT
REAL
BLOB

:large_blue_diamond:テーブル作成時に指定できる型

NONE
INTEGER
TEXT
REAL
NUMERIC

:large_blue_diamond:データベースの作成・接続
sqlite3 データベース名

一致するデータベース名があれば接続される。
一致するデータベース名がなければ新規作成され、接続される。
「データベース名」がそのままファイル名として作成される。
接続されるとプロンプト(コマンドを入力する場所)がsqlite>となる。

:small_blue_diamond:sqlite3.exeファイルのあるディレクトリ以外にデータベースファイルを作成したい場合
sqlite3 パス名¥データベース名

:large_blue_diamond:テーブル作成
create table テーブル名(カラム名, カラム名);

:small_blue_diamond:型を指定する時
create table テーブル名(カラム名 型, カラム名 型);

:large_blue_diamond:テーブル名変更
alter table テーブル名 rename to 新テーブル名;

:large_blue_diamond:テーブル削除
drop table テーブル名;

:large_blue_diamond:データの追加
insert into user values(データ, データ);
insert into テーブル名(カラム名, カラム名, カラム名) values(データ名 データ名, データ名);

:bulb:DEFAULT制約をつけているカラムをDEFALUTの値で登録させたい時は①の方法ではカラム数不足でエラーが出る。②で登録したいカラムのみ設定するとできる。

:large_blue_diamond:存在しているテーブルの確認
接続している状態で.tables

:large_blue_diamond:プライマリーキーの設定
create table テーブル名(カラム名 型 primary key, カラム名 型);

:small_blue_diamond:integer型にプライマリーキーの設定
create table テーブル名(カラム名 integer primary key, カラム名 型);
新データ追加時、存在している最大値+1の数を自動で付与してくれる。

insert into user(name) values('あああ');
→idが自動で付与される

:large_blue_diamond:autoincrementの設定
create table テーブル名(カラム名 型 primary key autoincrement, カラム名 型);

これをつけると、一度使われた値は割り当てられなくなり、今まで付与された最大値+1の値がカラムに設定される。
primary keyだけだと削除したデータがあれば新データはその値がもう一度割り当てられちゃう。

:large_blue_diamond:ROWIDの表示
select *, rowid from テーブル名;

ROWIDとは、データ追加時に自動で付与される非表示のid。
:bulb:integer型のプライマリーキーを設定すると御暗示値を取る

:large_blue_diamond:カラムの追加
alter table テーブル名 add column 新カラム名 型;

型は指定してもしなくてもよい。

:large_blue_diamond:NOT NULL制約
create table テーブル名(カラム名 型 not null, カラム名 型);

対象のカラムにはnullが入れられなくなる。

:large_blue_diamond:UNIQUE制約
create table user(id integer unique, name text);

対象のカラムには同じ値が入れられなくなる。
:bulb:nullは重複可

:small_blue_diamond:複数カラムの組み合わせにUNIQUE制約
create table テーブル名(カラム名 型, カラム名 型, カラム名 型, unique(カラム名1, カラム名2));

カラム名1とカラム名2の値は重複可能。
組み合わせの重複が不可。

:large_blue_diamond:DEFAULT制約
create table product(カラム名 型 default デフォルト値);

何もいれずに登録した時にDEFAULTで設定した値が反映される。
null、文字列、数値、が設定できる。

:small_blue_diamond:日付のデフォルト値設定
create table product(カラム名 default CURRENT_TIME);

追加した時点の日時を登録できる。

①CURRENT_TIME 「HH:MM:SS」
②CURRENT_DATE 「YYYY-MM-DD」
③CURRENT_TIMESTAMP「YYYY-MM-DD HH:MM:SS」

:large_blue_diamond:CHECK制約
create table テーブル名(カラム名 型, カラム名 型 check(条件式));
create table テーブル名(カラム名1, カラム名2, ... , check(条件式));

カラム追加時に条件に一致しているか判定してくれる。
:bulb:ANDやORを使って条件式を複雑にもできる

例)年齢が1歳より大きく10歳未満
create table user(id integer, old integer check(old > 1 and old < 10));

:large_blue_diamond:終了
.exit

:large_blue_diamond:Viewの作成
SELECT分の条件に合う中身を引き抜いて仮想のテーブルを作成できる。
create view ビュー名 as SELECT文;

例)create view ppriceview as select name, price from product where price > 100;

:small_blue_diamond:Viewの中身確認
select * from 作成したビュー名;

:small_blue_diamond:View一覧の確認
Viewのみを一覧する機能はない。
.tablesでテーブルと共にViewも一覧表示される。

:small_blue_diamond:Viewが作られた時のSQL文確認
select name, sql from sqlite_master where type = 'view';

:large_blue_diamond:Viewの削除
drop view ビュー名

:large_blue_diamond:設定されているコマンドを確認
データベースに接続されている状態で.show

:large_blue_diamond:テーブルを選択
select * from テーブル名;
指定したテーブルの中身が確認できる。

:large_blue_diamond:コメントを残す
-- コメント
/* コメント */

:large_blue_diamond:文字列のエスケープ処理
「'」を前に入れる
insert into テーブル名 value('I''m a human.');

:large_blue_diamond:テーブルがどのように作成されたか確認
スキーマ情報が確認できる。
:bulb:.mode lineを使うと表示が見やすくなる。

select * from sqlite_master;
.schema

:small_blue_diamond:特定のテーブルを指定
select * from sqlite_master where type='table' and name='テーブル名';
.schema テーブル名

:bulb:コマンドが長い時
SQL文が長くなると、何を書いているか分からなくなってくる。
SQL文はが付くまで1つの文として扱われるので
長ければEnterキーを押して改行できる。
ちょっと見やすくなる。

:large_blue_diamond:参考記事
DBOnline SQLite入門
https://www.dbonline.jp/sqlite/

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?