55 MySQL インタビューの質問と回答

1. ID 自己インクリメント主キーを持つテーブル. 17 レコードを挿入した後、15 番目、16 番目、17 番目のレコードを削除し、Mysql を再起動してからレコードを挿入します. このレコードの ID は 18 ですか、それとも 15 ですか?

(1) テーブルのタイプが MyISAM の場合、18 です。

MyISAM テーブルは自動インクリメント主キーの最大 ID をデータ ファイルに記録するため、MySQL の再起動後も自動インクリメント主キーの最大 ID は失われません。

(2) テーブルのタイプが InnoDB の場合、15 です。

InnoDB テーブルは、自動インクリメント主キーの最大 ID のみをメモリに記録するため、データベースを再起動するか、テーブルで OPTIMIZE 操作を実行すると、最大 ID が失われます。

2. Mysql の技術的特徴は何ですか?

Mysql データベース ソフトウェアは、さまざまなクライアント プログラムとライブラリをサポートするマルチスレッド SQL サーバー、さまざまなバックエンド、広範なアプリケーション プログラミング インターフェイス、および管理ツールを含むクライアントまたはサーバー システムです。

3. ヒープ テーブルとは何ですか?

HEAP テーブルは、一時的な高速ストレージ用にメモリ内に存在します。

BLOB または TEXT フィールドは使用できません

比較演算子 =、<、>、=>、=< のみ使用できます

HEAP テーブルは AUTO_INCREMENT をサポートしていません

インデックスを NULL にすることはできません

4. Mysql サーバーのデフォルトのポートは何ですか?

Mysql サーバーのデフォルトのポートは 3306 です。

5. Oracle と比較して、Mysql にはどのような利点がありますか?

Mysql はオープン ソース ソフトウェアであり、すぐに使用でき、無料です。

Mysql は移植可能です

コマンドプロンプトによる GUI。

Mysql クエリ ブラウザ サポート管理を使用する

6. FLOAT と DOUBLE の見分け方は?

以下は、FLOAT と DOUBLE の違いです。

1) 浮動小数点数は 8 ビット精度で FLOAT に格納され、4 バイトです。

2) 浮動小数点数は、18 ビット精度と 8 バイトで DOUBLE に格納されます。

7. CHAR_LENGTH と LENGTH を区別しますか?

CHAR_LENGTH は文字数、LENGTH はバイト数です。これら 2 つのデータはラテン文字では同じですが、Unicode やその他のエンコーディングでは異なります。

8. Mysql の InnoDB でサポートされている 4 つのトランザクション分離レベルの名前と、レベル間の違いを簡単に説明してください。

SQL 標準で定義されている 4 つの分離レベルは次のとおりです。

read uncommited : コミットされていないデータを読み取ります

コミットされた読み取り: ダーティ リード、繰り返し不可能な読み取り

繰り返し読み取り: 再読み取り可能

serializable : シリアルのもの

9. Mysql での ENUM の使用法は何ですか?

ENUM は、事前定義された一連の値を指定するために使用される文字列オブジェクトであり、テーブルを作成するときに使用されます

