Tüm tablolar için SQL aramasını görüntüleyin. Basit SQL istekleri - Kısa yardım ve örnekler

İlköğretim sorgularıyla başlayalım. Peki ya onlar olmadan? En özlü formu SQL sorgusuve "Bu tablodan tüm verileri almak istiyorum" olarak çevirir. Bir sonraki sorgunun sonucu, D_Staff tablosundaki tüm alanlara sahip tüm kayıtlardır.

D_Staff'ten *

Eğitim programında SQL sorgusunu girin.

Soldaki Gezgini'ndeki [SQL] seçeneğini seçin, sağdaki listenin üstündeki [SQL düğmesine] tuşuna basın, isteği girin ve [SQL düğmesine] tekrar basın. Sorgunun yürütülmesini onayladıktan sonra, liste şöyle görünecektir. Dava durumunda, her şey kolaydır: sadece ilgili alanda SQL sorgusunu girin ve [RUN] düğmesine tıklayın.


En basit SQL sorgusunun gerçekleştirilmesinin sonucu.

Sonra (*) kullanın operatör SeçTabii ki, özellikle bilinmiyorsa, masadaki hangi alanlar genellikle orada, ancak maliyetsel olarak, sorgunun sonucunu da saklayan yapılar, oldukça "gereksiz" bellek ve yürütme zamanı harcadılar. Sorgunun sadece artması. Bir sonraki seçenek, sadece fi hakkında bilgiye ihtiyacınız varsa tam olarak tercih edilir. Çalışan ve tecrübesi. Hakkında Çeviri: "Ben sadece bu bilmek istiyorum ve bu konuda tüm masada ..."

S_NAME, D_STAFF'ten S_Experience'i seçin.

Son SQL sorgusunun sonucu, gözle görülür şekilde daha az yer "genişliği" kaplar.


Belirli tablo alanlarının değerlerini seçin.

Adım 2. Basit bir seçim kriteri ile SQL isteği

En basit talepler pratikte pratikte uygulanmaz, çünkü "çekin" kesinlikle belirtilen tablodan tüm kayıtları kesinlikle kayıt olur ve yüzlerce binlerce kişi olabilir. DBMS, böyle bir istek yapmayı reddedebilir ve rasgele erişim belleği Müşteri makinede ilköğretim olamaz. Bu tür taleplerin sonuçları ile ne yapmalı, doğru bir şekilde yapıldılar bile, bazıları için her zaman açık değildir. İhtiyacınız olan girişlerin seçimine ilişkin kısıtlamalar getirmek için, anahtar kelime SQL'de kullanılır. Aşağıdaki sorgu sadece 5 yıldan az iş deneyimi olan çalışanları seçer.

S_name, s_stafnice adresinden s_name, s_xperience seçin.


Kullanma basit kriter Kayıtların seçimi.

Adım 3. Bir kompozit seçim kriteri ile SQL isteği

İhtiyaç duyulan şey için kompozit Seçim Kriterleri Kayıtlar, açıkla, bence gerek yok. Aynı şey için, basit kriterlere sahip olanlar ve talepler için. Koşullar kullanarak birleştirilir mantıksal İşlemler bağlaçlar ve Özdeyiş (Operatörler "ve" (ve) ve "veya" (veya)) ve parantezler tarafından gruplandırılır. Aşağıdaki istek, çalışanlar hakkındaki kayıtları 5 yaşından küçük ve konumlarında ek bir kısıtlama ile iade edecektir.

S_NAME, S_Experience, S_Position, D_Staff'tan S_Position (d_staff.s_position 20) ve d_staff.s_experience


Kullanma sofistike kriter Kayıtların seçimi.

Adım 4. Operatör Arasında

Operatör arasındaki, aralığı tanımlayan kriterlerin açıklamasının sözdizimini kolaylaştırır. İzin verilen değerler. Aşağıda 3 ila 7 arasında, d_staff.s_experience\u003e \u003d 3 ve d_staff.s_experience yazmak mümkün olacaktır.<=7 . Первый вариант способствует наглядности запроса – это раз, поиск на стороне СУБД может выполняться по отдельному алгоритму, специально оптимизированному для подобного вида ограничений – это два.

S_NAME, S_Experience, D_Staff'ten S_Position'u seçin (d_staff.s_position 20) ve d_staff.s_experience 3 ile 7 arasında


Operatör arasında kullanarak.

Adım 5. Operatör gibi

Bu harika operatör, şablonları kullanarak metin alanlarının değerlerine kısıtlamalar getirmenizi sağlar. Sözdizimini açıklamayacağım, bence örneğin ve böylece her şeyin açık olduğunu düşünüyorum. F.O.O. ile çalışanları araştırıyoruz. Başlamak "Dan", ortada buluşmalı "Şaft" ve her şeyi bitirmek gerekir "İch". Bazı DBM'lerde, anahtar kelime gibi, tarih ve saat değerleri ile de kullanılabilir.

D_NAME'den S_Daff'tan S_Daff'tan "S%" ve "% Satış%" ve S_Name "% ich" gibi S_Name gibi seçin.

D_SAME'den S_Daff'tan S_Name "C% Wall% Ich" gibi S_Name


Operatör gibi kullanın.

Adım 6. Masa ve alanların takvimleri

Tabloların sorgu adlarında kullanılır ve alanlar tanımlanabilir takma ad. Nasıl yapılır - aşağıda gösterilmiştir. Neden bu yapılır - 7. adımda da dahil olmak üzere aşağıdaki adımlarda gösterilecektir ve bu örnek en belirgin olanı göstermektedir. sQL'deki takma adları kullanın - Talebin sonucunun, kişinin algısının kolaylığı için gerekliliklere uygun olarak kaydedilmesi. SQL'deki tablonun veya alanların sözdizimimini belirlemek için, anahtar kelime kullanılır. Bu seçeneğin içindeki sorgunun (tablo başlığı) sonucu, üzerinde bir rapor yapmak için daha uygun görünüyor.

