がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

SQLite 雑速習

ざっくりSQLiteを速習してみました(業務では全く、個人的にも全く触ってなかったので)。 ほぼ覚え書き程度なので、ちゃんとした内容はちゃんとしたところで調べてください(笑

確認

sqlite3 -version

なかったらインストール

sudo dnf install sqlite

database領域作成&接続

sqlite3 test.db

DDL流し込み

てけとうに

## テーブルの確認
.tables
## スキーマ(テーブル情報)の表示(テーブル名省略すると、全部出る?)
.schema [テーブル名]

## databaseの確認(やっとくとPHPの時のDSN作るの楽)
.databases

## 列名を表示
.header on
## モード変更して見やすく
.mode column
## こっちは \G みたいな感じ
.mode line

## SQLファイルを読み込んで実行
.read ファイル.sql

## バックアップ
.backup backup.YYMMDD.db
## リストア
.restore backup.YYMMDD.db

## 抜ける( ctrl-C でもいけるけど)
.q

PHPで雑接続

<?php

$dsn = 'sqlite:/home/gallu/test/test.db';
$pdo = new PDO($dsn);
var_dump($pdo);

型 覚え書き

varcharとか指定できるらしいのですが内部的には以下にそろえられちゃうようです。

NULL NULL型
REAL    浮動小数点
INTEGER 整数
TEXT    任意の文字列
BLOB    任意のバイナリデータ

phinx確認

composer require robmorgan/phinx
vendor/bin/phinx init
mkdir -p db/migrations db/seeds

phinx.php

return
[
    'paths' => [
        'migrations' => '%%PHINX_CONFIG_DIR%%/db/migrations',
        'seeds' => '%%PHINX_CONFIG_DIR%%/db/seeds'
    ],
    'environments' => [
        'default_migration_table' => 'phinxlog',
        'default_environment' => 'development',
        'development' => [
            'adapter' => 'sqlite',
            'name' => '/home/gallu/test/test.db',
        ],
    ],
    'version_order' => 'creation'
];

って書いたら /home/gallu/test/test.db.sqlite3 ってなった。拡張子 .sqlite3 がデフォでつくぽい。 後は大体一緒ぽ。 多分汎用的に考えて

return
[
    'paths' => [
        'migrations' => '%%PHINX_CONFIG_DIR%%/db/migrations',
        'seeds' => '%%PHINX_CONFIG_DIR%%/db/seeds'
    ],
    'environments' => [
        'default_migration_table' => 'phinxlog',
        'default_environment' => 'development',
        'development' => [
            'adapter' => 'sqlite',
            'name' => __DIR__ . '/test.db',
        ],
    ],
    'version_order' => 'creation'
];

がいいんだろうなぁ直下に置くかどうかはともかくとして __DIR__ 使えば、どこにおいても問題ないし。

マイグレーションの確認。

php vendor/bin/phinx create TestTable

    public function change(): void
    {
        $table = $this->table('test');
        $table->addColumn('name', 'string')
            ->addColumn('str', 'string', ['limit' => 128])
            ->addColumn('str2', 'varbinary', ['limit' => 128])
            ->addColumn('num', 'integer', ['comment' => 'コメント'])
            ->addColumn('num2', 'biginteger')
            ->addColumn('created_at', 'datetime')
            ->create();
    }

php vendor/bin/phinx migrate --dry-run

からの

php vendor/bin/phinx migrate

ですんなり。 うん大体把握。なんかでチャンスあったら使ってみるかねぇ?