データベースを操作する際に、SQLという言語がある。
以下の文はWindows 10での操作。
https://www.sqlite.org/index.htmlからSQLiteをダウンロードする。この時、 https://sqlitebrowser.org/からDB browser for sqliteもダウンロードしてインストールしておく。
SQLiteのインストール手順は
SQLite Download PageでPrecompiled Binaries for Windowsにあるsqlite-tools-win32-x86-3240000.zipをダウンロードしてきて、
ダウンロード後にzipファイルを解凍する。
解凍後のフォルダをCドライブ直下に移動し、
C:\sqlite3\sqlite3.exe
になるようにフォルダ名のリネームと配置し、
システムの環境変数の編集でsqlite3にパスを通す。
パスを通す手順は
画面左下にあるcortana検索で「環境変数」で検索すると結果にあがるシステム環境変数の編集を選択し、
システムのプロパティの画面で環境変数のボタンを押し、
環境変数の画面でシステム環境変数のPathの項目を選んで編集画面を押す。
画面が切り替わったら、
新規で「C:\sqlite3\」を追加してSQLite3のインストールは終了。
今回は、下記のデータをtableで作成して、DB browser for sqliteで表示してみる。
id | name | fname | gender |
1 | ryoko | saito | f |
2 | tuyoshi | saito | m |
メモ帳に下記のsql文を仮で作成しておく。
CREATE TABLE users( id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(8), fname VARCHAR(8), gender CHAR(1) );
CREATE TABLE usersでusersという名前の表(テーブル)を作成する。
id(識別子)、name(名前)、fname(名字)やgender(性別)といった項目はフィールドと呼び、
id INTEGER PRIMARY KEY AUTOINCREMENTでは、idが整数で最も重要なフィールドであることを意味している。
name VARCHAR(8)は、VARCHARが可変長配列の型という意味で、(8)は8文字までnameの文字数を入れることができる。gender CHAR(1)のCHARは、固定長配列を意味し、genderの(1)でfかmかの一文字を指定する。
ここで、workspace/sql/以下にsample.dbというファイルを作成する。ファイルの中は空にしておく。
コマンドプロンプトを開き、下記のコマンドを記載する。
C:\Users\Ryoko Saito>cd workspace/sql
C:\Users\Ryoko Saito\workspace\sql>sqlite3 sample.db
SQLite version 3.24.0 2018-06-04 19:24:41
Enter ".help" for usage hints.
sqlite> CREATE TABLE users(
...> id INTEGER PRIMARY KEY AUTOINCREMENT,
...> name VARCHAR(8),
...> fname VARCHAR(8),
...> gender CHAR(1)
...> );
sqlite> .schema
まず、sql構文を実行するときは、sqliteから始める。上記メモ帳で書いたsql文をコピペし実行する。sqlite> .schemaで実際にsample.dbに作成されたかを確認する。
そうすると、上記の記載したsql構文が再び表示される。実際にデータベースの内容をコマンドプロンプトではなくて、DB browser for sqliteで確認もできる。
次にデータを挿入してみる。
sqlite> INSERT INTO users(name,fname,gender)VALUES('ryoko','saito','f');
sqlite> SELECT * FROM users;
1|ryoko|saito|f
INSERT INTO usersが、usersにデータを挿入するという意味で、この後に、各fieldに対応したデータを''を使って記載する。SELECT * FROM users;でデータを取り出すという意味になる。
他のデータも追加してみる。
sqlite> INSERT INTO users(name,fname,gender)VALUES('kuma','kumasann','m'); sqlite> INSERT INTO users(name,fname,gender)VALUES('usa','usakosan','f'); sqlite> INSERT INTO users(name,fname,gender)VALUES('paopom','zousan','m'); sqlite> INSERT INTO users(name,fname,gender)VALUES('dorachan','doradora','m'); sqlite> INSERT INTO users(name,fname,gender)VALUES('dorachan','doradora','m');
sqlite> SELECT * FROM users;
1|ryoko|saito|f
2|kuma|kumasann|m
3|usa|usakosan|f
4|paopom|zousan|m
5|dorachan|doradora|m
6|dorachan|doradora|m
ここで、'dorachan'がid=5,6で2回記載されているので、id=6の'dorachan'を削除してみる。
sqlite> DELETE FROM users WHERE id=6;
sqlite> SELECT * FROM users;
1|ryoko|saito|f
2|kuma|kumasann|m
3|usa|usakosan|f
4|paopom|zousan|m
5|dorachan|doradora|m
id=6が削除されたのが確認できた。
また、idを大きい順に並びなおしたい時は、
sqlite> SELECT * FROM users WHERE gender = 'f' ORDER BY name DESC;
3|usa|usakosan|f
1|ryoko|saito|f
小さい順に戻したい時は、
sqlite> SELECT * FROM users WHERE gender = 'f' ORDER BY name ASC;
1|ryoko|saito|f
3|usa|usakosan|f
大きい順から一つだけ表示したい時は、
sqlite> SELECT * FROM users WHERE gender = 'f' ORDER BY name DESC LIMIT 1;
3|usa|usakosan|f
sqlite>
とする。