SQLiteでのテーブル・データに関して
【開発環境】
OS:Win10(64ビット)
データベース:SQLite3
コマンドプロンプト入力
【データの追加と削除】
1)テーブルにデータを追加するには
・書式
INSERT INTO テーブル名 VALUES(値1, 値2, ...);
・実行文(コマンドプロンプト)
Microsoft Windows [Version 10.0.18363.900]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\Users\shyok>cd D:\pg\sqlite3
C:\Users\shyok>d:
データベース接続
D:\pg\sqlite3>sqlite3 Datatest.sqlite3
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite>
テーブル作成
sqlite> create table user(id integer, name text, old integer, address text);
sqlite>
データを追加する
sqlite> insert into user values(1, 'Yamada', 19, 'Tokyo');
sqlite>
sqlite> insert into user values(3, 'Mori', 32, 'Kyoto');
sqlite> insert into user values(5, 'Ueda', 27, 'Tokyo');
sqlite> insert into user values(6, 'Mitsui', 20, 'Nagoya');
sqlite>
sqlite> .heade on
sqlite> .mode column
sqlite>
■他のテーブルから取得したデータをテーブルに追加する
・書式
INSERT INTO テーブル名 SQL文;
・データを追加するテーブルに含まれるカラムの数と、SQL文で取得するカラムの数は同じである必要がある。書式
INSERT INTO テーブル1 SELECT C1, C2, C3 FROM テーブル2 WHERE 条件式;
・データを追加するカラムを指定する事も出来る
書式
INSERT INTO テーブル名(カラム名1, カラム名2, ...) SQL文;
例文
INSERT INTO テーブル1(N1, N2, N3) SELECT C1, C2, C3 FROM テーブル2 WHERE 条件式;
実践する
テーブルを2つ作る
Microsoft Windows [Version 10.0.18363.900]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\Users\shyok>cd D:\pg\sqlite3
C:\Users\shyok>d:
D:\pg\sqlite3>sqlite3 D:\pg\sqlite3\Datatest.sqlite3
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite>
sqlite> .heade on
sqlite> .mode column
sqlite>
sqlite> create table user(id integer, name text, old integer);
sqlite> create table olduser(userid integer, name text, address text);
sqlite>
sqlite> insert into user values(1, 'Yamada', 24);
sqlite> insert into user values(2, 'Oota', 31);
sqlite> insert into user values(3, 'Suzuki', 18);
sqlite> insert into user values(4, 'Kudou', 25);
sqlite> insert into user values(5, 'Nishi', 19);
sqlite>
user テーブルから old カラムの値が 20 より大きいデータを取得し、 id カラムと name カラムの値を olduser テーブルに追加してみる。
sqlite> select * from user;
id name old
---------- ---------- ----------
1 Yamada 24
2 Oota 31
3 Suzuki 18
4 Kudou 25
5 Nishi 19
sqlite>
sqlite> insert into olduser(userid, name) select id, name from user where old > 20;
sqlite> select * from olduser;
userid name address
---------- ---------- ----------
1 Yamada
2 Oota
4 Kudou
sqlite>
■テーブルのデータを更新する
書式
UPDATE テーブル名 SET カラム名1 = 値1, カラム名2 = 値2, ... WHERE 条件式;
sqlite>
sqlite> create table staff(id integer, name text, unit text, flag text);
sqlite>
sqlite> insert into staff values(1, 'Yamada', 'Sales', 'Yes');
sqlite> insert into staff values(2, 'Honda', 'Office', 'No');
sqlite> insert into staff values(3, 'Nakai', 'Office', 'Yes');
sqlite>
id カラムの値が 3 のデータの name カラムの値を変更する
sqlite> update staff set name = 'Nakajima' where id = 3;
sqlite> select * from staff;
id name unit flag
---------- ---------- ---------- ----------
1 Yamada Sales Yes
2 Honda Office No
3 Nakajima Office Yes
sqlite>
sqlite> insert into staff values(4, 'Suzuki', 'Tech', 'Yes');
sqlite> insert into staff values(5, 'Itou', 'Sales', 'No');
sqlite>
sqlite> select * from staff;
id name unit flag
---------- ---------- ---------- ----------
1 Yamada Sales Yes
2 Honda Office No
3 Nakajima Office Yes
4 Suzuki Tech Yes
5 Itou Sales No
sqlite>
複数のデータを一度に更新する
unit カラムの値 'Office' から 'Desk' に変更する
sqlite> update staff set unit = 'Desk' where unit = 'Office';
sqlite>
sqlite> select * from staff;
id name unit flag
---------- ---------- ---------- ----------
1 Yamada Sales Yes
2 Honda Desk No
3 Nakajima Desk Yes
4 Suzuki Tech Yes
5 Itou Sales No
sqlite>
■テーブルのデータを削除する
書式
DELETE FROM テーブル名 WHERE 条件式;
sqlite> select * from user;
id name old
---------- ---------- ----------
1 Yamada 24
2 Oota 31
3 Suzuki 18
4 Kudou 25
5 Nishi 19
sqlite>
最初に old カラムの値が 20 より小さいデータを削除
sqlite>
sqlite> select * from user;
id name old
---------- ---------- ----------
1 Yamada 24
2 Oota 31
4 Kudou 25
sqlite>
テーブルのすべてのデータを削除するには
sqlite> delete from user;
sqlite> select * from user;
sqlite> .tables
olduser staff user
sqlite>