Apakah konsep SQL ini untuk pemula, menengah, atau pengembang tingkat lanjut? [Tutup]

16

Saya telah belajar SQL baru-baru ini dan berlatih dengan MySQL / Postgres dan segera Oracle DB. Saya juga mencari web untuk studi 'peta jalan' dari database tetapi sayangnya tidak bisa menemukannya.

Saya ingin memahami di mana dan mengapa konsep basis data tertentu jatuh pada skala dari pemula hingga menengah dan lanjutan. Saya berpikir tentang database relasional untuk sebagian besar.

Tolong jelaskan cara mengeluarkan keterampilan yang tercantum di bawah ini dalam perkembangan Pemula -> Menengah -> Mahir untuk tingkat pengembang mana yang harus mengetahuinya:

  • Dimana klausa
  • Perbarui sintaks
  • Bergabung
  • Ubah dan Buat pernyataan
  • Meja temp
  • Kursor
  • Indeks
  • Kunci asing
  • Kendala
  • Transaksi
  • Subqueries
  • Pivot
  • Fungsi agregat
  • Pembuatan profil
  • OLAP dan OLTP
  • Pemicu
  • Rencana eksekusi
  • Petunjuk eksekusi
  • Penghitung kinerja
  • Normalisasi
Daniel
sumber

Jawaban:

20

Saya akan mengatakan ada dua jenis hal yang perlu diketahui sehubungan dengan SQL (ini benar dari banyak teknologi sebenarnya), ada hal-hal teknis khusus seperti bergabung, subquery, serikat pekerja, dll yang Anda mengerti atau tidak, dan kemudian ada hal-hal seperti desain basis data dan pemodelan data yang memiliki gradien keterampilan di dalamnya, seperti seni. Anda menjadi lebih baik dari waktu ke waktu dengan hal-hal yang lebih lembut, tetapi tidak pernah "tahu" mereka karena tidak ada "mereka bekerja dengan cara ini" dengan mereka.

Yang mengatakan, inilah tata letak umum saya akan pergi, dan saya benar-benar terbuka untuk komentar / pemikiran dari orang lain di mana saya mungkin salah.

Pemula

  • Di mana klausa (di, di antara, dll)
  • Perbarui sintaks
  • Batin vs kiri vs kanan bergabung dengan pemahaman dan penggunaan
  • Sintaks untuk mengubah dan membuat struktur
  • Temp table dan penggunaannya
  • Kursor
  • Gagasan dasar untuk apa indeks, meskipun bukan cara kerjanya
  • Memahami untuk apa kunci asing dan bagaimana mengatasinya (penghapusan cascading dll)
  • Memahami dasar-dasar transaksi
  • Memahami kendala

Menengah

  • Bagaimana indeks bekerja, perbedaan antara berkerumun, non-berkerumun, dll, apa halaman itu dan bagaimana mereka tata letak
  • Memahami subqueries, dan dapat berpikir melalui menggunakannya dalam gabungan dan wheres
  • Pivot
  • Dapat memikirkan bergabung dengan tabel pada dirinya sendiri ketika relevan
  • Dapat menghasilkan laporan data kompleks melalui bys grup dengan fungsi agregat
  • Dapat melakukan profil dasar hanya dalam kapasitas pemantauan / debugging seperti membaca log
  • Memahami perbedaan antara OLAP dan OLTP dan kapan / di mana menggunakan struktur OLAP
  • Tahu cara menggunakan pemicu dan tidak menggunakannya
  • Memahami transaksi dan dapat melapisi mereka dalam menangani kegagalan di stack

Maju

  • Dapat membaca rencana eksekusi, dan memahami bagaimana bagian-bagian berbeda dari kueri memengaruhinya
  • Dapat menyetel kueri dengan petunjuk eksekusi tanpa mengacaukan kinerja (petunjuk paralelisme, petunjuk indeks, petunjuk loop, dkk)
  • Dapatkah profil dan menggunakan jejak untuk mengidentifikasi dan memahami statistik eksekusi di bawah beban dunia nyata
  • Tahu apa struktur data pada disk
  • Dapat menggunakan penghitung kinerja dan memahami apa beban basis data dan perilaku dari pemantauan mereka
  • Tahu cara mendesain kubus OLAP dan melakukan penambangan data lanjutan dengan satu
  • Tahu cara menggunakan pemicu dan cara menggunakannya dengan aman, dengan risiko minimal
  • Tahu cara menggunakan transaksi terdistribusi bahkan dengan lapisan

Hanya itu yang bisa saya dapatkan dari atas kepala saya. Silakan tinggalkan komentar yang menyebutkan orang lain yang saya lewatkan atau jika saya meletakkan sesuatu di tempat yang salah. Saya tidak cukup maju untuk mengetahui daftar besar teknik-teknik canggih untuk meletakkan heh

Jimmy Hoffa
sumber
Sangat menarik hanya untuk melihat dua daftar kami berdampingan
Chris Pitman
11

Inilah skala yang saya gunakan saat mewawancarai kandidat. Ini jelas pendapat pribadi saya sendiri, skala dapat dengan mudah bervariasi:

Pertama, saya mencari keterampilan basis data, tidak secara khusus "SQL".

Pemula:

  • Mengetahui sintaks SQL dasar
  • Dapat memilih dan memfilter data di beberapa tabel
  • Memahami inner / outer / cross joins
  • Pemahaman yang samar tentang normalisasi, pengindeksan, transaksi, penguncian

Menengah:

  • Memahami perbedaan antara gaya prosedural dan deklaritif untuk SQL
  • Pengalaman dengan setidaknya satu ekstensi SQL DBs (PSQL, TSQL, dll)
  • Memahami, dan dapat mendesain database dalam bentuk normal ketiga
  • Memahami dan dapat mengimplementasikan pengindeksan
  • Memahami transaksi, dan dapat menggunakannya dalam satu basis data
  • Tahu kapan dan bagaimana menganalisis rencana eksekusi

Maju:

  • Memahami kapan dan bagaimana cara mendenormalkan basis data
  • Memahami cara mengatur transaksi terdistribusi di database dan sistem terintegrasi
  • Dapat menetapkan basis data untuk ketersediaan tinggi, pemulihan data, dll
  • Pengertian mendalam tentang cara kerja masing-masing mesin DB (setidaknya dua)
  • Poin ekstra untuk paparan signifikan terhadap pergudangan dan pelaporan data
  • Poin ekstra untuk paparan signifikan terhadap varian NoSQL, dan seperangkat kriteria rasional tentang kapan harus menggunakan apa
Chris Pitman
sumber
Lucu, daftar Anda sangat mirip dengan daftar saya; meskipun saya menempatkan rencana eksekusi satu langkah ke atas kalau tidak kita pada dasarnya sama. Saya hampir memasukkan bentuk normal ke-3 ke tingkat menengah, tetapi saya benar-benar berpikir pemodelan data tidak dapat dianggap sebagai pemula / menengah / lanjutan, itu terlalu banyak bakat artistik yang begitu abu-abu. Mengetahui bagaimana melakukan normal ke-3 adalah keterampilan, mengetahui kapan seni. Namun bagaimana relevan dan saya hampir memasukkannya juga untuk heh
Jimmy Hoffa