今回は、SQLについて備忘録書いていきます。
まだまだ初心者であるが故に?コマンドの使い方やデータ型とか基本的な部分から調べることが多いため、一通り書いて見返せるようにしたいと思います!!
※主にSQLiteでのコマンドやデータ型についてまとめていきます。
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は列削除に対応していないです。
mysqlやpostgresqlであればこちらで削除できます。
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 列名;
最後に
初歩的な部分をまとめてみました。
初歩であっても結構調べて書いてしまった。。。削除とか使用頻度低いので完全に忘れています。。。
おそらく今後も忘れると思うので、困ったら見返すことにしますww。