テーブルの作成 size(name ENUM('Smail,'Medium','Large');

10. REGEXP の定義方法は?

REGEXP はパターン マッチングであり、一致するパターンは検索された値の任意の場所にあります。

11. CHAR と VARCHAR の違いは何ですか?

CHAR と VARCHAR の違いは次のとおりです。

CHAR 型と VARCHAR 型は格納と取得が異なります

CHAR 列の長さは、テーブル作成時に宣言した長さに固定され、長さの値の範囲は 1 から 255 です。

CHAR 値が格納されると、特定の長さまでスペースが埋め込まれ、CHAR 値を取得するときに末尾のスペースが削除されます。

12. 列の文字列型は何ですか?

文字列型は次のとおりです。

設定

BLOB

列挙型

CHAR

文章

VARCHAR

13. 現在の Mysql バージョンを取得するには?

SELECT VERSION(); は、現在の Mysql バージョンを取得するために使用されます。

14. Mysql で使用されているストレージ エンジンは何ですか?

ストレージ エンジンはテーブル型と呼ばれ、データはさまざまな手法を使用してファイルに格納されます。

テクノロジーには以下が含まれます。

収納機構

ロックレベル

索引付け

能力と機能。

15.Mysql ドライバーとは何ですか?

以下は、Mysql で利用可能なドライバーです。

PHP ドライバー

JDBC ドライバー

ODBC ドライバー

Cラッパー

PYTHON ドライバー

PERL ドライバー

ルビードライバー

CAP11PHP ドライバー

Ado.net5.mxj

16. TIMESTAMP は UPDATE CURRENT_TIMESTAMP データ型に対して何をしますか?

TIMESTAMP 列は、テーブルの作成時にゼロで更新されます。UPDATE CURRENT_TIMESTAMP 修飾子は、テーブル内の他のフィールドが変更されるたびに、タイムスタンプ フィールドを現在の時刻に更新します。

17. 主キーと候補キーの違いは何ですか?

テーブルの各行は主キーによって一意に識別され、テーブルには主キーが 1 つだけあります。

主キーは候補キーでもあります。慣例により、候補キーは主キーとして指定でき、任意の外部キー参照に使用できます。

18. Unix シェルを使用して Mysql にログインするには?

次のコマンドでログインできます。

[mysql dir]/bin/mysql -h ホスト名 -u

19. myisamchk は何に使用されますか?

MyISAM テーブルを圧縮するために使用され、ディスクまたはメモリの使用量を削減します。

20. MYSQL データベース サーバーのパフォーマンス分析の方法とコマンドは何ですか?

MySQL でデータベース パフォーマンスを表示するための一般的なコマンド

21. HEAP テーブルの最大サイズを制御するには?

Heal テーブルのサイズは、max_heap_table_size と呼ばれる Mysql 構成変数によって制御できます。

22. MyISAM Static と MyISAM Dynamic の違いは何ですか?

MyISAM Static のすべてのフィールドは固定幅です。動的な MyISAM テーブルには、さまざまな長さのデータ型に対応するために、TEXT、BLOB などのフィールドがあります。

MyISAM Static は、損傷した場合の復元が容易です。

23.連合テーブルとは何ですか?

連合テーブル。他のサーバー データベースにあるテーブルへのアクセスを許可します。

24. テーブルに TIMESTAMP として定義された列がある場合、どうなりますか?

タイムスタンプ フィールドは、行が変更されるたびに現在のタイムスタンプを取得します。

25. 列が AUTO INCREMENT に設定されている場合、テーブルで最大値に達するとどうなりますか?

キーが既に使用されているため、インクリメントが停止し、さらに挿入するとエラーが発生します。

26. 最後の挿入で割り当てられたオートインクリメントを確認するにはどうすればよいですか?

LAST_INSERT_ID は、Auto_increment によって割り当てられた最後の値を返し、テーブル名を指定する必要はありません。

27. テーブルに定義されたすべてのインデックスをどのように確認しますか?

テーブルのインデックスは、次の方法で定義されます: SHOW INDEX FROM

28. LIKE ステートメントの % と _ は何を意味しますか?

% は 0 個以上の文字に対応し、_ は LIKE ステートメント内の 1 文字にすぎません。

29. Unix と Mysql のタイムスタンプを変換するには?

UNIX_TIMESTAMP は、Mysql タイムスタンプを Unix タイムスタンプに変換するコマンドです。

FROM_UNIXTIME は、Unix タイムスタンプから Mysql タイムスタンプに変換するコマンドです。

30. 列比較演算子とは?

SELECT ステートメントの列比較では、=、<>、<=、<、>=、>、<<、>>、<=>、AND、OR、または LIKE 演算子を使用します。

31. クエリの影響を受ける行数を取得するにはどうすればよいですか?

行数は、次のコードで取得できます。SELECT COUNT(user_id)FROM users;

32.Mysql クエリは大文字と小文字を区別しますか?

を区別しない

SELECT VERSION(), CURRENT_DATE;

Select version(), current_date;

vErSiOn(), current_DATE を選択します。

これらの例はすべて同じです。Mysql は大文字と小文字を区別しません。

33. LIKE 操作と REGEXP 操作の違いは何ですか?

LIKE および REGEXP 演算子は、^ および % を表すために使用されます。

SELECT * FROM 従業員 WHERE 従業員名 REGEXP "^b";

SELECT * FROM 従業員 WHERE emp_name LIKE “%b”;

34. BLOB と TEXT の違いは何ですか?

1. BLOB は、可変量のデータを保持できるバイナリ オブジェクトです。BLOBには4つのタイプがあります-

1)タイニブロブ

2)ブロブ

3) MEDIUMBLOB および

4)肺ブロブ

値を保持できる最大長のみが異なります。

