職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

SQLiteのカラム制約について

2020年05月31日 | sqlite
SQLiteのカラム制約について


【開発環境】
OS:Windows 10 (64bit)
コマンドプロンプト

【カラムの制約】
PRIMARY KEY制約→カラムを主キーに設定する
書式
CREATE TABLE テーブル名(カラム名 PRIMARY KEY, ...);
または
CREATE TABLE テーブル名(カラム名1, カラム名2, ... ,
PRIMARY KEY(カラム名1, カラム名2, ...));

実行
D:\pg\sqlite3>sqlite3 D:\pg\sqlite3\myfriend.sqlite3
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite>
INTEGER 型の id カラムに PRIMARY KEY 制約を設定
sqlite> create table user(id int primary key, name text);
sqlite> .tables
personal user
sqlite> insert into user values(1, 'Yamada');
sqlite> insert into user values(2, 'Tanaka');
プライマリーキーを重複してみる
sqlite> insert into user values(1, 'Honda');
Error: UNIQUE constraint failed: user.id
sqlite>

【INTEGER型のカラムにPRIMARY KEY制約を設定する場合】
データ型が INTEGER のカラムに対して PRIMARY KEY 制約を設定した場合。新しいデータを追加する時に対象のカラムの値を省略すると、 AUTOINCREMENT 制約を設定した時と同じように自動的に数値が格納されます。

・ id カラムには値を指定せずにデータを格納してみる。
sqlite> insert into user(name) values('Andou');
sqlite> insert into user(name) values('Honda');
sqlite> insert into user(name) values('Yamashita');
sqlite> select * from user;
1|Andou
2|Honda
3|Yamashita
sqlite>
・表示
sqlite> select * from user;
1|Andou
2|Honda
3|Yamashita
sqlite>
・データ追加1
sqlite> insert into user values(8, 'Kanemoto');
sqlite>
sqlite> select * from user; 表示
1|Andou
2|Honda
3|Yamashita
8|Kanemoto
sqlite>
・データ追加2
sqlite> insert into user(name) values('Tokuda');
sqlite> select * from user; 表示
1|Andou
2|Honda
3|Yamashita
8|Kanemoto
9|Tokuda
sqlite>

・データ追加3--他のデータ型を入力する
sqlite> insert into user values('Hello');
Error: table user has 2 columns but 1 values were supplied
sqlite>

PRIMARY KEY 制約を設けないと
sqlite> create table numtest1(id integer);
sqlite>
sqlite> insert into numtest1 values('Hello');
sqlite> select * from numtest1;
Hello
sqlite>

コメント    この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« SQLiteのデータについて | トップ | 息子介護物語-エピソード20(... »
最新の画像もっと見る

コメントを投稿

sqlite」カテゴリの最新記事