【インタビュー】データベースの基本

0、問題の概要

1.基礎知識

什么叫视图?游标是什么 ?
drop、delete与truncate的区别
什么是触发器?
CURD是什么?C是什么?
MySQL有哪些类型?
int和varchar;int占多少位?

2.基本操作

left Join、right join、inner join、outer join的区别?(*4)
数据库去重操作;
SQL的group by、order by作用;having和where区别?

第三に、パラダイム

数据库第三大范式(*5)之间的理解和比较;满足此条件设计一个数据库。
设计学生成绩管理系统,符合第三范式要求,并绘出UML图。

四、事件

1、数据库事务(*2)含义?

2、ACID(*23、数据库隔离级别(*74、每个级别如何解决上个级别的问题,每个隔离级别优缺点,如何解决?哪些导致脏读(*2),如何预防脏读?哪些不可重复读(*2),哪些导致幻读(*2)?
 - 追问1:MySQL如何解决幻读(*2)问题的?
 - 追问2:底层原理(*25、如何保证一致性。

1.基礎知識

1.ビューとは何ですか?カーソルとは何ですか?

見る:

  • 1)ビューは、特定の条件に応じて複数の基本テーブルで構成される結果セットであり、一般的には選択のみ可能であり、仮想メモリテーブルであるため、更新、挿入、削除などの操作は実行できません。

  • 2)VSテーブルの表示<==>ショートカットVSファイル

カーソル:SQLステートメントの実行結果を格納するデータバッファー。ユーザーはそこからレコードを1つずつ取得して処理できます。

2.ドロップ、削除、切り捨ての違い

3.トリガーとは何ですか?

4.カードとは何ですか?Cとは何ですか?

作成-増加、取得-読み取り、更新-更新、削除-削除。

5. MySQLの種類は何ですか?

主に、数値型、日付と時刻、文字列型に分けられます。
1
注意:

  • 符号なしの上限は元の値の2倍です。通貨の精度などの正確なデジタルシーンでは、DECIMALタイプを使用する必要があります。
  • 時間分類:年、月、日-日付、年、月、日、時、分、秒-DATETIME、時、分、秒-TIME; TIMESTAMPはタイムゾーンに関連しています。
  • 文字列:CHARは、作成時の長さを示すように固定されており、VARCHARは可変長の文字列です。

6.Intとvarchar; intは何桁を占めますか?

の種類 サイズ 符号付き範囲 符号なし範囲
int 4バイト − 2 32 -2 ^ {32} 23 22 31 - 1 2 ^ {31} - 123 11 0 0 02 32 - 1 2 ^ {32} - 123 21
varchar(M) 0〜65536バイト 0〜Mバイトの可変長文字列

2.基本操作

1、左結合、右結合、内部結合、外部結合的区化?(* 4)

フォームA:

aId 名前
1 a1
4 a4

フォームB:

入札 bName
1 b1
5 b5
# 关联查询语句
select * from A (**) join B  on A.aID = B.bID;
A: left
B: right
C: inner
D: outer

クエリ結果
(1)A:左結合

aId 名前 入札 bName
1 a1 1 b1
4 a4 ヌル ヌル

(2)B:右結合

aId 名前 入札 bName
1 a1 1 b1
ヌル ヌル 5 b5

(3)C:内部結合

aId 名前 入札 bName
1 a1 1 b1

(4)D:外部結合

aId 名前 入札 bName
1 a1 1 b1
4 a4 ヌル ヌル
ヌル ヌル 5 b5

2.データベースの重複排除操作。

  • 1)ROWID:Oracleが一般的に使用されており、他のフィールドを宣言する必要があります。
# 删除表1和表2 中name相同的所有数据
delete from table1 a
where rowid !=( select max(rowid) from table2 b
				where  a.name1 = b.name1 and  a.name2 = b.name2 ……
			  )
  • 2)group by:主に統計のグループ化に使用され、一般的に集計関数で使用されます
