【関連する学習の推奨事項: mysql チュートリアル(ビデオ)】
DCL は比較的単純で、主にデータベースへのアクセス許可の付与または取り消し、およびデータベース トランザクションのコミットとロールバックに使用されます。
権限の付与を例に挙げて、新しいデータベースを作成した後、特定のユーザーにデータベースへのアクセス権と操作権限を付与したいとします(通常は実稼働環境で、セキュリティ上の理由から、いいえ (root ユーザーを通じてデータベースを操作します)、このためには、最初に test
などの特定のユーザーを作成する必要があります。一般に、DCL などの制御レベルの SQL ステートメントが実行されます。コマンドラインで、MySQL Docker コンテナに入ってデータベースに接続し、CREATE USER
ステートメントで新しい test
ユーザーを作成し、パスワードを test に設定します。
:
作成が完了すると、mysql.user
データ テーブルにこのユーザーが表示されます:
##Host フィールドは
% であり、
test ユーザーが任意のホストから MySQL サーバーに接続できることを意味します。
GRANT ステートメントを実行できます。 Grant
test ユーザーは
test データベースに対するすべての操作権限を持っています:
を実行する必要があります。フラッシュ権限; 権限を更新すると、
test データベースの権限リストにこのユーザーが表示されるようになります。現在のログイン状態、
test
test データベースのみが表示されます。これは、他のデータベースに対する操作権限がないためです。
権限を取り消すには、root として実行するか、権限リストからこのユーザーを削除するか、コマンドラインの
REVOKE
revoke all privideges on test.* from 'test'@'%'; flush privileges;
// 授予权限 grant select on test.* to 'user1'@'localhost'; /*给予查询权限*/ grant insert on test.* to 'user1'@'localhost'; /*添加插入权限*/ grant delete on test.* to 'user1'@'localhost'; /*添加删除权限*/ grant update on test.* to 'user1'@'localhost'; /*添加权限*/ // 收回权限 revoke select on test.* from 'jack'@'localhost'; revoke insert on test.* from 'jack'@'localhost'; revoke delete on test.* from 'jack'@'localhost'; revoke update on test.* from 'jack'@'localhost';
トランザクションの送信/ロールバック データベーストランザクション(Database Transaction)とは、単一の論理的な単位として実行される一連の操作を指します。完全に実行されたか、まったく実行されなかった作業 (データベースの追加、削除、変更、およびクエリに関連する操作 (1 つまたは複数の SQL ステートメントを含む)) のいずれか。
単一の SQL ステートメントの場合、データベース システムはそれをトランザクションとして自動的に実行します。このトランザクションは
暗黙的トランザクション複数の SQL ステートメントをトランザクションとして手動で実行するには、
BEGINを使用してトランザクションを開き、COMMIT を使用してトランザクションを送信します。このトランザクションは # # と呼ばれます。 #明示的なトランザクション
。トランザクションの実行中にエラーまたは例外が発生した場合、ROLLBACK ステートメントを使用してトランザクションをロールバックできます。
コマンド ラインでのデータベース トランザクションの操作を簡単に示します。
トランザクションは
ステートメントを通じて開始しますが、実行中 複数のステートメントの後、トランザクションは
COMMITを通じて送信されませんでした。これらの SQL ステートメントの実行をテストし、[参照] パネルに入って表示しました。新しいレコードが挿入されていないことがわかりました:
上記の SQL シーケンスの後に
ROLLBACK
を追加してトランザクションをロールバックしても、結果は同じになります:
BEGIN; INSERT INTO post (`title`, `content, `created_at`) VALUES ('这是一篇测试文章2', '测试内容哈哈哈', '2020-05-26 13:00:00'); INSERT INTO post (`title`, `content, `created_at`) VALUES ('这是一篇测试文章3', '测试内容哈哈哈', '2020-05-26 13:30:00'); ROLLBACK;
そして、最後に COMMIT
ステートメントを追加すると、変更をスムーズに送信できます。一般的な SQL クエリと操作ステートメントに加えて、SQL には、データ クエリ中に結果の簡単で便利な統計を容易にするいくつかの組み込み集計関数もあります。ここでは、count
、sum
、avg
、max
、min
といういくつかの一般的な関数を紹介します。
count
この関数は、クエリ結果の総数をカウントするために使用できます。この関数は通常、ページング クエリを実行するときに使用されます。結果を直接表示しやすくするために、コマンド ラインで次のように示します。
フィールドをクエリするときに読みやすさを向上させるために、 を使用して指定できます。 as
フィールド エイリアス。ここでは、post
テーブルには合計 3 つのレコードがあるため、クエリ結果は 3
になります。
sum
は、統計クエリ結果の特定のフィールドを合計するために使用できるため、数値タイプのフィールドにのみ使用できます。ここでは ## を使用します。 #post 新しいフィールド
views がテーブルに追加され、対応する記事レコードのビュー数を保存するために使用されます。
post テーブル構造で、
content フィールドの後にフィールドを追加することを選択し、[実行] をクリックします。フィールド名は
views
UNSIGNED INT に設定され、同時にデフォルト値は ## に設定されます。 #0
. 対応する SQL ステートメントを渡すことができます プレビュー関数ビュー:#[保存] をクリックしてこのフィールドを作成すると、テーブルに表示されます。構造:
views
にはデフォルト値があるため、現在すべてのレコードの
views値は 0 です:
に「編集」関数を渡して、対応するシミュレーション値に設定できます。
##次に、結果を合計します。 sum
関数:##AVG
avg
は、フィールドの平均値をカウントするために使用できます。クエリ結果と
同じことが数値型フィールドにも当てはまります。たとえば、すべての記事の平均ビュー数をカウントするために使用できます:
割り切れない数値の場合、平均値は小数点以下 4 桁まで正確になります。 MAX
は、クエリ結果の数値フィールドの最大値を取得するために使用できます。たとえば、最大数の記事情報を取得します。
utf8mb4 に設定できます。 utf8mb4;
という名前を付けると、正常に動作します。 中国語と絵文字の絵文字が表示されます。
さらに、ここでは subquery
の概念も使用されており、あるクエリの結果を別のクエリの条件として使用します。ここでは、ビューの最大数をサブクエリの結果としての親 クエリをクエリ条件として使用し、対応する記事情報を取得します。MIN
max
min 関数は、クエリ結果の数値型フィールドの最小値を取得するために使用されます。参照番号が最も小さい記事情報を取得するには、次のようにすることができます。
概要それでは、基本的なクエリを簡単に紹介します。 MySQL データベースの操作と統計 ここで、MySQL とその操作についてはすでに基本を理解していると思います。次のチュートリアルでは、PHP で MySQL データベースに接続し、ページング、グループ化、接続クエリ、関連付け関係、インデックス設定などのより複雑な操作について、追加、削除、変更、クエリの操作を実行する方法を紹介します。とアプリケーションについては、後続のチュートリアルで説明します。具体的な例を使って説明します。
この記事は https://xueyuanjun.com/post/21656
以上がMySQLの基本的な使い方(2) DCL文と集計関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。