ホームページ  >  記事  >  データベース  >  MySQL について学ぶべき 6 つのこと

MySQL について学ぶべき 6 つのこと

巴扎黑
巴扎黑オリジナル
2017-05-01 13:46:29995ブラウズ

MySQL は、そのコンパクトさと効率的な操作により、データベース アプリケーションで使用されることが増えています。 LAMP (または WAMP) 開発の重要な部分として、MySQL は PHP 開発者の注目と慎重な研究に値します。

1. コマンドの各行はセミコロン (;) で終わります

MySQL について最初に覚えておく必要があるのは、コマンドの各行がセミコロン (;) で終わることですが、MySQL の行を PHP コードに挿入する場合は、次のセミコロンを省略することをお勧めします。たとえば、

mysql_query ("INSERT INTO tablename (first_name, last_name) VALUES ('$first_name', $last_name')");

。 これは、PHP もセミコロンで行を終了するため、余分なセミコロンは PHP 構文アナライザーを混乱させる場合があるため、省略することをお勧めします。この場合、セミコロンは省略されていますが、MySQL コマンドの実行時に PHP が自動的に追加します。

2. 連想配列を使用してクエリ結果にアクセスします

以下の例を見てください:

$connection = mysql_connect("localhost", "albert", "shhh");  
mysql_select_db("winestore", $connection);  
$result = mysql_query("SELECT cust_id, surname,  
firstname FROM customer", $connection);  

while ($row = mysql_fetch_array($result))  
{  
echo "ID:t{$row["cust_id"]}n";  
echo "Surnamet{$row["surname"]}n";  
echo "First name:t{$row["firstname"]}nn";  
}

関数 mysql_fetch_array() はクエリ結果の行を配列に入れます。この配列は 2 つの方法で同時に参照できます。たとえば、cust_id は次の 2 つの方法で同時に参照できます。 $row["cust_id。 "] または $row[0]。明らかに、前者の方が後者よりもはるかに読みやすいです。

複数テーブルの連続クエリでは、2 つの列が同じ名前を持つ場合、それらをエイリアスで区切ることが最善です:

SELECT winery.name AS wname, region.name AS rname, FROM winery, region WHERE winery.region_id = region.region_id;  

列名的引用为:$row["wname"] 和 $row["rname"]

テーブル名と列名を指定するときは、列名のみを引用符で囲みます:

SELECT winery.region_id   
FROM winery   
列名的引用为: $row["region_id"]

集計関数の参照は参照名:

SELECT count(*) 
FROM customer; 
列名的引用为: $row["count(*)"]

3. TEXT、DATE、SET データ型

MySQL データ テーブルのフィールドにはデータ型が定義されている必要があります。約 25 のオプションがありますが、そのほとんどは簡単で、これ以上の説明は必要ありません。しかし、言及しなければならないことがいくつかあります。

一部の書籍ではそう記載されている場合がありますが、TEXT はデータ型ではありません。実際には「LONG VARCHAR」または「MEDIUMTEXT」である必要があります。

DATE データ型の形式は YYYY-MM-DD です (例: 1999-12-08)。 date 関数を使用すると、現在のシステム時刻を date("Y-m-d") の形式で簡単に取得できます。また、DATA データ型間で減算して、時間の差を日数で取得できます:

$age = ($current_date - $birthdate);

セット SET は、列挙型 ENUM に似ていますが、SET は複数の値を保存できるのに対し、ENUM は 1 つの値しか保存できない点が異なります。さらに、SET タイプは最大 64 個の事前定義値のみを持つことができますが、ENUM タイプは最大 65,535 個の事前定義値を処理できます。 64 を超える値を持つコレクションが必要な場合はどうすればよいでしょうか? 現時点では、この問題を一緒に解決するために複数のコレクションを定義する必要があります。

4. mysql_unbuffered_query() を使用して高速スクリプトを開発します

この関数は、mysql_query() 関数の代わりに使用できます。主な違いは、mysql_unbuffered_query() がクエリの実行後、データベースを待機したりロックしたりせずにすぐに戻ることです。 ただし、出力結果セットのサイズが不明なため、返された行数を mysql_num_rows() 関数でチェックすることはできません。

5. ワイルドカード

SQL には、「*」と「%」の 2 種類のワイルドカード文字があります。さまざまな状況で使用されます。例: データベースのすべての内容を表示したい場合は、次のようにクエリできます:

SELECT * FROM dbname WHERE USER_ID LIKE '%';

ここでは両方のワイルドカードが使用されています。これらは同じことを意味し、どちらも任意の文字列に一致しますが、異なるコンテキストで使用されます。 「 * 」はフィールド名と一致するために使用され、「 % 」はフィールド値と一致するために使用されます。もう 1 つ気づきにくいのは、LIKE キーワードではワイルドカード「%」を使用する必要があることです。 アンダースコア「_」というワイルドカード文字もあります。これは上記とは異なる意味を持ち、任意の 1 文字と一致するために使用されます。

6. NOT NULL および空のレコード

ユーザーが何も入力せずに送信ボタンを押した場合はどうなりますか?本当に値が必要な場合は、クライアント側スクリプトまたはサーバー側スクリプトを使用してデータ検証を行うことができます。ただし、データベースでは、一部のフィールドは空白のままにすることも、何も入力することもできません。このようなレコードの場合、MySQL は値 NULL を挿入します。これがデフォルトの操作です。

(このフィールドを作成または変更するときに) フィールド定義で NOT NULL を宣言すると、MySQL はこのフィールドを空のままにし、何も入力しません。 ENUM 列挙型のフィールドの場合、NOT NULL を宣言すると、MySQL は列挙セットの最初の値をフィールドに挿入します。つまり、MySQL は、列挙セットの最初の値をこの列挙型のデフォルト値として使用します。

NULL レコードと空のレコードにはいくつかの違いがあります。 % ワイルドカード文字は空のレコードと一致しますが、NULL レコードと一致することはできません。ある時点で、この区別が予期せぬ結果をもたらす可能性があります。私の経験によると、どのフィールドも NOT NULL と宣言する必要があります。このようにして、多くの SELECT クエリ ステートメントを正常に実行できます。 NULL を検索する場合は、「IS」キーワードを使用する必要があり、LIKE が正しく機能しないことに注意してください。 最後に言及すべきことは、新しいフィールドを追加または変更する前にデータベースにすでにいくつかのレコードがある場合、元のレコードに新しく追加されたフィールドの値は NULL または null になる可能性があるということです。これは MySQL のバグとみなされるため、この場合、SELECT クエリを使用する場合は特に注意する必要があります。

以上がMySQL について学ぶべき 6 つのことの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。