ホームページ >バックエンド開発 >PHPチュートリアル >PHP と MySQL の学習ノート 9: Web データベースの作成

PHP と MySQL の学習ノート 9: Web データベースの作成

WBOY
WBOYオリジナル
2016-06-20 12:36:45841ブラウズ

1. MySQL サービスをサーバーにデプロイする際の基本的な手順と注意点

1) MySQL のインストール (コマンドのインストール、インストールパッケージのインストールなど)

2) MySQL プログラムを実行するために、独立したオペレーティング システムのユーザー権限が 1 つ必要かどうかを検討してください。

3) パス設定

4) root パスワード (付録 A: root パスワードがないとシステムは安全ではありません)

5) 匿名ユーザーを削除し、使用するデータベースのみをテストします

6) MySQL サーバーを起動し、自動的に実行されるように設定します。


2. MySQL コマンドラインまたは他のターミナルの使用に関する注意事項

1) MySQL コンソールのコマンドラインで、各コマンドの間はセミコロンで区切ります。 (;)。セミコロンは MySQL にこのコマンドを実行するように指示します。セミコロンが欠落している場合、MySQL はコマンドを実行しません。

セミコロンを省略すると、コマンドの途中に新しい行が追加される可能性があります。 MySQL では、-> に似た矢印である永続化シンボル (

mysql> grant select

        ->

mysql> Grant select

->

この記号は、Enter キーを押すたびにこれらのプロンプトが表示され、入力するまで終了しません。セミコロン。

PS: この問題は初心者にとって見落としがちですが、私も最初に始めたときはとてもかわいく感じました。


2) SQL ステートメントでは大文字と小文字が区別されませんが、データベース名とテーブル名では大文字と小文字が区別されます。

3. MySQL にログインします

マシンのコマンドラインで、mysql プログラムを呼び出します

mysql -h hostname -u username -p

1) ローカルで実行します。無視できます。 -h ホスト名

2) -u はデータベースのユーザー名に接続するためにのみ使用されます。指定しない場合、デフォルトはそのままです。オペレーティング システムへのログインに使用されるユーザー名。


3) -p コマンド オプションは、サーバーへの接続にパスワードを使用するように指示するために使用されます。ログインに使用されるユーザー名にパスワードがない場合は、このオプションを無視できます。さらに、このコマンドラインにパスワードを含める必要はありません。MySQL サーバーがパスワードを要求します。実際、そうしない方が良いのです。コマンド ラインにパスワードを入力すると、パスワードは通常のテキスト (クリア テキスト) として画面に表示されます。

4. 基本コマンド


データベース dbname ; データベースの作成

mysql -D dbname -h hostname -u username -p also


データベースを直接指定できます。ログイン後に現在のデータベースを簡単に選択または切り替えることができます。

データベースのリストを表示します (現在のログイン アカウントの権限内のデータベースのみが表示されます)

データベース テーブルを表示します。 >

description tablename ; 特定のテーブルの詳細を表示すると、データベースの作成時に提供された情報が表示されます。

5. 権限

注: Web データベースを確立したい場合は、Web サイト アプリケーションごとに個別のユーザーを作成するのが最善です。権限。

「最小特権の原則」を再度強調します。ユーザー (またはプロセス) は、割り当てられたタスクを実行できる最低レベルの権限を持っている必要があります。

6. MySQL 権限システム

1) GRANT コマンドと REVOKE コマンドは、それぞれ MySQL ユーザー権限の付与と取り消しに使用されます。これらの権限は 4 つに分かれています。レベル:

グローバル;

テーブル;

列。

GRANT コマンドは、コマンドを作成し、対応する権限を付与するためによく使用されます。一般的な形式は次のとおりです:

GRANT  privileges  [columns]

ON  item

TO user_name  [IDENTIFIED BY 'password']

[REQUIRE  ssl_options ]

[WITH [GRANT OPTION | limit_options] ]

GRANT 権限[列] ON 項目 TO user_name [IDENTIFIED BY 'password'] [REQUIRE ssl_options] [WITH [GRANT OPTION | limit_options] ]


角括弧 [] 内の句はオプションであり、上記の例には多くのプレースホルダーがあります。いくつかの説明:

>最初のプレースホルダー権限は、カンマで区切られた一連の権限である必要があります。

> 列はオプションであり、各列の権限を指定するために使用されます (単一の列の名前、またはカンマで区切られた一連の列名を使用します)。

>プレースホルダー項目は、新しい権限が適用されるデータベースまたはテーブルです。 *.* が指定されている場合、権限はすべてのデータベースに適用されます。これをグローバル権限の付与といいます。 特定のデータベースを使用しない場合は、* を指定してグローバル権限を付与することもできます。データベース内のすべてのテーブルを dbname.* の形式で指定し、単一のテーブルを dbname.tablename の形式で指定するのが一般的です。

