CakePHP:find関数;nullってなに?<IS NULL>と<NOT NULL>の書き方

初心者にはなかなか理解しづらい「null」。

そもそも「null」とは、

「NULLは特殊な値です.NULLは 「列名 = NULL」 や 「列名 <> NULL」 といった通常の比較演算子を用いた方法では検索することができません. NULLを対象として検索するにはIS NULL演算子,もしくはIS NOT NULL演算子を使用します.」

そして、

NULL値はデータが存在しないことを表す値です。大文字と小文字のどちらも使用できます。

NULLはデータが存在しないということなので、文字列における空文字”や数値における0とは異なります。

プログラムで使う変数は宣言をした時に領域が確保されます。

そのあと、変数が持っているアドレスが0.0.0.0の状態がnullです。

あ。これはちょっと広義的になってしまうので・・・・説明はここまでで・・・・

現在、CakePHPでプログラミングをしているので、

今回は

CakePHPのfind条件に「null」「not null」を使う方法を記述しておきます。

上記で記述したとおり、「NULLを対象として検索するにはIS NULL演算子,もしくはIS NOT NULL演算子」を使用すると書きました。これはそれぞれ書き方が違います。

<IS NULL>の場合

SQLでいうところの、IS NULL の方法。
単純に、 conditions に配列で指定するだけです。

これで WHERE Model.id IS NULL というSQLとなります。

<NOT NULL>の場合

NOT NULL の場合は、ちょっとだけひねって、”NOT”の2次元配列で条件を作成。

カラムにNULL値を持つ事が出来ないように設定する方法になり、

これで、WHERE Model.id IS NOT NULL というSQLとなります。

とりあえずここまでにしますのが、

あと基本的に書き方が同じなfind条件での「IN」、「NOT IN」演算子の使い方については次回にしたいと思います。

 

それでは。。

第二回 PostgreSQL ~SELECT文~

SELECT文は、データベースからデータを取り出すための構文です。

SELECT文では、単にデータを取り出すだけでなく、さまざまなキーワードを組み合わせて取り出すデータを制限したり、条件を付けたりすることができます。

 

SELECT文には、いくつもキーワードがありますが、今回は以下の3つをしっかり覚えてください。

 

  • 「どの項目(列)のデータを検索するか」を指定する:SELECT
  • 「どの表から検索するか」を指定する:FROM
  • 「どのような条件で行を検索するか」を指定する:WHERE

表を指定してデータを取得しよう

 

表のすべての列データを指定するには、SELECTの後に「*(アスタリスク)」を指定します。構文はこちらになります。

SELECT  * ← 全てのデータの列を (SELECT句)

FROM  * ← どの表から (FROM句)

上記のようにSELECTキーワードに続いて列名を指定する部分を「SELECT句」、FROMで表名を指定する部分を「FROM句」と呼びます。

select * from 列名 ;

SELECT文の最後に指定している「;(セミコロン)」は、「ここで1つのSQL文が終わり」ということを示す記号です。重要ですので覚えておきましょう。

また、

select 列名,列名・・・・ ←(どの列のデータを)

from  表明 ←(どの表から)

*SELECTやFROMなどのキーワードや、表名、列名は、大文字、小文字どちらで書いても問題ありません。また、SELECT文が長くなるようであれば、途中で改行しても問題ありません。実際に仕事でSQL文を書くときは、ルールを決めて書き方を統一することをお勧めします。構文の書き方を統一しなければ、処理性能が低下してしまう可能性があるからです。

条件を指定して、特定の行データを検索しよう

全てのデータから、特定の行だけ取り出したいときは、「WHERE句」を使います。

 

 

第一回PostgreSQL

PostgreSQLとは、データベースを管理するために使われるリレーショナルデータベース(RDB)管理システムです。また、オープンソースなため、世界中で使われているRDBです。

初心者が覚えるべき最低限の用語~概念を理解しよう~

概念:スキーマ:プログラミング手法における論理構造や物理構造を定めた仕様です。

似ているものに[mysql]がありますが、

[mysql]は

データベース → テーブル

[PostgreSQL]は

データベース → [スキーマ] → テーブル

と論理構造が違います。

select文とかcreate,where,delete文等は同じです。

しかし、[PostgreSQL]はスキーマ名を記入する必要があり、ドットでスキーマ名とテーブル名を記入しなければいけません。

例)

mysql
SELECT * FROM db_table;

【postgres】
SELECT * FROM schema_name.table_name;

まずはまずはまずは!、これだけ覚えておけば大丈夫でしょう。

次回はいくつかのコマンドを紹介したいと思います。