SQLite の組み込み関数

SQLite の組み込み関数
#11 組み込み関数を使おう
http://dotinstall.com/lessons/basic_sqlite/6411
を参考に、組み込み関数の使い方を学習
まず、件数を取得する cout
select cout(*) from user;
()の中身にカラムを指定する
• はすべてを意味するワイルドカード
次に、最大値の取得をする max()
select max(score) from user;
こうすることで、score の最大値を取得できる
逆に、最小値を取得したいのなら min()
select min(score) from user;
これらは、ゲーム作成とかに使える
次に、乱数を作成する random()
これはテーブルとか関係なく出来るので
select random();
でOK
もちろん、これも select をつかった通常のSQLとして
利用も可能
select name from user order by random() limit 1;
このようにすれば
抽選でだれか1人だけ選ぶというような仕組みがつくれる
応募者リストを作成し、そこからランダムで
選ぶときなどに有効
構文が長いのでわけてメモすると
select name from user
user テーブルの name の中から選択
order by random()
ランダムで
limit 1
1人だけ
という意味のSQLになる
length() を使うことで、文字列の長さの取得が可能
select name, length(name) from user;
選択したカラムの後に , で一度区切っていることに注意
ちなみに、配列の数え方ではないので
通常の1から数えるやりかたになる
また、どんなデータ型なのか確認するには
typeof() を使う
こちらも カラム名の後 , で区切っているので注意
select name, typeof(name) from user;
としている
seect カラム名 typeof(カラム名) from テーブル名;
という構文
関数に関するリファレンスは
http://www.sqlite.org/lang_corefunc.html
に掲載されているので
こちらを参考にすると効率的

SQLite でデータ抽出

SQLite でデータ抽出
#10 データを抽出してみよう
http://dotinstall.com/lessons/basic_sqlite/6410
を参考に、データの抽出
select 見たいカラム名 from テーブル名
でみることができる
見たいカラム名には * とすると
指定したテーブルの中のカラム全部が対象になる
mysql とかでもよくみかける構文はこの意味
動画を参考にやろうとしても
データがないので、まずは必要なテーブルとかを作成
動画の .schema を元に作成してデータ挿入しておく
create table user(name,score);
insert into user(name,score) values(‘taguchi’,200);
insert into user(name,score) values(‘sasaki’,100);
insert into user(name,score) values(‘hiroshi’,400);
insert into user(name,score) values(‘hiyano’,500);
すでに users というテーブルは使っているので
user というテーブルを作成
select score from user;
で同じ結果をみることができる
構文は
select カラム名 from テーブル名;
ただ引き出すだけだと意味があまりないので
並び替えと合わせて使うことで効率的にデータ管理参照ができる
select * from user order by score;
このように
order by をつけることで
score の小さい順に並び替えが可能
select * from user order by score desc;
というように、 選択したカラム名の後に
desc
をつけると、今度は大きい順にならべることができる
今回なら
score の大きい順に並び替えで表示している
また、検索結果の表示を絞り込むことも可能
select * from user order by score desc limit 3;
とすれば
score の値の大きい順上位3つからの表示となる
ちょっと長い構文なので
メモ
order by score desc
でsocre の中から大きい順に表示
desc をつけると大きい順になる
limit 3
で3つ表示
となっている
select * from user order by score limit 3;
とすれば、score の小さい順に表示になる
よく使うものとして
条件を指定するため where を使うやりかた
select * from user where score >= 200;
とすることで、
score >= 200 の条件に該当するものだけ
表示するようになる
構文は
select カラム名 from テーブル名 where 条件
あと、条件を指定するときに
java script とか PHP などでは
if のところの条件で
~でないという意味で
!=
を使ったけど
SQLite の場合には
<>
と書く
select * from user where name <> ‘taguchi’;
とすれば、名前が taguchi 以外の人の名前が
表示される
あと、name が taguchi のみ表示とするなら
select * from user where name = ‘taguchi’;
となる
java script や PHP の場合
name == ‘taguchi’
と条件式に書くけど、SQLite の場合は
name = ‘taguch’
となるので注意
ちなみに、文字列の場合は = の代わりに like でもOK
select * from user where name = ‘taguchi’;