>user_name はデータベース内のユーザーであり、ホスト名を含めることで異なるドメインのユーザーを区別するために使用できます。 ss @localhost や ss@somewhere.com など、この機能を使用してユーザーがローカル マシンに接続する場所を指定したり、特定の場所でアクセスできるテーブルやデータベースを指定したりすることもできます。セキュリティを向上させます。

>REQUIRE 句を使用すると、ユーザーが暗号化されたソケットまたは他の SSL オプションを介して接続する必要があるかどうかを指定できます。

>WITH GRANT OPTION オプションを指定すると、指定されたユーザーが自分が所有するアクセス許可を他のユーザーに付与できることを意味します。

WITH 句を指定すると、ユーザーごとの 1 時間あたりのクエリ、更新、および接続の数を指定することもできます。 (これらの句は、共有システム上の個々のユーザーに負荷を制限する場合に役立ちます)

例: MAX_QUERIES_PER_HOUR n ; MAX_UPDATES_PER_HOUR n ; MAX_CONNECTIONS_PER_HOUR n ;


2 ) 権限は、mysql という名前の 5 つのシステム テーブル (mysql.user、mysql.db、mysql.host、mysql.tables_priv、および mysql.columns_priv) に保存されます。 (これらのテーブルを直接変更すると、相互に置き換えて GRANT コマンドを使用するのと同じ効果があります)

3) 権限のタイプとカテゴリ

には、基本的に 3 つのタイプがあります。 MySQL の権限。一般ユーザーに付与される権限、管理者に付与される権限、およびいくつかの特定の権限に適しています。


表 9-1 の権限に加えて、現在使用されていない 2 つの権限、REFERENCES 権限と EXECUTE 権限があります。

ほとんどの場合、追加、削除、変更、クエリの一般的な基本機能のみが必要です。

挿入 (SELECT)、削除 (DELETE)、更新 (UPDATE)、選択 ( SELECT)

例:

'book123456' で識別される bookitor に、books.* の選択、挿入、削除、更新を許可します。 🎜>


GRANT に対応するコマンドは REVOKE で、その使用法は同様です:


REVOKE


REVOKE 権限 [(columns )]

ON 項目

FROM user_name

REVOKE  privileges  [(columns)]

ON   item

FROM  user_name  

WITH GRANT OPTION が指定されている場合は、次のように取り消すことができます。

REVOKE ALL PRIVILEGES, GRANT

FROM user_name


例:



注: MySQL に付属の監視プログラムを終了するには、quit コマンドを入力するのが最善です。作成するだけです。Web ユーザーとしてログインし、すべてが適切に動作していることをテストします。 GRANT ステートメントが実行されている場合 (権限はフラッシュされる必要があります)、ログインしようとすると拒否されます。これは、通常、インストール プロセス中に匿名アカウントが削除されなかったことが原因です。


7. データベース テーブルの作成

CREATE TABLE tablename ( columns)

注: MySQL は複数のテーブル タイプとストレージ エンジンを提供します。トランザクションセーフなタイプがいくつか含まれています。

説明例:



注 1: 各 MySQL テーブルは主キーを 1 つだけ持つことができますが、この主キーは 1 つのフィールドまたは複数のフィールドで構成できます。通常、テキストなどの型は主キーとして設定できず、インデックスも作成できません (この機能は選択したデータ エンジンに関連しています)

注 2: char(50)、このデータ型は名前に 50 を割り当てます。通常、名前はそれほど長くありませんが、MySQL は空の部分をスペースで埋めます。または、必要に応じてストレージ スペース (プラス 1 バイト) を割り当てることができ、占有スペースが少ない varchar タイプを使用することもできます。データの方が速いです。

注 3: NULL ではありません。これは、さらなる説明が必要な小さな最適化措置です。インターネットからの説明は次のとおりです。

为什么mysql字段要设置为not null?
现在 大师来跟大家解释解释

首先 我们创建一个表 asd字段为null,qwe字段为not null,都无默认值

CREATETABLE`tb` ( `id`INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `asd`VARCHAR(45) NULL, `qwe`VARCHAR(45) NOT NULL, PRIMARYKEY (`idtb`))

然后

insert tb(asd) values('123123123'); insert tb(qwe) values('123123123');

现在 我们来查看这个表



可以看出
not null 的qwe字段 未设置的时候是个空字符串
null 的asd字段 未设置的时候是个NULL

以上结果 大家应该都可以想像到的。
那么为什么要设置NOT NULL呢
因为 MYSQL不是PHP,NULL不等于空字符串
比如我们查询qwe为空的

select * from tb where qwe=''