2. TEXT は大文字と小文字を区別しない BLOB です。4 つの TEXT タイプ

1) タイニーテキスト

2)テキスト

3)中文

4)ロングテキスト

これらは 4 つの BLOB タイプに対応し、最大長とストレージ要件は同じです。

BLOB 型と TEXT 型の唯一の違いは、BLOB 値は大文字と小文字を区別して並べ替えられ、比較されるのに対し、TEXT 値は大文字と小文字が区別されないことです。

35. mysql_fetch_array と mysql_fetch_object の違いは何ですか?

1) mysql_fetch_array() - データベースから連想配列または通常の配列として結果行を返します。

2) mysql_fetch_object - データベースから結果行をオブジェクトとして返します。

36. mysql でバッチ モードを実行するにはどうすればよいですか?

次のコマンドは、バッチ モードで実行するために使用されます。

mysql;

mysql mysql.out

37. MyISAM テーブルはどこに保存され、その保存形式も提供されますか?

各 MyISAM テーブルは、次の 3 つの形式でディスクに保存されます。

「.frm」ファイルにはテーブル定義が保存されます

データファイルの拡張子は「.MYD」(MYData)

インデックス ファイルの拡張子は ".MYI" (MYIndex) です。

38. Mysql のさまざまなテーブルは何ですか?

テーブルには次の 5 種類があります。

MyISAM

ヒープ

マージ

INNODB

ISAM

MyISAM は、Mysql のデフォルトのストレージ エンジンです。

39. ISAM とは何ですか?

ISAM は Indexed Sequential Access Method の略です。磁気テープなどの二次ストレージ システムにデータを格納および取得するために IBM によって開発されました。

40. InnoDB とは?

lnnoDB は、Oracle Corporation によって開発された Innobase Oy トランザクション セーフ ストレージ エンジンです。

41. Mysql はどのように DISTINCT を最適化しますか?

DISTINCT は、すべての列で GROUP BY に変換され、ORDER BY 句と組み合わせて使用​​されます。

1

SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;

42. 文字を 16 進数として入力する方法は?

文字を 16 進数で入力する場合は、一重引用符とプレフィックス (X) を付けて 16 進数を入力するか、プレフィックス (Ox) を付けて 16 進数を入力します。

式のコンテキストが文字列の場合、16 進数の文字列は自動的に文字列に変換されます。

43. 最初の 50 行を表示するには?

Mysql では、次のクエリを使用して最初の 50 行を表示します。

44. 索引の作成に使用できる列の数は?

標準テーブルには、最大 16 個のインデックス付きカラムを作成できます。

45. NOW() と CURRENT_DATE() の違いは何ですか?

NOW() コマンドは、現在の年、月、日、時、分、および秒を表示するために使用されます。

CURRENT_DATE() は、現在の年月日のみを表示します。

46. CREATEステートメントを使用して作成できるオブジェクトの種類は何ですか?

次のオブジェクトは、CREATE ステートメントを使用して作成されます。

データベース

イベント

関数

索引

手順

テーブル

引き金

ユーザー

意見

47. Mysql テーブルで許可されるトリガーの数はいくつですか?

次のように、Mysql テーブルで許可される 6 つのトリガーがあります。

挿入前

挿入後

更新前

更新後

削除する前に

削除後

48. 非標準の文字列型とは?

以下は非標準の文字列型です。

小さなテキスト

文章

中文

ロングテキスト

49. 一般的な SQL 関数とは?

CONCAT(A, B) - 2 つの文字列値を連結して、1 つの文字列出力を作成します。通常、2 つ以上のフィールドを 1 つに結合するために使用されます。

FORMAT(X, D) - 数値 X を有効桁数 D にフォーマットします。

CURRDATE()、CURRTIME() - 現在の日付または時刻を返します。

NOW() - 現在の日時を値として返します。

MONTH()、DAY()、YEAR()、WEEK()、WEEKDAY() *-日付値から指定されたデータを抽出します。

HOUR()、MINUTE()、SECOND() - 時間値から特定のデータを抽出します。

DATEDIFF(A,B) - 年齢の計算によく使用される、2 つの日付の差を決定します。

SUBTIMES(A,B) - 2 つの時間の差を決定します。

FROMDAYS(INT) - 整数の日数を日付値に変換します。

50. アクセス制御リストの説明

ACL (アクセス制御リスト) は、オブジェクトに関連付けられた権限のリストです。このリストは、Mysql サーバー セキュリティ モデルの基礎であり、ユーザーが接続できない問題のトラブルシューティングに役立ちます。

