Her şeyden önce, birleşimleri tam olarak anlayın. Sadece iç ve sol birleşimler de değil. Çapraz birleştirmenin ne yaptığını ve tam dış birleşmeyi bilin. Belirli bir birleştirme türü seçmenize neden olabilecek koşulları bilin. Değiştirilebilir olmadıklarını ve sol birleştirme kullanan sorgunun, iç birleştirme kullanan bir sorgudan farklı sonuçlar döndürebileceğini anlayın. (Biri bunun açık olacağını düşünürdüm ama insanların sorunlarını çözerken, rastgele bir şekilde farklı birleşimleri denedikleri çok fazla soru okudum.)
Daha sonra agregaları ve nasıl çalıştıklarını gerçekten anlayın. Mysql standart olarak grup bys yapmamaya izin verir. Ancak, grubu doğru bir şekilde madde ile tamamen tanımlayacak disipline sahip olun. Ne yaptığınızı anlamanıza yardımcı olacak ve bilginizi diğer veritabanlarına daha kolay aktarılabilir hale getirecektir.
Vaka ifadesinin ne yaptığını öğrenin.
Karmaşık sorgular yaparken parçalar halinde çalışmayı öğrenin. Her bir parçada beklediğiniz sonuçlara sahip olduğunuzu doğrulayın. Örneğin, son 3 ay içinde iade edilen siparişler ve iade nedeni ile müşteri için iletişim bilgileri hakkında bir raporlama sorgusu yazmanız gerektiğini varsayalım. İlk adım, son üç ayda siparişlerin iade edilmesini sağlamaktır. Bu katıya sahip olduğunuzu öğrendikten sonra, iade nedeni ile ilgili bilgileri ekleyebilirsiniz. Bu katıya sahip olduktan sonra, iade eden müşteriyi ekleyebilirsiniz. Bu katıya ulaştıktan sonra, kişinin iletişim bilgilerini ekleyin. Her aşamada, sonuçlarınızı kontrol edin ve anlamlı olup olmadıklarını görün. Bu durumda, büyük olasılıkla iade edilen sipariş başına yalnızca bir kayıt olmak istiyorum. Herhangi bir ara aşamada, sonuçların sayısı artar veya azalırsa, sorguyla ilgili bir probleme sahip olduğunuzu bilirsiniz. Bazen yapı taşlarında, bilgilerin doğru olup olmadığını doğrulamak için ek alanlar görmek isteyebilirsiniz. Bunları ayrı bir satıra koyuyorum ve bir sonraki adımda çalışırken (doğru olduğumu bildiğimde onları kaldırarak) yorum yapıyorum, böylece başka bir kırışıklık ekleyerek sorguyu komik hale getirdiyse kolayca kolayca görülebiliyorlar. Sonuçlarınızın nasıl olması gerektiğini tam olarak anlamadan karmaşık sorgulamayı doğru şekilde yapamazsınız. Bazı sonuçlar döndürdüğü için iyi göründüğünü düşünmek, zamanın iyi bir kısmının yanlış sonuçlara sahip olmasını neredeyse garanti edecektir. m sağ) bu yüzden başka bir kırışıklık ekleyerek sorgu komik gitmek yaptı kolayca tekrar görmek için kullanılabilir. Sonuçlarınızın nasıl olması gerektiğini tam olarak anlamadan karmaşık sorgulamayı doğru şekilde yapamazsınız. Bazı sonuçlar döndürdüğü için iyi göründüğünü düşünmek, zamanın iyi bir kısmının yanlış sonuçlara sahip olmasını neredeyse garanti edecektir. m sağ) bu yüzden başka bir kırışıklık ekleyerek sorgu komik gitmek yaptı kolayca tekrar görmek için kullanılabilir. Sonuçlarınızın nasıl olması gerektiğini tam olarak anlamadan karmaşık sorgulamayı doğru şekilde yapamazsınız. Bazı sonuçlar döndürdüğü için iyi göründüğünü düşünmek, zamanın iyi bir kısmının yanlış sonuçlara sahip olmasını neredeyse garanti edecektir.
Burada düşünmek zorunda kalmadan SQL'de yapabileceğiniz bazı temel şeylerin listesi:
- İlk önce birleşimsiz (ve seçim yok *) ancak seçim koşullarında düz yukarı seçim
- İki veya daha fazla tabloyu nasıl birleştireceğinizi ve tüm tablolarda bulunan kayıtları nasıl alacağınızı bilmelisiniz
- İki veya daha fazla tabloyu nasıl birleştireceğinizi ve tüm tablolarda bulunan kayıtları alacağınızı bilmelisiniz, ancak bir-çok ilişkisinin birçok tarafıyla tablodan yalnızca bir kayıt döndürün
- Kayıtları tek bir tablodan alabilmelisiniz, ancak ilişkili bir tablodan alamamalısınız
- Bir rapor için verileri Birleştirebilmeniz gerekir
- Bir tabloya bir kayıt ekleyebilmeniz gerekir
- Tablodaki bir kaydı güncelleyebilmeniz gerekir
- Tablodaki bir kaydı silebilmeniz gerekir
- İmleç olmadan tabloya bir grup kayıt ekleyebilmeniz gerekir
- İmleç olmadan tablodaki bir grup kaydı güncelleyebilmeniz gerekir
- İmleç olmadan tablodaki bir grup kaydı silebilmeniz gerekir
- Bir işlemde birden çok eylem gerçekleştirebilmeniz ve hata yakalamayı işleyebilmeniz gerekir
- Kayıt birliği oluşturabilmeli ve ne zaman UNION başkan yardımcısı kullanacağınızı bilmelisiniz UNION ALL
- Bir alanın verilerini bazı ölçütlere göre değiştirebilmeniz gerekir (CASE kullanarak)
Temel SQL bilginizle rahat hissettiğinizde, veritabanı yapınızı tanıyın. Yapıyı anladığım ve işlerin nerede saklandığı hakkında düşünmek zorunda olmadığım için diğer insanlardan çok daha hızlı desteklediğim çok karmaşık dbs'e karşı karmaşık sorgular yazabilirim. Tablo yapısını ve yabancı anahtar ilişkilerini ve arama değerlerinin nerede saklandığını ve sütunların ne anlama geldiğini (yalnızca adları değil, içinde hangi verilerin tutulduğu) anlarsanız, bu veritabanını sorgulama konusunda uzman olabilirsiniz. Herhangi bir yeni iş yapmak ilk şey db yapısını iyice anlamak.