可以找到



但是

select * from tb where asd=''

则什么都找不到

なぜ mysql フィールドを null 以外に設定する必要があるのですか? ここでマスターが説明します まず、asd フィールドを null としてテーブルを作成し、 qwe フィールドは null ではなく、デフォルト値はありません 次に 次に、このテーブルを見てみましょう ではないことがわかります。 null の qwe フィールドが設定されていない場合、空の文字列です。 null の asd フィールドが設定されていない場合、NULL です。 誰もが想像できるはずです。上記の結果。 では、なぜ NOT NULL を設定するのでしょうか? MYSQL は PHP ではないため、NULL は空の文字列と等しくありません たとえば、空の をクエリすると、次のことがわかります。 しかし は何も見つかりません

8. インデックスを作成する基本的な方法

データベースのパフォーマンスの問題は通常、データベースにインデックスが作成されていない場合に発生します (主キーやインデックスのないテーブルを作成することも可能です)

CREATE INDEX ステートメントの一般的な形式は次のとおりです:

CREATE [UNIQUE | FULLTEXT] INDEX インデックス名

ON テーブル名 (インデックス列名 [ (長さ) ] [ASC | DESC], .. . )

注: FULLTEXT インデックスは、テキスト フィールドのインデックス付けに使用されます。オプションの長さフィールドを使用すると、フィールドの最初の長さの文字にインデックスを付けることを指定できます。また、インデックスを昇順で指定することもできます。または降順。


9. MySQL の識別子を理解する

MySQL では、

データベース、テーブル、カラム、インデックスの 5 種類の識別子が提供されています。および Alias

注 1: MySQL のデータベースは特定のファイル構造を持つディレクトリにマッピングされ、テーブルはファイルにマッピングされます。これは、それらに与えられる名前に直接影響します。また、オペレーティング システムがディレクトリとファイルの間で大文字と小文字を区別する場合、それらの名前の大文字と小文字にも影響を与える可能性があります。

(データを含むディレクトリとファイルの場所は、構成で設定する必要があります。mysqladmin コマンドを使用して、システム内のそれらの場所を表示できます。Windows の bin ディレクトリには、プログラム mysqladmin.exe があります)

注 2: ASCII(0) (null)、ASCII(255) (BLANK FF) または引用符文字 (これら 3 文字) は MySQL 識別子では使用できません



10. カラムのデータ型

MySQL には、数値、日付と時刻、文字列の 3 つの基本的なカラム データ型があります。各タイプには多くのサブカテゴリが含まれており、これら 3 つのタイプには異なる記憶領域があります。一般に、列のデータ型を選択するときは、データを満たすことができる最小のタイプを選択するのが基本原則です。

注: 多くのデータ型では、この型の列を作成するときに最大表示長を指定できます。これは、次の表の M で表されます。M の最大値は 255 です。

1) 数値型

数値型は整数と浮動小数点数に分かれます

注 1: 整数データも指定可能です。符号なしタイプとして。

注 2: すべての数値型に対して ZEROFILL 属性を指定でき、残りの部分は先頭の 0 で埋められます。フィールドを ZEROFILL として指定すると、そのフィールドは自動的に UNSIGNED 数値型になります。




2) 日付と時刻のタイプ

MySQL を使用した日付と時刻時刻タイプ。データは文字列または数値形式で入力できます。手動で設定しない場合、特定の行の TIMESTAMP 列は、行が最後に変更された時刻に設定されます。これは、トランザクション レコードにとって意味があります。



3) 文字列型

カテゴリ 1: 通常の文字列、つまり、CHAR (を含む短い短いテキスト)固定長)、VARCHAR(可変長)型。

注: データ サイズがどんなに大きくても、CHAR 型のカラムは余分な空白をスペースで埋めます。CHAR 型のデータを取得し、VARCHAR 型のデータを格納する場合、MySQL は余分な空白をフィルタリングします。

カテゴリ 2: TEXT と BLOB

は、それぞれ長いテキストまたはバイナリ データに適しています。 BLOB(バイナリ ラージ オブジェクト)とはバイナリ データの略で、画像や音声データなどあらゆるデータをサポートします。

カテゴリ 3: SET および ENUM

SET タイプは、列の値が特定のセット内の指定された値から取得される必要があり、複数の値を含めることができることを指定するために使用されます。セットから。コレクションの最大サイズは 64 要素です。

ENUM は SET と似た列挙型ですが、このタイプの列はリストされた値の 1 つまたは NULL のみを保持できる点が異なります。列挙型の要素の最大数は 65535 です。



この章の終わり:

なぜそんなに注意深く勉強するのかと聞かれたら、それは、ただ勉強したいからです。それをするためにそれについて明確にしてください。

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