Elsaの技術日記(徒然なるままに)

主に自分で作ったアプリとかの報告・日記を記載

MENU

SQL備忘録

今回は、SQLについて備忘録書いていきます。
まだまだ初心者であるが故に?コマンドの使い方やデータ型とか基本的な部分から調べることが多いため、一通り書いて見返せるようにしたいと思います!!
※主にSQLiteでのコマンドやデータ型についてまとめていきます。
f:id:Elsammit:20200619211958j:plain

SQLとは?

SQLはデータベース(リレーショナルデータベース:RDB)を操作するための言語です。
以前はデータを効率よく検索(読み出す)ことを目的とした言語だったようですが、現在は検索の他にもデータ登録・削除といったデータベース操作のほとんどが行えるようになっております。
また、ISOで定められた標準規格があるため、一般的な操作であればどのSQLを使用しても違いなく使用することが可能になります。
※一部細かい部分で方言のようなものがあるので注意が必要!!


SQLiteとは?

SQLite(エスキューライト)とは、軽量コンパクトなリレーショナルデータベースシステムです。主に「組み込み用途」や「小規模システムのデータストア」として利用される、とのことです。
デメリットは、複数アクセス対応が弱いところのようです。


SQLiteインストール方法

Linux版】
下記コマンドを実行。以上。

sudo apt-get install -y sqlite3


windows版】
こちらのURLを参照にSQLite公式ホームページからパッケージをダウンロード・解凍。
解凍したフォルダ内にexeファイルがあるため、パスを通せばコマンドで使用可能になります。
SQLiteインストール | SQLite入門


Mac版】
標準ですでにインストールされているようです。
Mac に SQLite をインストール | とっても暇なブログw


sqlコマンド

【データベース作成】

create database データベース名;

【テーブル作成】

create table テーブル名 (列名 データ型 制約,
                                        列名 データ型 制約,
                                        ...
                                        );

【検索】

select 列名,列名,... from テーブル名 where 列名 比較演算子 値;

すべての列名で表示する場合には*を用いる。
また、列名を別名で表示したい場合には、列名の後ろにas 別名。

select 列名 as 別名,
          列名 as 別名,
          ... 
         from テーブル名 where 列名 比較演算子 値;

複数条件での検索の場合には、and or を用いる。

select 列名,列名,... from テーブル名 where 列名 比較演算子 値 and 列名 比較演算子 値
select 列名,列名,... from テーブル名 where 列名 比較演算子 値 or 列名 比較演算子 値

ソートを行う場合にはorder by。

※昇順の場合
select 列名,列名,... from テーブル名 where 列名 比較演算子 値 order by 並べ替え基準となる列;

※降順の場合
select 列名,列名,... from テーブル名 where 列名 比較演算子 値 order by 並べ替え基準となる列 desc;


【データ登録】

insert into テーブル名 (列名,列名,列名,...) values (値,値,値,...);

【テーブルコピー】

insert into コピー先テーブル名 (列名,列名,列名,...)  select (列名,列名,列名,...) from コピー元テーブル名;

【データ削除】
下記で条件に合致した行の削除が行えます。

delete from テーブル名 where 列名 比較演算子 値

全行数削除の場合はこちら。

delete from テーブル名

sqlteは列削除に対応していないです。
mysqlpostgresqlであればこちらで削除できます。

alter table テーブル名 drop column 列名;

【データ更新】

update テーブル名 set 列名 = 値 where 列名 比較演算子 値

複数列更新の場合はこちら。

update テーブル名 set 列名 = 値, 
                                      列名 = 値 
                                      where 列名 比較演算子 値

【列追加】

alter table テーブル名 add column 列名;

【テーブル間結合】
結合には、内部結合(inner join)と外部結合(outer join)の2種類存在します。
内部結合:両方のテーブルに存在する場合にのみ表示
外部結合:片方のテーブルに存在する場合には表示
SQL素人でも分かるテーブル結合(inner joinとouter join) - Qiita

<内部結合>

select 列名,列名,... from テーブル1名 inner join テーブル2名 on テーブル1名.列名 = テーブル2名.列名;

<外部結合>

select 列名,列名,... from テーブル1名 left outer join テーブル2名 on テーブル1名.列名 = テーブル2名.列名;
or
select 列名,列名,... from テーブル1名 right outer join テーブル2名 on テーブル1名.列名 = テーブル2名.列名;

【集約】
行数カウントや平均なども求めることができます。<行数カウント>

select count(*) from テーブル名;

<合計>

select sum(列名) from テーブル名;

<平均>

select avg(列名) from テーブル名;

<最大・最小>

select max(列名) from テーブル名;
select min(列名) from テーブル名;

グループ毎に(グループ分けして)カウントしたい、合計値算出したいなどの場合にはgroup byを用いる。

select count(*) from テーブル名 group by 列名;
select sum(列名) from テーブル名 group by 列名;

※where とgroup byを併用する場合には where ⇒ group byの順番で書くこと

select count(*) from テーブル名 where 列名 group by 列名;

データ型

SQLiteで利用できるデータ型はこちら。
f:id:Elsammit:20200619210631p:plain


mysqlpostgresqlの場合にはさらにデータ型用意されていたりします。

最後に

初歩的な部分をまとめてみました。
初歩であっても結構調べて書いてしまった。。。削除とか使用頻度低いので完全に忘れています。。。
おそらく今後も忘れると思うので、困ったら見返すことにしますww。