Saya telah menggunakan mysql untuk jumlah waktu yang sama dengan PHP. Namun saya merasa 10x lebih percaya diri dalam PHP; atau bahasa pemrograman lainnya. Tapi sepertinya saya tidak bisa benar-benar memahami SQL. Maksud saya, saya dapat memilih, memperbarui, menyisipkan, menghapus, bergabung, dll. Tetapi ketika sampai pada hal-hal yang lebih kompleks saya tersesat. Cara menulis pernyataan pilih yang lebih rumit, cara menggunakan indeks dengan benar, mesin mana yang digunakan, dll.
Untuk beberapa alasan saya benar-benar menemukan dokumen mysql sulit diikuti, tetapi php mudah diikuti.
Saya mulai berpikir bahwa mungkin otak saya hanya terhubung dengan suatu cara yang membuat pemrograman membuatnya tetapi membingungkan. Saya tidak tahu Kebanyakan orang berpikir Regex sangat membingungkan tetapi bagi saya itu lebih masuk akal secara ilmiah daripada bagaimana membangun pernyataan sql. Tolong jangan salah paham, saya tidak membenci SQL, saya sangat menyukainya, saya hanya ingin memahaminya dengan lebih baik.
Whats cara terbaik / tercepat untuk benar-benar menguasai MySQL?
Ketika saya mengatakan "tuan", saya tidak bermaksud guru di antara para guru, maksud saya cukup pintar untuk mengetahui sebagian besar pertanyaan yang saya ajukan pada SO sendiri tanpa perlu bantuan.
Jawaban:
Gunakan
Menginternalisasi cara kerja database relasional sulit bagi banyak orang - tetapi ini sangat berharga. Ketika Anda bekerja dengan SQL lebih banyak, itu akan masuk ke otak Anda. Teruslah mendorong diri Anda sendiri.
Ketika sesuatu tampak aneh, selidiki
Di Chrome, saya menyiapkan mesin pencari ini sehingga yang harus saya lakukan adalah mengetikkan "m [permintaan pencarian]" untuk mencari dokumen (pencarian dev.mysql.com menyebalkan): {google: baseURL} pencarian? {Google: RLZ} {google: acceptSuggestion} {google: originalQueryForSuggestion} sourceid = chrome & ie = {inputEncoding} & q = situs: dev.mysql.com/doc/refman/5.1/en+%s
Jika dokumen tidak memiliki jawaban, buka # mysql di freenode dan lihat apakah seseorang dapat memberikan wawasan.
Baca!
Setelah Anda memahami bagaimana database relasional melakukan tugasnya, Anda akan ingin tahu lebih banyak tentang apa yang dilakukan MySQL dengan pertanyaan ajaib yang Anda tulis. Saya akan sangat merekomendasikan MySQL Kinerja Tinggi - ini sangat berharga untuk waktu Anda.
sumber
Pertama dan terutama, dapatkan pemahaman menyeluruh tentang gabungan. Bukan hanya bagian dalam dan kiri yang bergabung. Ketahui apa yang dilakukan oleh gabungan silang dan gabungan luar sepenuhnya. Ketahui keadaan yang menyebabkan Anda memilih jenis gabung tertentu. Memahami bahwa mereka tidak dapat dipertukarkan dan bahwa permintaan yang menggunakan gabungan kiri dapat mengembalikan hasil yang berbeda dari yang menggunakan gabungan batin. (Orang akan berpikir itu akan jelas tetapi saya sudah membaca terlalu banyak pertanyaan di mana orang-orang di decribing masalah mereka, agak secara acak mencoba berbagai bergabung.)
Selanjutnya benar-benar memahami agregat dan cara kerjanya. Mysql akan membiarkan Anda lolos dengan tidak melakukan bys grup dengan cara standar. Tetapi memiliki disiplin untuk sepenuhnya mendefinisikan grup dengan klausa dengan benar. Ini akan membantu Anda memahami apa yang Anda lakukan dan akan membuat pengetahuan Anda lebih mudah ditransfer ke database lain.
Pelajari apa yang dilakukan pernyataan kasus.
Saat melakukan kueri yang kompleks, belajarlah untuk bekerja di chunks. Verifikasi di setiap bagian bahwa Anda memiliki hasil yang Anda harapkan. Jadi misalnya, misalkan Anda perlu menulis permintaan pelaporan pada pesanan yang telah dikembalikan dalam 3 bulan terakhir dan alasan pengembalian serta informasi kontak untuk pelanggan. Langkah pertama adalah mendapatkan pesanan dikembalikan dalam tiga bulan terakhir. Setelah Anda tahu bahwa Anda memiliki solid itu, Anda dapat menambahkan informasi tentang alasan pengembalian. Setelah Anda memiliki solid itu, Anda dapat menambahkan pelanggan yang mengembalikannya. Setelah Anda memiliki solid itu, tambahkan informasi kontak untuk orang tersebut. Pada setiap tahap, periksa hasil Anda dan lihat apakah hasilnya masuk akal. Dalam hal ini, saya mungkin ingin berakhir hanya dengan satu catatan per pesanan yang dikembalikan. Jika pada tahap peralihan mana pun, jumlah hasil naik atau turun, Anda tahu Anda memiliki masalah dengan kueri. Terkadang dalam membangun blok, Anda akan ingin melihat bidang tambahan hanya untuk memverifikasi apakah informasi itu benar. Saya meletakkan ini di baris yang terpisah dan berkomentar saat saya mengerjakan langkah berikutnya (menghapusnya di akhir setelah saya tahu saya benar) sehingga mereka tersedia untuk dilihat lagi dengan mudah jika menambahkan kerutan lain membuat kueri menjadi lucu. Anda tidak dapat melakukan kueri kompleks dengan benar tanpa pemahaman menyeluruh tentang seperti apa hasil Anda seharusnya. Berpikir itu terlihat OK karena itu mengembalikan beberapa hasil hampir akan menjamin bahwa Anda memiliki hasil yang salah sebagian besar waktu. m benar) sehingga tersedia untuk dilihat kembali dengan mudah jika menambahkan kerutan lain membuat kueri menjadi lucu. Anda tidak dapat melakukan kueri kompleks dengan benar tanpa pemahaman menyeluruh tentang seperti apa hasil Anda seharusnya. Berpikir itu terlihat OK karena itu mengembalikan beberapa hasil hampir akan menjamin bahwa Anda memiliki hasil yang salah sebagian besar waktu. m benar) sehingga tersedia untuk dilihat kembali dengan mudah jika menambahkan kerutan lain membuat kueri menjadi lucu. Anda tidak dapat melakukan kueri kompleks dengan benar tanpa pemahaman menyeluruh tentang seperti apa hasil Anda seharusnya. Berpikir itu terlihat OK karena itu mengembalikan beberapa hasil hampir akan menjamin bahwa Anda memiliki hasil yang salah sebagian besar waktu.
Berikut adalah daftar beberapa hal dasar yang harus Anda lakukan dalam SQL tanpa harus memikirkannya:
Setelah Anda merasa nyaman dengan pengetahuan SQL dasar Anda, kenali struktur basis data Anda. Saya dapat menulis pertanyaan kompleks terhadap dbs yang sangat rumit yang saya dukung jauh lebih cepat daripada orang lain karena saya mengerti strukturnya dan tidak perlu memikirkan di mana barang disimpan. Jika Anda memahami struktur tabel dan hubungan kunci asing dan di mana nilai pencarian disimpan dan apa arti kolom (bukan hanya nama mereka tetapi data apa yang disimpan di dalamnya) maka Anda bisa menjadi ahli dalam menanyakan database itu. Hal pertama yang saya lakukan dalam pekerjaan baru adalah memahami struktur db.
sumber
Menurut pendapat saya untuk belajar SQL (dan ini benar-benar untuk apa yang Anda minta, spesifik MySQL dapat datang kemudian), Anda harus menghapus diri Anda dari aliran kontrol pemrograman gaya PHP. Berpikir secara khusus dalam paradigma bahasa deklaratif:
SQL mendefinisikan APA yang Anda inginkan, bukan bagaimana melakukannya. Jika Anda dapat mencoba menghapus mental yang terakhir, yang pertama akan mengikuti waktu. Abaikan lapisan ini di pikiran Anda dan biarkan MySQL (atau Oracle atau apa pun) mengkhawatirkan caranya .
Logika aplikasi dapat terjadi dalam SQL vs kode prosedural / OO dalam PHP. Misalnya saat membuat kueri ke database untuk sesuatu, Anda dapat secara konsisten bergabung dalam tabel pengguna dan mungkin tabel izin untuk memastikan hak yang tepat alih-alih membuat beberapa pra-kueri. Memasukkan dapat dilakukan melalui seleksi yang serupa (
insert into ... select ...
) alih-alih nilai yang disebutkan untuk memastikan validasi data.Bagaimanapun, saya sangat merekomendasikan untuk berfokus pada primitif Codd dan memahami pemilihan, proyeksi, bergabung, persatuan, dan perbedaan. Pada akhirnya, konsep-konsepnya langsung dan Anda mungkin dapat mencapai 80% dari apa yang ingin Anda lakukan melalui konsep-konsep itu. Sisanya bisa mengikuti.
sumber
Cara tercepat yang saya temukan untuk "menguasai" apa pun adalah menantang diri saya dengan hal itu. Ambil satu set data dan tuliskan delapan hingga sepuluh hal berbeda yang ingin Anda tanyakan. Sekelompok siswa yang mungkin ingin Anda temukan usia rata-rata setiap orang yang dikelompokkan berdasarkan rata-rata poin kelas dibulatkan ke angka keseluruhan terdekat. Kemudian tuliskan pertanyaan untuk mereka. Mulailah dengan satu tabel, lalu tambahkan lagi. Data praktik bergabung dan fungsi built-in.
sumber