# 删除表中num列所有重复的数据
delete from student
Group by num
having count(num)>1
  • 3)個別:一般に、重複排除のための比較的小さなテーブルに使用され、冗長な重複レコードを除外します
select distinct name from student

3.SQLのgroupbyとorderbyの役割、持っている場所と場所の違いは?

1)VS順でグループ化

  • 関数:group by:グループ化。多くの場合、集計関数と組み合わせて使用​​されます。orderby:並べ替え;

2)VSを持っている

  • オブジェクト:ベーステーブルまたはビューに作用して、条件を満たすタプルを選択します。グループに作用する場合、条件を満たすセットを選択します。

第三に、パラダイム

1.データベースの3番目のパラダイム(* 5)の理解と比較。この条件を満たすデータベースを設計します。

1NF 切っても切れない
2NF 主キーに完全に依存する一意のID
3NF 推移的な依存関係はありません

……

2. 3番目のパラダイムの要件を満たすように学生の成績管理システムを設計し、UML図を描きます。

……

四、事件

1.データベーストランザクション(* 2)とはどういう意味ですか?

データベーストランザクションの分離不可能なデータベース操作シーケンスは、データベースの同時実行制御の基本単位でもあります。実行結果は、データベースを一貫性のある状態から別の一貫性のある状態に変更する必要があります。

追加:MySQLトランザクションのサポート

ストレージエンジン サポートしていますか
MyISAM サポートされていません、読み取り専用
InnoDB サポート、ACID、行レベルのロック、同時実行性
バークレーDB 待機する

2、ACID(* 2)

アトミシティ アトミシティ
一貫性 一貫性
隔離 隔離
耐久性 持久性

3.データベース分離レベル(* 7)

读未提交:我能读到别人没提交事务的数据。
读已提交:我事务中读到的数据,别人能改。
可重复读:我事务中读到的数据,别人能插。
串行:我的事务没提交,别人就别想动数据。

这4种隔离级别,并行性能依次降低,安全性依次提高。

随着事务中记录开放程度紧缩,安全级别随之提升。
分離レベル

4、每个级别如何解决上个级别的问题,每个隔离级别优缺点,如何解决?哪些导致脏读(*2),如何预防脏读?哪些不可重复读(*2),哪些导致幻读(*2)?

类型 定义 优点 问题
Read Uncommitted 允许读另一个还没commit的数据 提高性能 脏读
Read Committed 只允许已经事务中commit的记录可见 解决脏读 不可重复读
Repeable Read 直到事务commit或rollback才可见,但其他事务insert/delete对该事务可见 可重复读 幻读
Serializable 只允许事务串行执行 最高级别 代价大
追问1:MySQL如何解决幻读(*2)问题的?

1、多版本并发控制(MVCC)、next-key 锁、序列化级别 ……

2、更多可看【面试】数据库进阶篇(二)

追问2:底层原理(*2)

……

5、如何保证一致性。

数据库层面:MVCC–RR、日志、2PL;应用层面:……

参考

【数据类型】
1、Mysql数据库中有哪些数据类型?
2、Mysql都支持哪些数据类型?
3、MySQL 数据类型

[基本動作]
1.によって及び順序でグループ間の使用量との差について話す
2のMysql:例証する内部結合を、右ジョイン、左ジョイン、完全外部ジョイン、組合、組合全
3の重複排除のいくつかの方法データベースの概要
4. MySQLデータベースの重複排除のためのシンプルなソリューション

[トランザクション]
1。mysqlはどのようにして原子性、一貫性、耐久性を保証しますか?
2 。データベースの4つの分離レベルを理解します
。3。3番目のインタビュー/筆記テスト-データベースインタビューの質問のコレクション
。4。詳細な説明、例、およびメソッドの読み込みMySQLのファントムのソリューション
5. MySQLはファントム読み取りを解決しない方法は?
6. 20 |ファントムリーディングとは何ですか?ファントムリーディングの何が問題になっていますか?

おすすめ

転載: blog.csdn.net/HeavenDan/article/details/111590654