Przejdź do głównej zawartości

Podpowiadanie składni


Większość miejsc w systemie, wymagających pisania złożonych formuł (wyliczanie wartości, SQL, wyrażenia regularne) jest wyposażonych w funkcję inteligentnego podpowiadania składni, którą aktywujemy klawiszami Ctrl+Spacja.

Zostanie wyświetlone wówczas okno zawierające drzewo podpowiedzi pogrupowanych według znaczenia – tabele, możliwe JOINy, sugerowane klucze, kolumny tabel, funkcje, słowniki, słowa kluczowe, odwołania do elementów dodatkowych, sekcje skryptów itp.

image

W oknie tym można nawigować za pomocą klawiszy:

  1. góra / dół – przewijanie i zmiana zaznaczonego elementu,
  2. prawo / lewo – skok do rodzica i zwijanie/rozwijanie gałęzi,
  3. litery, cyfry, _ - wyszukiwanie elementów (aktualny klucz wyszukiwania wyświetlany jest w małym polu tekstowym u dołu okna),
  4. enter / dwuklik / operator arytmetyczny – wybór elementu i wstawienie do wyrażenia.

Aby podpowiadanie działało, część wyrażenia od jego początku do miejsca wstawienia musi być poprawna składniowo. Ponadto, w sytuacji, gdy podpowiedzi początku wyrażenia będą zależały od dalszej jego części, ta dalsza część musi również być poprawna – musi być osiągalna przez parser, pominąwszy element aktualnie podpowiadany.

Przykład szybkiego pisania wyrażenia

Poniżej przedstawiono funkcje działania podpowiadania składni podczas definiowania nowej listy w edytorze SQL.

  1. Zacznij pisać SELECT i wciśnij Ctrl+Spacja. Tutaj zobaczymy niewiele - jedynie niektóre słowa kluczowe SQL z kontekstu wyrażenia, funkcje i inne elementy dodatkowe, ale nie listę tabel czy kolumn. Proponujemy pisać SQL w nieco innej kolejności:

image

  1. Wpisz SELECT * FROM wciśnij Ctrl+Spacja. Tu system podpowie listę tabel, w tym zadeklarowanych i CTE.

image

  1. Kolejno wpisuj SELECT * FROM table1 (tutaj tabela Order) i wciśnij Ctrl+Spacja. Tu zobaczymy dodatkowo listę dostępnych JOINów według relacji zdefiniowanych w bazie (a także, w oddzielnej grupie, wszystkie tabele, dostępne słowa kluczowe itd.). Po wybraniu jednej z nich, warto czasem uzupełnić wyrażenie o aliasy dla tabel.

image

  1. Kolejno SELECT * FROM table1 t1 (tutaj tabela Order) JOIN table2 t2 (tutaj tabela Clients) i wciśnij Ctrl+Spacja Tutaj zobaczymy dostępne, gotowe warunki według zdefiniowanych relacji. Można też oczywiście posłużyć się podpowiedziami nazw kolumn z poszczególnych tabel (poprzedzonych już aliasami) aby ułożyć własne warunki złączenia. Co ciekawe, częściej potrzebne kolumny będące częścią kluczy głównych, obcych, występujące w indeksach czy też zawierające w nazwie słowo _REL_ zostały zgrupowane pod wspólnym elementem PK/FK/rel

image

  1. Wpisz kolejną składową (itd… dalsze JOINy, podzapytania, CROSS/OUTER APPLY…) WHERE i naciśnij Ctrl+Spacja.

image

  1. SELECT i wciśnij Ctrl+Spacja FROM table1 t1 (tutaj tabela Order). Na tym etapie, jeśli dalsza część wyrażenia jest poprawna, zobaczymy listę dostępnych kolumn (lub aliasów) z wszystkich dostępnych niżej tabel (t1, t2, …) wraz z nullowalnością, typami, komentarzami (jeśli zostały zdefiniowane) pogrupowane według tabel i podzapytań źródłowych.

Na liście podpowiedzi można zaznaczyć więcej elementów, co spowoduje dodanie do wyrażenia ich listy oddzielanej przecinkami. W oknie podpowiadania składni zaznacz pola i wybierz Enter.

image

Zaznaczanie według kontekstu​

Edytor jest wyposażony w możliwość inteligentnego poszerzenia zaznaczenia według kontekstu. Przykładowo, jeśli ustawimy kursor w drugim wywołaniu GetDate()

SELECT cn.ContactID
FROM Person.Contact cn
JOIN HumanResources.Employee emp ON cn.ContactID = emp.ContactID
CROSS APPLY ( SELECT top 1 * FROM Person.Address WHERE cn.AdditionalContactInfo = cn.ContactID )
WHERE cn.ModifiedDate is null AND emp.ModifiedDate is null
OR cn.ModifiedDate > GetDate() AND emp.ModifiedDate > GetDate()

i naciśniemy kilka razy Ctrl+→ (lub Ctrl+W) zaznaczenie poszerzy się do kolejno:

GetDate
GetDate()
emp.ModifiedDate > GetDate()
cn.ModifiedDate > GetDate() AND emp.ModifiedDate > GetDate()
cn.ModifiedDate is null AND emp.ModifiedDate is null
OR cn.ModifiedDate > GetDate() AND emp.ModifiedDate > GetDate()

Zbyt szerokie zaznaczenie można zwęzić klawiszami Ctrl+←.

Funkcja ta jest przydatna do szybkiego kopiowania logicznych fragmentów wyrażeń lub zastępowania ich innymi, a także do weryfikacji kolejności wiązania operatorów, np. OR / AND, UNION / EXCEPT / INTERSECT itd.

Zobacz również​

Zapytania do list

Tworzenie rekordu in-line