select * from user where name like ‘taguchi’;
は同じ結果になる
あと、SQLite では、ワイルドカードが使えるけど
通常、 Linux コマンドとかで
ワイルドカードを示すのは * だけど
SQLite では % になる
select * from user where name like ‘tag%’;

name の中で
tag を含む、すべての名前ということになります

SQLite でデータ挿入

SQLite でデータ挿入
#09 データを挿入してみよう
http://dotinstall.com/lessons/basic_sqlite/6409
を参考に
SQLite でのデータ挿入について学習
データ挿入には
insert into テーブル名(カラム名,カラム名) values(挿入するデータ, 挿入するデータ)
といっようになります
挿入するデータが文字列なら
” でかこむのを忘れずに
人の名前とかメールアドレスは文字列なので
‘hebereke@gmail.com’
とか
‘heberekemaru’
というようにします
文字列の中に’ を入れたいときには
”というように、続けていれればOK
”Uaaaaaa”
というかんじです
これで、挿入されるときには
‘Uaaaaa’
となります
ちなみに、null はデータなしという意味なので
これは文字列ではないので
null
だけでOK

SQLite でテーブル作成のオプションその2

SQLite でテーブル作成のオプションその2
#08 テーブル作成時のオプション (2)
http://dotinstall.com/lessons/basic_sqlite/6408
を参考に、オプションについて学習
今回はチェック機能
入力される値が0以上になるようにチェックするには
カラム名 check(カラム名>0)
というようにする
create table lessons(title,count_lessons check(count_lessons>0));
というようになる
これを
.schema で確認すると
CREATE TABLE lessons(title, count_lessons check(count_lessons>0));
となっていて
count_lessons > 0 というように0以上になるように
設定されているのが確認できる
次に、カラムにインデックスを付ける方法
これにより、検索の高速化ができる
primary key
unique
などもインデックスの役割をもつ
インデックス作成するにいは
create index カラム名 on テーブル名(対象カラム);
となる
今回は
create index age on users(age);
これで、 index ageを作成して
対象は
users テーブルの age というカラム
ということになる
あとは、実行結果を確認するため
.schema
で確認すると
CREATE INDEX age on users(age);
となっているのが確認できる

SQLite テーブル作成時のオプション

SQLite テーブル作成時のオプション
#07 テーブル作成時のオプション (1)
http://dotinstall.com/lessons/basic_sqlite/6407
を参考に
テーブル作成時のオプションについて学習
テーブルのカラムに型を指定したいなら
カラムの後にデータ型を指定する
create table users(name text, email text);
テーブルに自動連番を付けるID役のカラムをいれるには
id integer primary key autoincrement
というように
カラム id に 整数型の integer を指定して
primary key をつけることで主キーになり
さらに
autoincrement を付けることで
自動連番になる
また、名前を入力するカラム name が空なら
エラーにするというようにするには
テーブル作成のときに not null をつける
name text not null
というようになる
これは
name がカラム名
text がTEXT型
not null は空になったらエラー
という意味
あと、Web サービスなどではEメールがログインにつかったりするように重複しないようにするので
こんなときには
unique をつける
これで、被らないようにできる
email text unique
というようになる
email は カラム名
text はTEXT型
unique はユニーク(一意)であるという意味
デフォルト値の設定をしたいときには
default 値
というようにする
age integer default 20
age はカラム名
integer は整数型
default 20 はデフォルト値を20
という意味
ゲームとかで
初期値を設定するのに使える
全部つなげて、テーブルを作成すると
create table users(id integer primary key autoincrement, name text not null, email text unique, age integer default 20);
となる
id integer primary key autoincrement,
で登録ID
name text not null,
でユーザ名
email text unique,
でメールアドレス
age integer default 20
で年齢
という顧客データのようなものが作れる

SQLite のデータ型指定

SQLite のデータ型指定
#06 データ型を指定する
http://dotinstall.com/lessons/basic_sqlite/6406
を参考に学習
SQLite で扱えるデータ型は
NULL
何もはいっていない
INTEGER
整数値
REAL
浮動小数点
TEXT
文字列
BLOB
バイナリデータ(画像とか映像など)
SQLite の特徴として
データ型は指定できるけど必須でないということ
SQLite のデータ型は、データ型を指定しても
そのデータ型であることを確約しないため
間違えると思いもよらぬエラーを引き起こすリスクもある
つまり、TEXT型を指定しても
必ずしもTEXTであるとは限らないということ

