しいしせねっと

SQL全般の入門

[しいしせねっと]
ここは書きかけのメモです・・・。

データベースって何っすか?

最初はSQLって何、データベースって何、JDBCって何するの? でした。
プログラムしか作ってなかったので、どういうものかなぁ・・・と思っていろいろ調べてみました。
最初に読んだのって何だったかな・・・。
で、だいたいデータベースはリレーショナルなんだということはわかってきましたが、SQLっていうのはもちろん知りませんから、JavaからJDBC使ってどうやって使えば何が出来るんだろ・・・って全然わかりませんでした。
OODBとかOORDBとかいうのも、最初に知ってしまったので、また余計にこんがらがってたんですが。
表が作れます。会員データなどを管理するのが便利ね。がデータベースです。
C言語の構造体と同じようなもの、というのはオブジェクト指向のときと同じようです。では何が違うんだ?です。
JDBCの本も買って読んでみたのはこのころかな? 読んでも当然わかりません(^^;
また、表計算のようなものとの違いもよく分かっていなかったりします。
プログラミング言語でもないんでしょ?でSQLのことを調べてみることになったんだっけかな?
データベースとプログラミング言語の間に、SQLという別の言語があることがわかります。
こいつは、forループとか、そういうことはできません。単に、C言語の関数にまとまっててもいいんじゃないの?と最初は思ってました。
とりあえず複雑です。C言語やJavaの中で、コマンドプロンプト相手のようなコマンドをまた別に書かないと行けないんですから。
で、そのコマンドとかスクリプトが実行できることがわかって、PostgreSQLもとりあえず入れてみるかで使ってなかったものを、調べてみたりです。
psqlコマンドもとりあえず使えるようになりました。(本で調べました。)
このときもまだ、プログラム言語との関係がぼんやりとしかわかりません。
テーブルを作ってselect で出てくるのはわかりました。でもテキストで出てきます。バイナリは使えないのか?という感想でした(^^;
また、行と列があるわけですが、これどうやって見分けるの・・・と、psqlでだらりと表示されるテキストをみて思ったものです。
JDBCだと、こうなるんだなとわかったのはもう少しあとになります。
それまでにも、仕事でJDBC使う部分だけのプログラムは組んだことがありましたが、何も知らずに作ってました。(^^;
で、次に試したのは、Javaからのアクセスかな?それまでにJDBCでどうやって使うかは、調べましたよ。いろいろ読んで、やっと納得。
他にも何か調べてたかもしれないけど(^^;

で、各地でデータベースを使う必要が出てきた時かな。
postgresqlのJDBCドライバを探します。日本語対応のものがあるようです。でも古いバージョンにしか対応してないやん。
というわけで、ここでJDBCドライバを日本語対応にしてしまいます。最初のEUC_JP対応は、JDBCドライバのソースコードだけ見て作ってしまいましたけど、あとからいろんなのを参考にしましたよ。(^^;
Unicodeも使えるやん、JavaならUNICODEじゃ、と思ってUnicode DBにも対応しましたが、psql がついてきてくれません出した(T-T)

というわけで、データベースはただの表です。表とプログラムの間でデータを操作するのがSQLです。

いきなり飛んで

なにがしたいのよ? の書式

テーブルを作る

create table テーブル名 (列名 型, ...);

キー付きにする

create table テーブル名 (列名 型, ... [primary key (列名,...)]);
(PostgreSQLでは alter でキー属性の付加はできないらしい?)

データを追加する

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

更新する

update table set col = expression [, ...] [FROM fromlist ] [ WHERE condition ]

データを削除する

delete from テーブル名

テーブルを削除する

drop table テーブル名

列の修正

alter table PostgreSQLではちょっとしか使えない

Attribute (列名) を変更する

ん?
alter table table名 rename column old to new;

で、検索する

select 列名 from テーブル名 where 条件

whereで使えるもの

列名 LIKE '%xxx'

並べ替え

order by カラム名 [desc]
descを付けると逆順ソート

外部キーってなによ・・・

まだわかりません