##ANALYZE
Analyze Table ステートメントを通じてインデックスは修復できます。 「 | SHOW INDEX FROM table name
」を使用して、テーブル内のインデックスのステータスを表示します。フィールド内の異なる値の数がテーブル内の CARDINALITY の数よりはるかに大きい場合、インデックスは基本的に効果はありません。この場合、「ANALYZE TABLE テーブル名 」を使用するとインデックスを修復できます。もう一度「SHOW INDEX FROM テーブル名 」を使用すると、CARDINALITY インデックスが通常の状態に戻ることを確認できます
| ##BETWEEN
「
SELECT * FROM USER WHERE CREATE BETWEEN '2020-11-20' AND '2020」のように、WHERE の後に時間または数値範囲のクエリを使用します。 -11-30' | ;" クエリは 20 日から 30 日までのデータで、時刻型が DATETIME の場合、クエリ範囲は 00:00:00 です。たとえば、上記のクエリ ステートメントの場合、CREATE_TIME の場合
DATETIMEタイプで、クエリ範囲は「2020-11-20 00:00:00 ~ 2020-11-30 00:00:00」 | です。 CALL
は、次のようなストアド プロシージャを呼び出すために使用されます。
CALL showUser() |
| CASCADE
は、設定後、マスターテーブルが削除または更新されたときにスレーブテーブルも操作されます (例: "
CONSTRAINT 'ユーザー情報' FOREIGN KEY (USER_NAME) REFERENCES TASK.USER (NAME) ON DELETE CASCADE ON UPDATE) CASCADE | " を追加した後、ユーザー テーブルでユーザー名が変更されると、スレーブ テーブルのユーザー名も変更されます。
| CURRENT_DATE
は今日の日付を取得するために使用されます。たとえば、「
SELECT CURRENT_DATE | 」は今日の日付を返します
| CURRENT_TIME
は現在時刻を取得するために使用されますたとえば、「
SELECT CURRENT_TIME | 」は現在の時、分、秒を返します。
##DEFAULT CURRENT_TIMESTAMP |
time フィールドは、新しいデータを追加するときに現在時刻がデフォルトで挿入されることを意味します。フィールドを作成するとき: "
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
" |
ON UPDATE CURRENT_TIMESTAMP |
時間フィールドの作成時にこのコードを追加すると、データ変更時に現在時刻がデフォルトで同期されることになります。フィールド作成時: "
update_time timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP
” |
CURRENT_USER |
MYSQL
|
CURSOR |
のユーザー名を返しますmysql の宣言に使用されます。 のカーソルはストアド プロシージャで使用され、ポインタとして機能します。 使用法: "
DECLARE カーソル名 CURSOR FRO クエリ結果セット
" |
DECLARE |
は、ストアド プロシージャなどの複合ステートメントで変数を宣言するために使用されます。
SET 変数名 = 値
を使用して値を再割り当てできます。この例では、結果 1 は「test」です。 result 1 ( 2) It is "Test 1" |
DELAYED |
は、遅延挿入操作を使用するために使用されます。DELAYED で宣言されたステートメントを実行すると、データベースは最初にステータス情報を返した後、挿入操作がキューに入れられ、キューのデータを操作しない命令を待った後、キューの実行が開始されます。
は、データ テーブル内のフィールドの詳細な設計を表示するために使用されます。2 つのタイプがあります。 使用法: 1.
DESCRIBE テーブル名 | すべてのフィールドを表示します。2.は、フィールドを個別に表示するために使用されます。
DISTINCT |
重複データを削除し、重複排除されたデータのみを返すことができます。これはクエリの最初のフィールドである必要があり、特定のフィールドに一意のデータがいくつあるかをクエリするためによく使用されます。たとえば、SELECT COUNT(DISTINCT name) FROM user |
DISTINCTROW |
は、結合テーブル クエリの重複排除に使用され、関連付けをクエリできます。メインテーブル内 付録データには、SELECT DISTINCTROW user.id, untitled.friend_name FROM user INNER JOIN untitled ON user.id = untitled.friend_id WHERE user など、クエリされたメインテーブルに関連しないデータは含まれません。 .id = '1'; 関連付けられた無題テーブル内のユーザー ID と友人名をクエリできます。ただし、クエリされていないユーザーの友人は除外されます |
DROP |
データベースの削除:DROP DATABASE データベース名 、テーブルの削除:DROP TABLE テーブル名 、フィールドの削除:ALTER TABLE テーブルなど、主に構造の削除に使用されます。 name DROP field name |
DUAL |
仮想テーブルは mysql5.1 以降で使用できますが、FROM テーブルは ORACLE でのみ役立つように感じます。 ORACLE.name でクエリを使用するには、これが必要ですが、mysql にテーブル名がない場合、エラーは報告されません。たとえば、mysql では、SELECT 1 1 は問題を引き起こしませんが、ORACLE では、 , エラーが報告されます。この場合、SELECT 1 1 FROM DUAL を使用してください。公式ステートメント:DUAL は、すべての SELECT ステートメントに FROM またはその他の句が必要な場合の利便性を目的としています。 |
#EXISTS |
WHERE 以降の判定演算に使用され、返される結果はブール値になります。使用方法は、内部行に既存の行を代入することです。検証用のクエリです。内部クエリで 1 行以上のデータが返された場合、その行のデータが出力されます。逆も同様です。クエリにデータが存在しない場合、この行のデータは出力されません。例:SELECT * FROM user u WHERE EXISTS(SELECT * FROM untitled n WHERE n.friend_id=u.id) 返されるのは、untitled テーブルの friends フィールドです。ユーザー テーブルの場合、EXISTS キーワードの前に NOT を追加して、無関係なデータを返すこともできます。使用方法: | EXPLAIN SELECT * FROM user
|
#FULLTEXT Full など、SELECT の前に追加します。 -text インデックスは、クエリ速度を最適化するために使用されます。テーブルの作成時に | FULLTEXT(Field 1, Field 2)
を追加することも、テーブルの作成後に
ALTER を個別に追加することもできます。 TABLE テーブル名 ADD FULLTEXT INDEX インデックス名 (
フィールド名 | )
インデックスを追加するとき、テーブル エンジンは MyISAM を使用する必要があることに注意してください。そうでないとエラーが報告されます。使用されるテーブル タイプはFULLTEXT インデックスのサポート
GRANT はユーザー権限の操作に使用され、ユーザー権限を付与したり、ユーザー権限を削除したりできます。 : | CREATE USER 'testUser'@'host' IDENTIFIED BY '123456';
ユーザーの作成に使用され、
'testUser'@'host' の権限を表示;
ユーザー権限とその他の操作を表示します |
GROUP はグループ化操作に使用されます。 | GROUP BY フィールド名
グループ化操作の後にクエリされるフィールドは、GROUP BY の後に追加する必要があります。それ以外の場合は、エラーが報告されます。より古典的な使用法は次のとおりです。
SELECT 友人名 , COUNT(友人名) FROM 無題 GROUP BY 友人名
特定のタイプのデータ項目の数をクエリします |
#HAVING 集計で使用 次に、データをフィルターします。WHERE との違いは、WHERE は集計前にデータをフィルターし、COUNT、SUM などの集計関数を使用できないことです。HAVING は集計後にデータをフィルターします。例: SELECT friends_name , COUNT(friend_name) FROM untitled GROUP BY friends_name HAVING COUNT(friend_name) >1 | クエリは、friend_name が 1 より大きいデータ項目の数です
| HIGH_PRIORITY
この操作を高優先度の操作として宣言するために、SELECT および INSERT ステートメントに使用されます。データベースは、次のような操作を最初に実行します。 HIGH_PRIORITY * FROM user 同時に複数の操作がある場合、このステートメントが優先されます。 |
IGNORE |
は、バッチで挿入するときにエラー データを無視するためによく使用されます。たとえば、INSERT IGNORE INTO user (id,name,age) names(6,'pangqi', 25); 主キー ID がすでに存在する場合、エラーは報告されませんが、次の挿入操作が実行されます。 |
INNER |
が使用されます。内部接続クエリの場合です。ON 条件を設定すると、条件を満たすすべてのデータが表示されます。左結合と右結合との違いは、INNER にはフォーカスがないことです。MySQL は条件を満たすすべてのデータを検索します。また、INNER は mysql のデフォルトの接続方法であるため、SELECT * FROM user JOIN untitled ON user.id = untitled のように INNER キーワードを省略できます。 friends_id |
INTERVAL |
主に次のような時間間隔に使用されます:SELECT * FROM USER where create_time < NOW()-INTERVAL 4 DAY は 4 日前に作成されたデータを返します。または、DAY は時間、分、年、月などに置き換えることができ、次のようなデータの比較にも使用できます:SELECT INTERVAL(6,1,2) ,3,4,7,8,9,10) は、比較するときに、mysql がインデックス 0 のデータを使用して次のデータを比較するため、4 を返します。次のデータがインデックス 0 のデータより大きい場合、mysql は前のデータのインデックスを返します |
IS |
mysql のキーワードはIS NULL またはIS でのみ使用されますNOT NULL 例:SELECT * FROM USER where update_time IS NULL |
JOIN |
は、2 つのテーブルを接続するために使用されます。通常、メソッドは内部結合INNER JOIN と右結合RIGHT JOIN 、左接続LEFT JOIN |
KEY##です。 | #KEY はデータベースの物理構造であり、2 つのレベルの意味と機能があります: 1: 制約、2: 主キー
PRIMARY KEY (id),の宣言などのインデックスこれには一意の制約があり、インデックス |
KILL
| が自動的に追加されます。これは、mysql でスレッドを終了するために使用されます。
SHOW PROCESSLISTを使用できます。現在のスレッドを表示し、スレッドを終了するには KILL thread idを使用します。修飾子は 2 つあります 1: CONNECTION デフォルト この修飾子は、スレッド ID に関連するすべての接続を終了できます 2: QUERY は、現在実行されているステートメントを終了しますただし、接続は終了しません |
#LABEL
| ステートメント ラベル
|
LEAVE
| Leave ステートメント指定されたラベルのフロー制御ステートメント ブロックを終了することを示します。通常、begin...end、loop、repeat、while ループ ステートメントで使用されます。プログラミングのブレークと同じように、使用方法は
LEAVE ループです。 name;
|
LEFT
| LEFT() 関数は、指定された長さの文字列の左側の部分を返す文字列関数です。例:
LIKE |
はあいまい検索に使用され、% および _ とともに使用できます。 、% は 1 つ以上のワイルドカード文字のクエリを表し、_ は次のような文字を表します。SELECT * FROM user WHERE name LIKE '%i' 名前の i で終わるすべてのデータをクエリできます。% を置き換えます。 with _ その後、クエリ条件は名前が i で終わり、先頭に 1 文字だけあるデータをクエリすることになります。 |
LIMIT |
はページング クエリに使用され、例:SELECT * FROM user LIMIT 4,5 最初のパラメータは開始番号です。上の例のように、4 番目のデータから戻ります。2 番目のパラメータはオフセットです。上の例ではパラメータが5の場合は戻ることを意味しており、第4条の最後の5個のデータのうち、直前のオフセットを-1にしてクエリ開始回数以降のデータを全て表すこともできるが、この書き方はMySQL によって正式にエラーとして認識されるため、新しいバージョンの MySQL は使用できません。最良の方法は、比較的大きな数値 |
LOCALTIME |
現地時間を指定することです。これは、クエリ結果フィールド、WHERE 条件、挿入時の現在時刻、更新時刻などとして使用できます。mysql にはさまざまな時間関数があり、必要に応じてさまざまな関数を選択できます。たとえば、SELECT LOCALTIME、 NOW()、sysdate()、localtimestamp、localtimestamp(); |
LOCK |
テーブルのロックと MySQL のロック解除により、クライアント セッションがテーブル ロックを明示的に取得できるようになります。他のセッションと連携してテーブルにアクセスしたり、セッションがテーブルを変更するときに他のセッションが相互排他的アクセスを要求するのを防ぎます。セッションは、それ自体のロックを取得または解放することしかできません。セッションは、別のセッションからロックを取得したり、別のセッションが保持しているロックを解放したりすることはできません。例:LOCK テーブル ユーザー読み取りローカル この時点で、テーブル ロック操作が生成されます。テーブルを変更するすべての操作は拒否され、次のプロンプトが表示されます:テーブル 'ユーザー' は読み取りロックでロックされました更新できません 、unlock tables; キーワードを使用してロックを解除できます |
LOW_PRIORITY |
低優先度、MySQL では許可されていますステートメント「スケジューリングの優先順位付け」を変更すると、複数のクライアントからのクエリがより適切に連携できるようになり、単一のクライアントがロックのために長時間待機することがなくなります。通常、DELETE、INSERT、LOAD DATA、REPLACE、および UPDATE ステートメントで使用されます。例:update LOW_PRIORITY user set username = 'zhangsan' この場合、ライターが待機している場合、2 番目のリーダーが到着すると、 2 番目のリーダーはライターの前に挿入できます。ライターは、他のリーダーが存在しない場合にのみ操作を開始できます。 |
MOD |
剰余関数:select mod(12,5) 剰余 2 |
を返します。
NATURAL |
ナチュラル ジョインは JOIN の一種です。テーブル内の同じ名前のフィールドを自動的に照合するのが特徴です。同じ名前のフィールドの型は異なる場合があるため、テーブル内のフィールドは異なる場合があります。 は、INNER、LEFT、およびその他の JOIN に適用できます。例:select * from user NATURAL LEFT JOIN user2 ここでの user と user2 の違いは、 id、1 が user2 フィールドの後に追加され、その結果は次のようになります。ID は接続時に関連付けに自動的に使用され、結果は実際に同じになります。 |
#OPTIMIZE
| 機能: テーブルのフラグメントとインデックスを最適化および整理します。データベースは、データベースのテーブル領域にデータを保存するときにデータを割り当て、データにインデックスを付けます。データが削除されると、データベースはこれらのリソースを再利用せず、新しいデータを待ちます。これらの空きを埋めるには、OPTIMIZE キーワードを使用して、これらの占有リソースを積極的にクリアします。使用法:
最適化テーブル table Name
|
RANGE
| Partition: Based指定された間隔範囲では、操作を実行するときに、指定された間隔のこのフィールドの値が連続している必要があります。それに応じてパーティション化する方法を知っておくと、効率が大幅に向上します。要件としては、テーブルに主キーがある場合、パーティション フィールドは次のとおりです。使用法: テーブル作成ステートメント PARTITION BY RANGE (xuehao) (PARTITION p0 VALUES LESS THAN (6 ),PARTITION p1 VALUES LESS THAN (11),PARTITION p2 VALUES LESS THAN (16), PARTITION p3 VALUES LESS THAN (21));
|
REFERENCES
| テーブル作成ステートメントで外部キー関係を作成します:
FOREIGN KEY(uid) REFERENCES users( id)は、フィールド uid がユーザー テーブルの主キー フィールド ID に接続されることを意味します。 |
REGEXP
| 正規表現。正規表現を使用できます。動作する条件では、
SELECT * FROM user WHERE email NOT REGEXP'^[A-Z0-9._%-] @[A-Z0-9.-] .[A-Z]{2,4} を使用してください。$' |
RENAME |
テーブル名を変更するには、次を使用します:rename table user2 to user3; |
REPEAT |
指定されたデータを文字列として指定された回数コピーします。たとえば、次のようになります。select REPEAT(3,3) 結果は「333」です |
REPLACE |
指定されたすべての文字列を置換します。例:select REPLACE('This is a string, or acharacter', 'one', 'two') ; |
REVOKE |
MySQL ユーザーに付与されている権限を次のように取り消します。revoke all on *.* from testUser@ host; 完了後に必ずユーザー権限テーブルを更新してくださいFLUSH PRIVILEGES; |
RIGHT |
文字列に対して切り捨て操作を実行します。 as:select RIGHT ('This is a string',5) 、文字列内の指定された桁数を逆順にインターセプトします |
RLIKE |
ファジー クエリ。 like When とは異なり、rlike の内容は規則的であり、次のように正確に一致しない場合があります。select * from user where email RLIKE '^www.*$'; |
## SEPARATOR
| は、クエリ結果を文字列を使用して 1 つの行に連結できます。SEPARATOR はコネクタを指定し、次のように GROUP BY とともに使用する必要があります:
SELECT * 、GROUP_CONCAT(ユーザー名区切り文字「;」によるユーザー名順序) SCORE FROM ユーザー GROUP BY email RLIKE '^www.*$'
|
USING
| Ifフィールド名は接続クエリ中に同じであり、on の代わりに次のように使用して接続条件として使用できます。
select * from user left join students USING(quanxian)
|
WHILE
| ストレージ内で使用されるループ ステートメントのキーワード プロセス中に、次のようなプロセス制御ステートメントと組み合わせて使用する必要があります。
CREATE PROCEDURE fun() BEGIN SET @sum:=10; WHILE @sum > 0 DO SELECT @sum; SET @sum:=@sum-1; END WHILE; END CALL fun(); DROP PROCEDURE fun
|
|
| # #XOR
は排他的論理和を表し、いずれかのオペランドが NULL の場合、戻り値は NULL になります。 NULL 以外のオペランドの場合、2 つの論理 true と false の値が異なる場合、戻り結果は 1 です。そうでない場合は、次のように 0 になります。
select true XOR null;select true XOR true;select true XOR false; |
| ZEROFILL
テーブル作成時数値型にこのキーワードを追加後、挿入する桁数が足りない場合、対応する桁が自動的に追加されます。
CREATE TABLE Student3 (id int(11) unsigned zerofill not null, xuehao int(50) NOT NULL );insert intostudent3 value(1,2); select * fromstudent3; |
| ##[関連する推奨事項:
mysql ビデオ チュートリアル
]