Çalışan olarak S_Name, S_Experience [iş deneyimi] olarak S_Position, D_Staff'ten personel olarak konum olarak seçin.


Tablo takibi ve alanların kullanımı.

Adım 7. "Şef - Subordinat" oranı

Bu örnek, SQL isteklerinin çalışılmasının "ilk adımlarını" tamamlar, bunların en zor olanıdır. Burada, doğrudan liderlikleriyle çalışanların bir listesini veren "programlama". Karmaşıklık, kayıtların ve diğerlerinin ve diğerlerinin aynı masada depolandığı ve burada takma adlar yapamayacağıdır. Sorgu işleme sırasında DBM'ler, kayıtları tek bir şekilde birleştirmek için iki farklı tabloya (takma adamlar personeli ve şefin altında) olduğu gibi D_Staff tablosuna erişecektir. mahkeme "Şef - alt" ilişkisine dayanarak. Oran aşağıdaki gibi simüle edilir: alttaki S_Chief_ID alanının değeri, XD_IID alan değerinin değerine karşılık gelir.

Staff.S_Name olarak SECTHER.S_NAME olarak, Staff.S_Position [Subordinat'ın konumu], Chief.S_Name AS Head, Chief.S_Position, D_Staff'tan personel olarak D_Staff, Staff.S_Chief_ID \u003d Chief.xd_iid


SQL'de bir tablo takma adı kullanarak hiyerarşi "kafa - köle" almak.

Her web geliştiricisi, SQL'yi veri tabanlarına istekleri yazmak için bilmelidir. Ve, phpmyadmin hiç kimsenin iptal edilmesine rağmen, düşük seviyeli bir SQL yazmak için ellerini lekelemek için genellikle gereklidir.

Bu yüzden SQL'in temelleri hakkında kısa bir gezi hazırladık. Hadi başlayalım!

1. Bir masa oluşturma

Tablo komutunu oluşturma, tablolar oluşturmak için tasarlanmıştır. Argümanlar olarak, sütunların adı ve veri türleri olarak belirtilmelidir.

Adına göre basit bir masa oluşturun aY.. 3 sütundan oluşur:

  • İD - Takvim yılındaki ay sayısı (tamsayı).
  • İsim. - Ayın adı (dize, en fazla 10 karakter).
  • günler. - Bu ayın sayısı (tamsayı).

Karşılık gelen SQL sorgusu böyle görünecek:

Tablo ayları oluşturun (ID int, isim varchar (10), gün int);

Ayrıca tablolar oluştururken, sütunlardan biri için birincil anahtarın eklenmesi önerilir. Bu, kayıtları benzersiz ve numune için istekleri hızlandırır. Bizim olgumuzda izin ayın adı benzersiz olacaktır (sütun İsim.)

Tablo ayları oluşturun (ID int, varchar (10), gün int, birincil anahtar (isim));

tarih ve saat
Veri tipiAçıklama
Tarihi.Tarih Değerleri
Datetime.Nane'e kadar tarih ve saat değerleri
Zaman.Zaman değerleri

2. Dize ekleme

Şimdi masamızı dolduralım monhs. Kullanışlı bilgi. Tabloya kayıt ekleme, Ekleme talimatı aracılığıyla yapılır. Bu talimatı kaydetmenin iki yolu vardır.

İlk yol, verilerin yerleştirileceği sütunların adlarını belirlemek ve yalnızca değerleri belirtmektir.

Bu kayıt yöntemi basit, ancak güvensizdir, çünkü proje genişletmesi ve tabloyu düzenlemenin garantisi olmadığı için, sütunlar daha önce olduğu gibi aynı sırayla yerleştirilecektir. Güvenli (ve aynı zamanda daha zahmetli) Kaydetme Yöntemleri Yöntemi, hem değerlerin hem de sütunların sırasını gösteren bir gösterge gerektirir:

İşte listedeki ilk değer. Değerler. İlk belirtilen sütun adına, vb.

3. Verilerin tablolardan çıkarılması

Veritabanından veri almak istediğimizde en iyi arkadaşımızdır. Çok sık kullanılmaktadır, bu yüzden bu bölümü çok dikkatli kullanın.

SELECT ifadesinin en basit kullanımı, tüm sütunları ve satırları tablodan döndüren bir sorgudur (örneğin, ada göre tablolar karakterler.):

"Karakterlerden" Seç *

Yıldız sembolü (*), tüm sütunlardan veri almak istediğimiz anlamına gelir. Böylece, SQL veritabanları genellikle birden fazla tablodan oluşur, anahtar kelimeyi, ardından masanın boşluktan takip edilmesi gerektiği gibidir.

Bazen tablodaki tüm sütunlardan veri almak istemiyoruz. Bunun için yıldız (*) yerine, istenen sütunların adlarını virgül aracılığıyla yazmalıyız.

Kimliği seçin, aydan itibaren isim

Ek olarak, birçok durumda, sonuçların belirli bir sırayla sıralanmasını istiyoruz. SQL'de, siparişi ile yapıyoruz. İsteğe bağlı bir değiştirici - ASC (varsayılan) artan veya desc, azalan sıralama alabilir:

Kimliğinizi seçin, ADI ADI ADI SİPARİŞ NAME ADI DESC

Siparişi kullanarak, SELECT ifadesinde en son olacağından emin olun. Aksi takdirde, bir hata mesajı verilecektir.

4. Veri filtreleme

SQL sorgusu kesinlikle tanımlanmış sütunları kullanarak bir veritabanından nasıl seçileceğini öğrendiniz, ancak daha fazla satır almamız gerekirse? Yardıma, durumun kurtarmaya geldiği yer, duruma bağlı olarak verileri filtrelememize izin verir.

Bu sorguda, sadece masadan ayları seçiyoruz aY., içinde, operatörün yardımı ile 30 günden fazla (\u003e).

Kimliğinizi seçin, gün\u003e 30 günden itibaren isim

5. Genişletilmiş veri filtreleme. Operatörler ve veya veya

Daha önce, bir kriter kullanarak verileri filtreleme kullandık. Daha karmaşık veri filtreleme için, kullanabilir ve veya operatörleri ve karşılaştırma operatörlerini kullanabilirsiniz (\u003d,<,>,<=,>=,<>).

İşte tüm zamanların en iyi albümü albümünü içeren bir masamız var. Kaya olarak sınıflandırılan ve 50 milyondan az kopyaların satıldığı kişileri seçelim. Bu, bir operatör yerleştirilerek ve bu iki koşul arasında kolayca yapılabilir.


Cenre \u003d "rock" ve sales_in_millions'taki albümlerden * seçin.<= 50 ORDER BY released

6. / / benzeri arasında

Ayrıca, çeşitli özel komutları da destekliyor ve en sık kullanılan istekleri hızlı bir şekilde kontrol etmenize izin veriyor. İşte buradalar:

  • Herhangi biri gerçekleştirilebilen koşullar aralığını belirtmek için kullanılır.
  • Arasında - değerin belirtilen aralıkta olup olmadığını kontrol eder
  • Gibi - Belirli desenleri arıyorum

Örneğin, albümleri seçmek istiyorsak pop ve ruh Müzik, kullanabiliriz ("value1", "value2").

("POP", "SOUL") cinsinin bulunduğu albümlerden * seçin;

1975 ve 1985 arasında yayınlanan tüm albümleri almak istiyorsak, yazmalıyız:

1975 ve 1985 arasında serbest bırakılan albümlerden * seçin;

7. İşlevler

Farklı faydalı şeyler yapan özellikleri olan SQL doldurucular. İşte en yaygın kullanılanlardan bazıları:

  • Count () - Satır sayısını döndürür
  • Sum () - Sayısal sütunun toplam miktarını döndürür
  • AVG () - ortalama değeri çeşitli değerlerden döndürür
  • Min () / max () - sütundan minimum / maksimum değer alır

Masamıza geçen yılı almak için böyle bir SQL sorgusu yazmalıyız:

Albümlerden maksimum (serbest bırakılmış) seçin;

8. Subqueries

Önceki paragrafta, verilerle basit hesaplamaları nasıl yapacağınızı öğrendik. Sonuçları bu hesaplamalardan kullanmak istiyorsak, yatırım yapmadan yapamadık. Diyelim ki geri çekilmek istiyoruz sANATÇI., albüm ve Çıkış tarihi Masadaki en eski albüm için.

Bu belirli sütunları nasıl elde edeceğini biliyoruz:

ALTIST, albüm, albümlerden tekrarlanan seçimi seçin;

Ayrıca en erken yılın nasıl elde edileceğini biliyoruz:

Albümden Min (serbest bırakıldı) seçin;

İhtiyacınız olan tek şey, iki istekleri kullanarak birleştirmektir:

Seçin Sanatçı, Albüm, Yayınlanan Albümlerden Çıktı \u003d (Albümlerden Min (Yayınlanan) Seçin);

9. Tabloları birleştirin

Daha karmaşık veritabanlarında birbirleriyle ilişkili birkaç tablo vardır. Örneğin, video oyunları hakkında iki tablo aşağıda sunulur ( video oyunları.) ve video oyunu geliştiricileri ( game_developers.).


Tablo video oyunları. Geliştirici sütunu var ( developer_id), ancak bir tamsayı içerir ve geliştiricinin adını değil. Bu numara bir tanımlayıcıdır ( İD) Oyun Geliştirici Tablosundan uygun geliştirici ( game_developers.) Mantıksal olarak iki listeyi bağlayarak, hem de aynı anda depolanan bilgileri kullanmamızı sağlayan.

Oyunlar hakkında bilmeniz gereken her şeyi iade eden bir istek yaratmak istiyorsak, hoparlörleri her iki tablodan da iletişim kurmak için iç birleştirme kullanabiliriz.

Video_games.Name, video_games.genre, game_developers.name, game_developers.country dan Video_Games.Developer_ID \u003d game_developers.id; game_developers.id;

Bu en kolay ve en yaygın katılım türüdür. Başka bir seçenek var, ancak daha az sıklıkta davalara uygulanırlar.

10. Diğer ad.

Önceki örneğe bakarsanız, iki sütun olduğunu fark edeceksiniz. İsim.. Kafaları karıştırır, bu yüzden tekrarlayan sütunlardan birini kuralım, örneğin, İsim. masadan game_developers. Aranacak geliştirici..

Tablo adını belirten talebi de azaltabiliriz: video oyunları. İsim vermek oyunlar., game_developers. - devs.:

Games.Name, Games.genre, DevS.Name Olarak Geliştirici olarak, Video_Games'tan Games Olarak Games Olarak Games.Developer_ID \u003d Devs.ID;

11. Veri Güncellemesi

Genellikle bazı satırlarda verileri değiştirmeliyiz. SQL'de bu, güncelleme talimatı kullanılarak yapılır. Güncelleme deyimi aşağıdakilerden oluşur:

  • Değerin değiştirme için olduğu tablolar;
  • Sütunların isimleri ve yeni değerleri;
  • Güncellemek istediğimiz bir çizgi ile seçildi. Bu yapılmazsa, tüm çizgiler tabloda değişecektir.

Aşağıda bir masa tV dizisi. Derecelendirmeleri ile TV dizisi ile. Ancak, masa küçük bir hata yapıştırın: seri Game of Thrones Ve bir komedi olarak tanımlanır, o aslında değil. Hadi düzeltelim!

TABLO DATA TV_SERIES TV_SERIES SET GÜNCELLEME TV \u003d "DRAM";

12. Verileri Silme

SQL ile bir masa satırını silmek çok basit bir işlemdir. İhtiyacınız olan tek şey bir masa seçmek ve kaldırmak istediğiniz bir dize seçmektir. Son dizeyi önceki örnekten tablodaki önceki örnekten silinalım. tV dizisi.. Bu, talimat\u003e silme işlemi kullanılarak yapılır.

Tv_series dosyasından silin.

Sil talimiyesi yazarken dikkatli olun ve durumun bulunduğu yerden emin olun, aksi takdirde tüm tablo satırları silinir!

13. Tabloyu Sil

Tüm satırları silmek istiyorsak, ancak tablonun kendisini bırakın, ardından kesik komutunu kullanın:

TRUNCATE table table_name;

Aslında silmek istediğimizde ve verileri ve masanın kendisiyle, bırak komutunu kullanacağız:

Damla tablo table_name;

Bu takımlara çok dikkatli olun. İptal edilemezler! / P\u003e

Bu konuda SQL öğreticimizi tamamlıyoruz! Biz hakkında çok şey söylemedik, ama zaten bildiğiniz şey size web kariyerinizde size bazı pratik beceriler vermek için yeterli olmalıdır.

SQL sunucusunun olanaklarını Microsoft'tan incelemeye devam ediyoruz ve sırayla bir bileşenimiz var. Tam Metin Arama, Rus versiyonu " Tam Metin Arama"Ve şimdi neden gerekli olduğunu ve bu bileşeni kullanarak SQL Server'da bu en tam metin aramanın nasıl uygulanacağını öğreneceğiz.

Ve elbette, tam metin aramasının temellerini göz önünde bulundurarak, yani başlayalım. Ne olduğu ve bunun için gerekli olduğu.

Tam metin arama nedir?

Tam Metin Arama - Bu, metin verilerindeki kelimeler veya kelime öbekleri arayışıdır. Genellikle, böyle bir arama türü, örneğin, bir milyon veya daha fazla satır içeren bir tabloda, örneğin, normal aramadan önemli ölçüde daha hızlı olduğundan, benzer tasarımdan önemli ölçüde daha hızlı olduğundan, çok miktarda veri içindeki metni aramak için kullanılır.

Tam metin arama özel bir dizin oluşturmayı içerir ( sıradan indekslerden farklıdır) Bu verilerde bulunan bir kelime sözlüğü olan metin verileri.

Tam metin aramayı kullanarak, bir tür uygulayabilirsiniz arama motoru belgeler ( şunlar. Kürek çekmek), şirketinizin veritabanındaki ifadelere göre veya ifadelere göre. Hızlı çalışmalarına ek olarak, bu da bulundu belgeleri sıralama yeteneğine de sahiptir, yani. Bulunan her bir çizginin rütbesini saklayın, başka bir deyişle, en alakalı kayıtları bulabilirsiniz, yani. İsteğiniz için en uygun olanı.

MS SQL Server'da tam metin arama özellikleri

  • Tam Metin Arama SQL sunucularında, yalnızca bireysel kelimelerle veya cümleleri değil, aynı zamanda tarafından da arayabilirsiniz. Önek ifadeleriÖrneğin, kelimenin veya cümlenin başlangıcını ayarlayın;
  • Ayrıca, kelimeleri, örneğin, sadece ve çoğuldaki çeşitli fiiller veya isim türlerini de arayabilirsiniz. tarafından türetilmiş ifadeler;
  • Başka bir deyişle veya cümlelerin yanında bulunan kelimeleri veya cümleleri bulmak için bir sorgu oluşturabilirsiniz. ifade;
  • Bulma olasılığı var belirli bir kelimenin eşanlamlı formları (eşbukat), yani. Örneğin, eğer eş anlamlılarsa, " Araba"Ve" Araba"- Bunlar, sonra kelimesini ararken eş anlamlıdır." Araba»Elde edilen set, kelime içeren satırları içerecektir" Araba»;
  • Sorguda, kelimeleri veya cümleleri belirleyebilirsiniz. ağırlıklı DeğerlerÖrneğin, sorguda birkaç kelime veya kelime öbeği belirtilmişse, 0,0 ila 1.0 arasında önem verilebilir ( 1.0, bunun en önemli kelime veya cümle olduğu anlamına gelir.);
  • Bazı kelimeler arayışında dikkat etmemek için kullanılabilir " durdurma kelimelerinin listesi", Yani Bu listeye göre, arama yapılmaz.

MS SQL Server'da tam metin aramanın uygulanması için hazırlık

Tam metin arama yapmaya başlamadan önce, birkaç önemli nokta bilmeniz gerekir:

  • Tam Metin Arama Bileşeni Tam Metin Arama'yı uygulamak için ( Tam Metin Arama) kurulmalı;
  • Tablo sadece bir tam metin dizini olabilir;
  • Tam metin dizini oluşturmak için, tablo bir sütun içeren bir benzersiz dizin içermeli ve boş değerlere izin vermez. Benzersiz bir kümelenmiş endeks kullanmanız önerilir ( veya sadece birincil anahtar), ilk sütun bir tamsayı veri türüne sahip olması gerekir;
  • Tam metin endeksi, veri türü olan sütunlarda oluşturulabilir: char, varchar, nchar, nvarchar, metin, ntext, görüntü, xml, varbinary veya varbinary (maks);
  • Tam metin dizini oluşturmak için önce tam bir metin dizini oluşturmanız gerekir. SQL Server 2008 ile başlayarak, tam metinli bir katalog, bir grup tam metin dizinleri, yani bir grubu belirten mantıksal bir konsepttir. sanal bir nesnedir ve dosya grubuna dahil değildir ( dizin, dizinin aynı anda oluşturulabileceği "Master" kullanarak tam metin dizini oluşturmanın bir yolu var, bu yöntem sadece aşağıda düşüneceğiz).

Not! Tam Metin Arama Uygulaması SQL Server 2008 R2'nin örnek sürümünde olacağım. Aynı zamanda, tam metin arama bileşeninin zaten yüklü olması durumunda, "SQL Server Kurulum Merkezi" aracılığıyla ilgili bileşeni ekleyerek yüklediği ima edilir. Uygun keneti koyun.

Aşağıdaki örneklerde, tam metin dizinleri ve dizinleri oluşturmak ve yönetmek için bir araç olarak, SQL Server Management Studio'yu kullanacağım.

Tam metin arama oluşturmak için kaynak verileri

Bir Testbase veritabanımız olduğunu varsayıyoruz ve yalnızca iki alanın olduğu bir test edilebilir tablo var, ilk (ID) birincil anahtardır ve ikincisi (TextData), tam olarak bir tam olarak uygulayacağımız bir metin verisidir. -Text Arama..

Tablo testtable oluşturun (ID int nisabı (1,1) NULL, TEXTDATA varchar (500) NULL, Kısıtlama PK_Testtable Birincil Anahtar Kümelenmiş (ID ASC))

Örneğin, aşağıdaki verileri içerecektir.


SQL Server'da tam metin dizini oluşturma

Tam bir metin dizini oluşturmak için ve dizin kullanılabilir veya SSMS grafik arayüzü veya T-SQL talimatları, her iki yolu da analiz edeceğiz.

T-SQL'de tam metin dizini oluşturma

Accent_Sensitivity ile FullText Katalog TestCatalog Oluşturun \u003d Varsayılan Yetkilendirme DBO GO

  • FullText Kataloğu oluşturun - Tam metin dizini oluşturma komutu;
  • TestCatalog - tam metin kataloğumuzun adı;
  • Accent_SenSitivity (ON | OFF) ile - seçenek, tam metin kataloğunun tam metin indeksleme için diyapritik işaretleri dikkate alıp almayacağını gösterir. Varsayılan olarak açık;
  • Varsayılan olarak - Dizinin varsayılan dizin olduğunu belirtmek için seçenek. Tam metin dizini durumunda, varsayılan dizin, dizini açıkça belirtmeden kullanılır;
  • Yetkilendirme DBO - Tam metin dizininin sahibini ayarlar, bir kullanıcı veya veritabanı rolü olabilir. İÇİNDE bu durum DBO'nun rolünü belirttik.

Tam metin kataloğu oluşturma grafik arayüzü Yönetim stüdyosu.

Aynı tam metin dizini, yönetim stüdyosu grafik arayüzünde oluşturulabilir. Bunu yapmak için, veritabanını açın, klasöre gidin Depolama -\u003e Tam Metin Katalogları, Bu öğenin sağ fare düğmesine tıklayın ve " Tam metin kataloğu oluşturun».


Bir katalog oluşturma penceresi, dizinin adını ve seçeneklerinin adını belirtiriz.


SQL Server'da tam metin kataloğunu değiştirmek ve kaldırmak

Dizin seçeneklerini değiştirmek için, örneğin, FullText katalog talimatını değiştirebilir, örneğin, kameralı işaretleri dikkate almak için kataloğumuzu yapalım, bunun için dizini yeni bir seçenekle yeniden oluşturacak SQL talimatını yazıyoruz.

Accent_Sensitivity ile REBUILD TESTCATALOG REBUILD \u003d KAPALI GO

Dizini silmek için, örneğin T-SQL talimatını kullanabilirsiniz.

Doldurma FullText Kataloğu TestCatalog

Bütün bunlar GUI GUIENTY Studio'da yapılabilir ( "Özellikler" dizininin parametrelerini değiştirmek için "Sil" silmek için)

SQL Server'da tam metin dizini oluşturma

Tam bir metin dizini oluşturduktan sonra, içinde tam metin dizini oluşturmaya başlayabilirsiniz. Bizim durumumuzda, test edilebilir TextData alanının katıldığı tam bir metin dizini oluşturmak istiyoruz.

T-SQL'de tam metin dizini oluşturma

Tam metin dizini oluşturmak için aşağıdaki SQL talimatını yazabilirsiniz.

Testtable (TextData) Hesap AçınGiriş Yap (TextData) Anahtar Endeksi PK_Testtable (Change_Tracking Auto) Gitme (TestCatalog)

  • FullText Index - Tam metin dizini oluşturma komutu;
  • TestTable (TextData) - Dizinde bulunan tablo ve sütun;
  • Anahtar Endeksi PK_Testtable - TestTable tablosunun benzersiz indeksinin adı;
  • Açık (TestCatalog) - Tam metin endeksinin TestCatalog tam metin dizininde oluşturulacağını gösterir. Bu parametreyi belirtmezseniz, dizin varsayılan tam metin dizininde oluşturulur;
  • (Change_Tracking Auto) ile - Baz tablosuna (TestTable) girilecek tüm değişikliklerin tam metin dizinimizde otomatik olarak görüneceğini söylüyoruz, yani. Otomatik doldurma.

Yönetim stüdyosu GUI'de tam metin dizini oluşturma

Tam metin dizini kullanılarak oluşturulabilir ve grafik araçları, bunun için tam metin dizininin özelliklerini açın ve öğeye gidin "için Masalar veya görünümler"İstediğiniz tabloyu, alanını, benzersiz bir dizini ve değişiklikleri izlemenin bir yolunu seçin. Bizim durumumuzda, yalnızca bir tane olan masamız ve bir alanımız var.


Tam metin dizininin değiştirilmesi ve kaldırılması

Gerekirse, tam metin dizininin parametrelerini değiştirebilirsiniz. Değişiklikleri otomatik olarak değiştirme yolunu değiştirelim. Grafiksel arayüzde değiştirmek için, " Tam Metin Kataloğu Özellikleri -\u003e Tablolar veya Görünümler"Tam metin dizin oluştururken kullandığımız.

Veya aşağıdaki kodu yazabilirsiniz

TestTable Set Change_Tracking'te FullText Indix'i değiştirin \u003d Manuel

Tam metin dizini silmek için, tabloyu aynı pencerede tam metin dizini ile ilişkili nesneler listesinden silmek için yeterlidir " Tam Metin Kataloğu Özellikleri -\u003e Tablolar veya Görünümler»


Veya bir T-SQL kodu yazın

Testtable üzerinde Doldurma FullText Index

Sihirbazı kullanarak tam metin katalog ve dizin oluşturma

Zaten birinci metin dizininden bahsettiğimde ve endeks Master, yani Adımlarla, bunun için, tam metin aramaya dahil etmek istediğimiz masadaki sağ fare düğmesini tıklatın ve " Tam Metin Dizini -\u003e Tam Metin Dizini Belirleme».

Not! Bundan önce, dizini sildim ve önceki örneklerde oluşturduğumuz dizin.


Sonuç olarak, SQL Server tam metin indeksleme sihirbazı başlatılacaktır.



Sonra tam metin dizinine dahil edilecek sütun.


Daha sonra değişiklikleri izlemek için bir yöntem seçmeniz gerekir.


Kataloğunun adını ve seçeneklerini, oluşturmak için bir dizin olmadığı varsayıldığı gibi, o zaman seçebilirdik.


Burada tam metin kataloğunu doldurmak için zaman çizelgesini özelleştirebiliriz.


"Bir katalog oluşturmak ve dizine tıklamak için" hazır».


Bir sonraki pencerede, tam bir metin dizini ve dizin oluşturmak için işlemlerin yürütülmesinin sonucunu göreceğiz. Benim durumumda, her şey başarılı oldu.


Böylece, bir Sihirbazı kullanarak tam bir metin dizininin oluşturulmasını ve aynı zamanda bir dizin oluşturduk.

Tam Metin İsteklerinin Örnekleri

Hemen, tam metin isteklerinde, aşağıdaki malzemelerde ve şimdiye kadar bir örnek olarak kabul edileceğini ve tam metin aramamızın çalıştığını, birkaç basit metin isteği yazalım.

Eğer hatırlıyorsanız, test edilebilir tablonuz teknolojilerin tanımlarını, genel olarak, küre ile ilgili tanımlarının tanımlarını içerir. Microsoft'un bir sözü olduğu tüm kayıtları almak istediğimizi varsayalım, bunun için tam metin bir istek yazıyoruz. anahtar kelime Örneğin:

(TextData, "" Microsoft "içeren TestTable'den * seçeneğini seçin)


Sonucu aldık, ancak örneğin, aynı zamanda alaka düzeyinde, başka bir deyişle, hangi çizgiler isteğimize karşılık geliriz. Bunu yapmak için, bulunan her girişin rütbesini yatıran kontaktable işlevi kullanacağız.

Table1.ID olarak Seçin, Rowrank.Rank AS, TestTable Table1 İçsel Üyeliği Kontak (Testtable, TextData, "" Microsoft "olarak (Testtable, TextData," "Microsoft" olarak seçin. Howrank.rank desc tarafından sipariş


Gördüğünüz gibi, rütbe yapıştırılmış ve çizgiler sıralanır. Sıralama algoritması, tam metin arama hakkında daha fazla bilgi olarak, SQL Server elektronik belgelerinde bulunabilir.

Bu bitirmek için önerir, umarım her şey açıktı, iyi şanslar!

Talepler Koruyucu alıntılar olmadan, çünkü Mysql, MS SQL ve Postgreek onlar farklı.

SQL İsteği: Tablodaki belirtilen (gerekli) alanların alınması

Seçin Kimlik, Country_Title, Table_Name'den Count_People

Kayıtların bir listesini alırız: tüm ülkeler ve nüfusları. İstenilen alanların adı virgülle belirtilir.

Seçin * table_name'den

* Tüm alanları gösterir. Yani, gösteriler olacak Her şey Veri alanları.

SQL Talebi: Kopyaları hariç tablodan kayıtları görüntüle

Table_name'den Distinct Country_Title Seçin

Kayıtların bir listesini alırız: kullanıcılarımızın bulunduğu ülkeler. Kullanıcılar bir çok ülke olabilir. Bu durumda, bu sizin isteğiniz.

SQL isteği: Belirli bir durumda tablodan kayıtları görüntüleyin

Select ID, Country_Title, City_TITLE'den Table_Name adlı kullanıcıdan\u003e 100000000

Kayıtların bir listesini alırız: İnsan sayısının 100.000.000'den fazla olduğu ülkeler.

SQL isteği: Uygulama tablosundan kayıtları görüntüle

SELECT ID, CITY_TITLE SADECE SİPARİŞ SİPARİŞTEN CITY_TITLE

Kayıtların bir listesini alırız: alfabetik sıraya göre şehirler. Başlangıçta, YA'nın sonunda.

SELECT ID, CITY_TITLE SEDE_TITLE SİPARİŞTEN CITY_TITLE DESC

Kayıtların bir listesini aldık: tam tersi şehirler ( DESC.). Başlangıçta, A'nın sonunda.

SQL Sorgu: Kayıt sayısını sayma

Table_name'den Count (* )'yı seçin

Tablodaki kayıtların numarasını (sayı) alıyoruz. Bu durumda, kayıt listesi yoktur.

SQL sorgusu: İstenilen kayıt aralığının çıkışı

Seçin * table_name sınırından 2, 3

Tablodan 2 (ikinci) ve 3 (üçüncü) giriş alıyoruz. İstek, Web sayfalarında bir navigasyon oluşturduğunuzda kullanışlıdır.

SQL Koşulları olan istekleri

Mantıksal operatörler kullanılarak verilen bir durum için tablodaki girişleri görüntüleyin.

SQL İsteği: İnşaat ve (ve)

Seçin Kimlik, City_Title, table_name adresinden Country \u003d "Rusya" ve yağ \u003d 1

Kayıtların bir listesini alıyoruz: Rusya'dan şehirler VE Yağa erişimi var. Operatör kullanıldığında Ve., Her iki koşulu da çakışmalıyım.

SQL isteği: tasarım veya (veya)

ID, City_Title adlı sanatçının Table_name'den Country \u003d "Rusya" veya Ülke \u003d "ABD"

Kayıtların bir listesini alıyoruz: Rusya'dan tüm şehirler VEYA AMERİKA BİRLEŞİK DEVLETLERİ. Operatör kullanıldığında Veya., en az bir koşulu çakışmalıdır.

SQL sorgusu: tasarım ve değil (değil)

Seçin, user_login ustası user_login adlı kişinin ocağı \u003d "Rusya" ve count_comments değil<7

Kayıtların bir listesini alıyoruz: Rusya'dan gelen tüm kullanıcılar VE Yapılmış AZ DEĞİL 7 yorum.

SQL isteği: (B) tasarımında

ID'yi seçin, user_login ustası adresinden ("Rusya", "Bulgaristan", "Çin")

Kayıtların bir listesini aldık: tüm kullanıcılar ( İÇİNDE.) (Rusya veya Bulgaristan veya Çin)

SQL İsteği: Tasarımda Değil (içeride değil)

ID'yi seçin, user_login ustası ustası nereden ("Rusya", "Çin")

Kayıtların bir listesini alırız: yaşayan tüm kullanıcılar ( DEĞİL.) (Rusya veya Çin).

SQL isteği: Boş tasarım (boş veya boş değerler)

ID'yi seçin, user_login table_name adresinden durum null nerede

Bir kayıt listesi alıyoruz: Durumun tanımlanmadığı tüm kullanıcılar. NULL ayrı bir konudur ve bu nedenle ayrı olarak kontrol edilir.

ID'yi seçin, user_login table_name adresinden durum null olmadığı yer

Kayıtların bir listesini alırız: Durumun tanımlandığı tüm kullanıcılar (sıfır değil).

SQL isteği: Tasarım gibi

ID'yi seçin, user_login table_name adresinden "ivan%" gibi soyadınız?

Kayıtların bir listesini alırız: Soyadı olan kullanıcılar "Ivan" kombinasyonu ile başlar. % İşareti herhangi bir sayıda karakter anlamına gelir. Bir işareti bulmak için "Ivan \\%" taramasını kullanmanız gerekir.

SQL Query: Tasarım Arasında

Seçin, user_login, user_login ___ 'dan Table_Name 25000 ile 50000 arasında maaş

Kayıtların bir listesini alırız: 25.000 ila 50.000 arasında maaş alan kullanıcılar.

Mantık operatörleri çok fazla, böylece SQL Server belgelerini detaylı olarak inceleyeceksiniz.

Karmaşık SQL istekleri

SQL Query: Birden fazla istek birleştirilmesi

(ID'yi seçin, user_login ___ 'dan Table_Name1) Union (Seçin, user_name_name2) dan user_login

Kayıtların bir listesini alırız: sisteme kayıtlı olan kullanıcıların yanı sıra forumda ayrı ayrı kayıtlı olan kullanıcılar. Birlik operatörü birkaç istek birleştirilebilir. Union, farklı seçim, yani tekrarlayan değerleri atıyor gibi davranır. Kesinlikle tüm kayıtları almak için, tüm operatörü birliği kullanmanız gerekir.

SQL İsteği: Max, Min, Sum, AVG, Sayın Alan Değerlerini Sayma

Tablodaki bir, maksimum sayaç değerinin sonucu:

Table_name adresinden Max (sayaç) seçin

Birinci çıkış, tablodaki minimum sayaç değerleri:

Table_name'den min (sayaç) seçin

Tablodaki sayaçların tüm değerlerinin çıktısı:

Table_name'den Sum (sayaç) seçin

Tablodaki ortalama metre değerinin çıktısı:

Table_name konumundan AVG (sayaç) seçin

Tablodaki metre sayısının çıktısı:

Table_name'den Counter (sayaç) seçin

Tablodaki Atölye Numarası 1'deki metre sayısının çıktısı:

Office \u003d "Shop Number 1" nin table_name'den Counter (Sayaç )'yı seçin.

Bunlar en popüler takımlar. SQL isteklerini bu tür sayma için kullanmanın mümkün olduğu, çünkü hiçbir programlama ortamı, kendi verilerini işlerken SQL Server'ın kendisinden daha fazla bir programlama ortamı karşılaştırılmadığından.

SQL Query: Gruplandırma Kayıtları

Kıta grubundan kıtadan kıta, toplam (Country_area) seçin.

Kayıtların bir listesini alırız: kıtanın adıyla ve tüm ülkelerinin karelerinin toplamı ile. Yani, her bir ülkenin alana sahip olduğu ülkelerin bir referans kitabı varsa, daha sonra grubu tasarıma göre kullanırsanız, her kıtanın boyutunu bulabilirsiniz (Kıtalar tarafından gruplandırmaya dayanarak).

SQL İsteği: Alias \u200b\u200b(Alias) aracılığıyla birden fazla tablo kullanma

O.Order_no, o.amount_paid, C.com Siparişler O, O.Custno \u003d C.CustNO ve C.City \u003d "Tyumen" ile olduğu gibi müşteri.

Kayıtların bir listesini alıyoruz: Sadece Tyumen'de yaşayan alıcılardan siparişler.

Aslında, bu türden uygun şekilde öngörülen bir veritabanı ile, sorgu en sık görülür, böylece yukarıda belirtilen koddan daha hızlı çalışan MySQL'ye özel bir operatöre tanıtıldı.

O.Order_no, O.Amount_paid, ZCOMANY'tan siparişlerden o sola Müşteriyi Z ON olarak birleştirin (z.custno \u003d o.custno)

İç içe kuşkular

SON SEÇİMİ \u003d (Max (Max (Max (Max (Max (Max (Max (maaş) seçin)

Bir kayıt alıyoruz: maksimum maaşla kullanıcı bilgileri.

Dikkat! İç içe subqueries, SQL sunucularındaki en dar koltuklardan biridir. Esnekliği ve gücü ile birlikte, sunucudaki yükü önemli ölçüde arttırırlar. Diğer kullanıcıların yıkıcı bir yavaşlamasına neden olan şey. Ekteki sorgular olduğunda çok sık özyineleme çağrıları vakası vardır. Bu nedenle, yatırım yapılan istekleri kullanmamayı şiddetle tavsiye ederim, ancak onları daha küçük bir şekilde böldüm. Veya yukarıda açıklanan sol birikim kombinasyonunu kullanın. Bu tür ek olarak, talepler güvenlik ihlalinin yükseltilmiş bir odağıdır. Yuvalanmış subqueries kullanmaya karar verirseniz, onları çok dikkatli bir şekilde tasarlamak ve ilk olarak veritabanı kopyalarında (test bazları) yapmaya başlamak gerekir.

SQL veri değiştirmeyi ister

SQL isteği: ekleme

Talimat Ekle. Tabloya kayıt eklemenize izin verin. Basit kelimeler, tablodaki verilerle bir satır oluşturun.

Seçenek Numarası 1. Talimat genellikle kullanılır:

Table_name (ID, user_login) değerlerine (1, "ivanov"), (2, "Petrov")

Masada " tablo ismi."Hemen 2 (iki) kullanıcı eklenecektir.

Seçenek Numarası 2. Stil kullanmak daha uygundur:

Table_name set id \u003d 1, user_login \u003d "ivanov" ekleyin; Table_name set id \u003d 2, user_login \u003d "Petrov" ekleyin;

Bunun avantajları ve dezavantajları vardır.

Temel dezavantajlar:

  • Birçok küçük SQL sorgulaması, bir büyük SQL sorgusundan biraz daha yavaş gerçekleştirilir, ancak diğer talepler servis kuyruğunda duracaktır. Yani, eğer büyük bir SQL sorgusu 30 dakika tamamlanacaksa, o zaman tüm bu zamanlarda, isteklerin geri kalanı bambu içecek ve sıralarını bekler.
  • Talep, önceki seçenekten daha büyük.

Ana avantajlar:

  • Küçük SQL istekleri sırasında, diğer SQL istekleri engellenmez.
  • Okumada kolaylık.
  • Esneklik. Bu düzenlemede, yapıya uymayınız, ancak yalnızca gerekli verileri ekleyebilirsiniz.
  • Benzer şekilde arşivler oluştururken, bir satırı kolayca kopyalayabilir ve komut satırı (konsol) üzerinden başlatabilirsiniz, böylece tüm arşivin tamamını geri yüklemez.
  • Kayıt stili, hatırlaması daha kolay olan güncelleme talimatına benzer.

SQL İsteği: Güncelleme

Table_name set güncelleme user_login \u003d "ivanov", user_surname \u003d "ivanov" nerede id \u003d 1

Masada " tablo ismi."Kimlik numarası \u003d 1 olan kayıtlarda, user_login ve user_surname alanlarının değerleri belirtilen değerlerle değiştirilecektir.

SQL İsteği: Sil

Table_name'den silin.

Table_name tablosu, 3 numaralı numara ile silinir.

  1. Tüm alan adlarının küçük harflerle yazılması önerilir ve gerekirse onları Delphi, Perl, Python ve Ruby gibi farklı programlama dilleriyle uyumluluk için zorla uzaydan "_" ile bölün.
  2. SQL ekipleri, okunabilirlik için büyük harflerle yazıyor. Her zaman kodu ve diğer insanları okuyabildikten sonra ve büyük olasılıkla kendinizin içinden sonra zaman miktarını hatırlayın.
  3. Alanları isimden başından itibaren arayın ve ardından işlem yapın. Örneğin: city_status, user_login, user_ ad.
  4. SQL, PHP veya PERL dillerinde sorunlara neden olabilecek farklı dillerde yedek kelimeleri (ad, sayım, bağlantı) gibi sorunlara neden olmaya çalışın. Örneğin: Bağlantı MS SQL'de kullanılabilir, ancak MySQL'de ayrılmıştır.

Bu malzeme günlük çalışma için kısa bir sertifikadur ve bir veritabanının SQL sorgularının kaynağı olan süper bir Mega yetkili kaynağına sahip değillerdir.