SQLite のテーブル変更

SQLite のテーブル変更
#05 テーブルを変更してみよう
http://dotinstall.com/lessons/basic_sqlite/6405
を参考に
テーブル名、カラムの変更を実践
sqlite3 dotinstall.sqlite3
でDB接続
テーブル名の変更には
alter table 今のテーブル名 rename to 新しいテーブル名;
とする
今回は、 users から dotinstall_users にしたいので
alter table users rename to dotinstall_users;
また、カラムの追加を行うには
alter table テーブル名 add column カラム名;
とする
現在の状況をまず
.schema
で確認すると
CREATE TABLE users(name,email);
これに
pwd というカラムを追加したいので
alter table dotinstall_users add column pwd;
とすることで追加できる
これを .shema で確認すると
CREATE TABLE “dotinstall_users”(name,email, pwd);
というように追加されているのが確認できる
注意点としては、
MySQL のように、タイプミスしたときに
簡単にカラムの削除ができないということ
MySQL のときには drop で簡単にできたけど
sqlite の場合はこの方法が使えない
sqlite基礎的なコマンド
http://source.hatenadiary.jp/entry/2013/02/05/134604
を参考にさせていただいたけど
sqliteではカラムのdrop(削除)はできないので
削除したければ、
1. 新しいテーブルを作成
2. トランザクションで必要な部分をエクスポート
というように しないと
削除できない
とのこと
最初に入力するときに
alter table dotinstall_users add colum pwd;
というように
column

colum としたため
カラムに
colum pwd が追加され
CREATE TABLE “dotinstall_users”(name,email, colum pwd);
となっていた
簡単にまぁ削除すればいいかな
と考えていたけど、drop できず検索することになりました

SQLite のテーブル操作

SQLite のテーブル操作
#04 テーブルを操作してみよう
http://dotinstall.com/lessons/basic_sqlite/6404
を参考に
SQLite でのテーブル操作などを学習
テーブル作成は
create をつかう
create table users(name,email);
このあたりは, MySQL とおなじ
create table テーブル名(カラム名, カラム名….);
という構文になる
現在のテーブル一覧をみるときには
.tables
を実行
.exit .tables のように .をつけて始まるコマンドには
;
をつけなくてもOK
.schema を使うと、テーブル構造をみることができる
.schema テーブル名
今回なら
.schema users
これはカラム確認に使う
作成したテーブルの削除には
drop を使う
drop table テーブル名
とする
drop table users;
というように実行
確認には
.tables
で確認する

SQLite のDB操作

SQLite のDB操作
#03 データベースを操作してみよう
http://dotinstall.com/lessons/basic_sqlite/6403
を参考に
軽量なDBのSQLite の操作を実践
Ubuntu に練習用ディレクトリを作成して
そこで実践する
mkdir sqlite
cd sqlite
まずはDBの作成
これは
sqlite3 データベース名.sqlite3
とする
拡張子が .sqlite3 となるようにする
もし、すでに sqliteデータベースがあるなら
そこに接続するし、ないのなら新規作成となる
これは vim でのファイル編集とおなじ
すると、
sqlite>
という状態になるので
.help とすれば
英語のヘルプがでてくる
データベースを抜けるには
.exit
とする
MySQL のときには exit でできたけど
SQLite の場合は .exit となる
ちょっと違うので間違えやすい
一度、SQLite を抜けてから、再度
sqlite3 dotinstall.sqlite3
とすれば、再度DBへ繋がることができる
テーブル作成には
create table users(name);
とする
ただし、実行しても何も成功したなどもメッセージがでてこない
また、端末と同じように上下キーで
実行したコマンドの履歴を出すこともできるし
実行することもできる
SQLite の場合、DBの削除には
作成した SQLite ファイル
今回なら
dotinstall.sqlite3
を削除するだけでOK
同様に、DBのコピーもファイルコピーでOK
という手軽さが特徴
MySQLなどの場合、削除はもっと面倒