Mysql は ACL (許可テーブルとも呼ばれます) をメモリにキャッシュします。ユーザーが認証またはコマンドの実行を試みると、Mysql は ACL 認証情報とアクセス許可を所定の順序でチェックします。

51. MYSQL はトランザクションをサポートしていますか?

デフォルト モードでは、MYSQL は自動コミット モードであり、すべてのデータベース更新操作はすぐにコミットされるため、デフォルトでは、mysql はトランザクションをサポートしていません。

ただし、MYSQL テーブル タイプが InnoDB テーブルまたは BDB テーブルを使用している場合、MYSQL はトランザクション処理を使用できます。SET AUTOCOMMIT=0 を使用して MYSQL が非自動コミット モードを許可するようにします。非自動コミット モードでは、COMMIT を使用して変更をコミットする必要があります。 ROLLBACK で変更をロールバックします。

例は次のとおりです。

取引を開始します。

SELECT @A:=SUM(給与) FROM table1 WHERE type=1;

UPDATE table2 SET summmary=@A WHERE type=1;

専念;

52.mysqlで通貨を記録するのに適したフィールドタイプは何ですか

NUMERIC および DECIMAL 型は、SQL92 標準で許可されている同じ型として Mysql によって実装されます。これらは、金銭関連のデータなど、正確な精度が非常に重要な値を保持するために使用されます。クラスをこれらの型の 1 つとして宣言するときに、精度と位取りを指定できます (通常は指定します)。

例えば:

給与 DECIMAL(9,2)

この例では、9 (精度) は値を格納するために使用される小数点以下の桁数の合計を表し、2 (位取り) は小数点以下の値を格納するために使用される桁数を表します。

したがって、この場合、salary 列に格納できる値の範囲は、-9999999.99 から 9999999.99 までです。

ANSI/ISO SQL92 では、構文 DECIMAL§ は DECIMAL(p,0) と同等です。

同様に、構文 DECIMAL は DECIMAL(p,0) と同等であり、実装によって p の値を決定できます。Mysql は現在、DECIMAL/NUMERIC データ型のこれらのバリアントをサポートしていません。

これらのタイプの主な利点は、精度とスケールを明確に制御できることにあるため、これは一般に深刻な問題ではありません。

DECIMAL および NUMERIC 値は、これらの値の 10 進精度を維持するために、2 進浮動小数点数としてではなく文字列として格納されます。

値の各桁に 1 文字、小数点 (位取り > 0 の場合)、および「-」記号 (負の値の場合)。スケールが 0 の場合、DECIMAL および NUMERIC 値には小数点または小数部が含まれません。

DECIMAL および NUMERIC 値の最大範囲は DOUBLE と同じですが、特定の DECIMAL または NUMERIC 列の場合、実際の範囲は特定の列の精度またはスケールによって制限される可能性があります。

このような列に、小数点以下の桁数が指定されたスケールよりも多い値が割り当てられると、値はスケールに従って丸められます。

DECIMAL または NUMERIC カラムに、指定された (またはデフォルトの) 精度とスケールによって暗示される範囲を超えるサイズの値が割り当てられると、Mysql はその範囲を表す対応するエンドポイント値を格納します。

53. MYSQL データ テーブルが破損しやすいのはどのような状況ですか?

サーバーの突然の電源障害は、データ ファイルの破損につながります。

最初に mysql サービスなどを閉じずに、強制的にシャットダウンします。

54. mysql のパーミッションに関連するテーブルは何ですか?

Mysql サーバーは、mysql データベースに保存され、mysql_install_db スクリプトによって初期化される権限テーブルを通じて、データベースへのユーザーのアクセスを制御します。

これらの権限テーブルは、user、db、table_priv、columns_priv、および host です。

55. Mysql にはどのような種類のロックがありますか?

MyISAM はテーブル ロックをサポートし、InnoDB はテーブル ロックと行ロックをサポートします。デフォルトは行ロックです。

テーブル レベルのロック: 低オーバーヘッド、高速ロック、デッドロックなし。ロックの粒度が大きく、ロックの競合の可能性が最も高く、同時実行の量が最も少ない

行レベルのロック: 高いオーバーヘッド、遅いロック、およびデッドロック。ロック強度が小さく、ロック競合の確率が小さく、同時実行性が最も高い

おすすめ

転載: blog.csdn.net/qq960685827/article/details/128038627