Прашања за пишување на серверот Ms SQL. Извршување на SQL прашања во Менаџмент Студио. Додавање на Просечно пресметано поле

Изрази на табеласе нарекуваат подпрашања кои се користат онаму каде што се очекува присуство на табела. Постојат два вида изрази на табелата:

    изведени табели;

    генерализирани изрази на табелата.

Овие две форми на изрази на табела се дискутирани во следните потсекции.

Изведени табели

Изведена табелае израз на табелата вклучен во клаузулата FROM на барањето. Изведените табели може да се користат во случаи кога користењето псевдоними на колони не е можно бидејќи SQL преведувачот обработува друга изјава пред да биде познат алијасот. Примерот подолу покажува обид да се користи алијас на колона во ситуација кога друга клаузула се обработува пред алијасот да биде познат:

КОРИСТЕТЕ SampleDb; ИЗБЕРИ МЕСЕЦ (EnterDate) како enter_month FROM Works_on GROUP BY enter_month;

Обидот да се изврши ова барање ќе ја произведе следнава порака за грешка:

Порака 207, Ниво 16, состојба 1, линија 5 Неважечко име на колона „enter_month“. (Порака 207: Ниво 16, состојба 1, линија 5 Неважечко име на колона enter_month)

Причината за грешката е што клаузулата GROUP BY се обработува пред да се обработи соодветната листа на изјавата SELECT, а алијасот на колоната enter_month е непознат кога се обработува групата.

Овој проблем може да се реши со користење на изведена табела која го содржи претходното барање (без клаузулата GROUP BY) бидејќи клаузулата FROM се извршува пред клаузулата GROUP BY:

КОРИСТЕТЕ SampleDb; SELECT enter_month FROM (SELECT MONTH(EnterDate) as enter_month FROM Works_on) AS m GROUP BY enter_month;

Резултатот од ова барање ќе биде вака:

Вообичаено, изразот на табела може да се стави каде било во изјавата SELECT каде може да се појави име на табела. (Резултатот од изразот на табела е секогаш табела или, во посебни случаи, израз.) Примерот подолу ја покажува употребата на израз на табела во списокот за избор на изјавата SELECT:

Резултатот од ова барање:

Генерички изрази на табелата

Заеднички израз на табела (OTB)е именуван израз на табела поддржан од јазикот Transact-SQL. Вообичаените изрази на табели се користат во следните два типа на прашања:

    нерекурзивен;

    рекурзивен.

Овие два типа на барања се дискутирани во следните делови.

OTB и нерекурзивни прашања

Нерекурзивната форма на OTB може да се користи како алтернатива на изведените табели и прикази. Типично OTB се определува со СО клаузулии дополнително барање кое упатува на името употребено во клаузулата WITH. Во Transact-SQL, значењето на клучниот збор WITH е двосмислено. За да се избегне двосмисленост, исказот што претходи на исказот СО треба да се прекине со точка-запирка.

КОРИСТЕТЕ AdventureWorks2012; SELECT SalesOrderID FROM Sales.SalesOrderHeader WHERE TotalDue > (SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = "2005") AND Freight > (SELECT AVG(TotalDue)HederaRHE)FROM 005 ")/2,5;

Барањето во овој пример избира нарачки чии вкупни даноци (TotalDue) се поголеми од просекот на сите даноци и чии товарни трошоци (Freight) се поголеми од 40% од просечните даноци. Главното својство на ова барање е неговата должина, бидејќи подпрашањето треба да се напише двапати. Еден од можни начинида се намали големината на конструкцијата за пребарување би било да се создаде приказ кој содржи подпрашање. Но, ова решение е малку комплицирано бидејќи бара креирање приказ и потоа негово бришење откако барањето ќе заврши со извршувањето. Подобар пристап би бил да се создаде OTB. Примерот подолу ја покажува употребата на нерекурзивен OTB, што ја скратува дефиницијата за барање погоре:

КОРИСТЕТЕ AdventureWorks2012; WITH price_calc(година_2005) AS (SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = "2005") SELECT SalesOrderID FROM Sales.SalesOrderHeader WHERE WHEREOrderHeader WHERE FROMDue >FELECLESOrderHeader ROM цена_кал в ) /2,5;

Синтаксата WITH клаузула во нерекурзивните прашања е како што следува:

Параметарот cte_name го претставува името OTB што ја дефинира добиената табела, а параметарот column_list ја претставува листата на колони од изразот на табелата. (Во примерот погоре, OTB се нарекува price_calc и има една колона, year_2005.) Параметарот inner_query претставува изјава SELECT која го одредува множеството резултати на соодветниот израз на табелата. Дефинираниот израз на табелата потоа може да се користи во outer_query. (Надворешното барање во примерот погоре користи OTB price_calc и неговата колона year_2005 за да го поедностави двојно вгнезденото барање.)

OTB и рекурзивни прашања

Овој дел претставува материјал со зголемена сложеност. Затоа, кога го читате за прв пат, се препорачува да го прескокнете и подоцна да се вратите на него. OTB може да се користат за имплементација на рекурзии бидејќи OTB може да содржат референци за себе. Основната OTB синтакса за рекурзивно барање изгледа вака:

Параметрите cte_name и column_list го имаат истото значење како во OTB за нерекурзивни барања. Телото на клаузулата WITH се состои од две барања комбинирани од операторот УНИЈА СИТЕ. Првото барање се повикува само еднаш и почнува да го акумулира резултатот од рекурзијата. Првиот операнд на операторот UNION ALL не упатува на OTB. Ова барање се нарекува референтно барање или извор.

Второто барање содржи упатување до OTB и го претставува неговиот рекурзивен дел. Поради ова, тој се нарекува рекурзивен член. Во првиот повик до рекурзивниот дел, референцата OTB го претставува резултатот од референтното барање. Рекурзивниот член го користи резултатот од првиот повик за барање. После ова, системот повторно го повикува рекурзивниот дел. Повик до рекурзивен член престанува кога претходниот повик до него враќа празен сет на резултати.

Операторот UNION ALL се приклучува на тековно акумулираните редови, како и дополнителните редови додадени од тековниот повик до рекурзивниот член. (Присуството на операторот UNION ALL значи дека дупликатните редови нема да се отстранат од резултатот.)

Конечно, параметарот outer_query го одредува надворешното барање што OTB го користи за да ги врати сите повици до спојувањето на двата члена.

За да ја демонстрираме рекурзивната форма на OTB, ја користиме табелата Airplane дефинирана и пополнета со кодот прикажан во примерот подолу:

КОРИСТЕТЕ SampleDb; CREATE TABLE Airplane(ContainingAssembly VARCHAR(10), ContainedAssembly VARCHAR(10), QuantityContained INT, UnitCost DECIMAL(6,2)); INSERT INTO Airplane VALUES ("Airplane", "Fuselage", 1, 10); ВНЕСЕТЕ ВО ВРЕДНОСТИ НА АВИОН („Airplane“, „Wings“, 1, 11); INSERT INTO Airplane VALUES ("Airplane", "Tail", 1, 12); ВНЕСЕТЕ ВО ВРЕДНОСТИ НА АВИОН („Трупот на авионот“, „Салон“, 1, 13); Вметнете ВО ВРЕДНОСТИ НА АВИОН („Трупот на авионот“, „Кабината“, 1, 14); Вметнете ВО ВРЕДНОСТИ НА АВИОН („Трупот на авионот“, „Нос“, 1, 15); INSERT INTO Airplane VALUES („Кабина“, NULL, 1,13); INSERT INTO Airplane VALUES („Кабинска кабина“, NULL, 1, 14); ВНЕСЕТЕ ВО ВРЕДНОСТИ НА АВИОН („Нос“, NULL, 1, 15); Вметнете ВО ВРЕДНОСТИ НА АВИОН („Крилја“, NULL,2, 11); INSERT INTO Airplane VALUES („Опашка“, NULL, 1, 12);

Табелата Авион има четири колони. Колоната ContainingAssembly го идентификува склопот, а колоната ContainedAssembly ги идентификува деловите (еден по еден) што го сочинуваат соодветното склопување. Сликата подолу покажува графичка илустрација на можен тип на авион и неговите составни делови:

Табелата на авион се состои од следните 11 редови:

Следниот пример ја користи клаузулата WITH за да дефинира барање што ја пресметува вкупната цена на секоја изработка:

КОРИСТЕТЕ SampleDb; СО список_на_делови(склоп1, количина, цена) AS (ИЗБЕРЕТЕ Содржи склопување, КоличинаСодржана, Единечна цена од авион WHERE ContainedAssembly IS NULL UNION ALL SELECT a.ContainingAssembly, a.QuantityAssembly, a.QuantityASTContained. ) FROM list_of_parts l, Airplane a WHERE l.assembly1 = a.ContainedAssembly) SELECT assembly1 „Дел“, количина „Количина“, цена „Цена“ ОД список_делови;

Клаузулата WITH дефинира OTB листа со име list_of_parts, која се состои од три колони: склопување1, количина и цена. Првата изјава SELECT во примерот се повикува само еднаш за да се зачуваат резултатите од првиот чекор од процесот на рекурзија. Изјавата SELECT на последната линија од примерот го прикажува следниот резултат.

SQL или Structured Query Language е јазик кој се користи за управување со податоци во систем на релациона база на податоци (RDBMS). Оваа статија ќе ги покрие најчесто користените SQL команди, што секој програмер треба да го познава. Овој материјал е идеален за оние кои сакаат да го подигнат своето знаење за SQL пред интервју за работа. За да го направите ова, погледнете ги примерите дадени во статијата и запомнете дека сте ги проучувале базите на податоци во парови.

Забележете дека некои системи на бази на податоци бараат точка-запирка на крајот од секоја изјава. Запирката е стандарден покажувачна крајот од секоја изјава во SQL. Примерите користат MySQL, па затоа е потребна точка-запирка.

Поставување база на податоци за примери

Создадете база на податоци за да покажете како функционираат тимовите. За да работите, ќе треба да преземете две датотеки: DLL.sql и InsertStatements.sql. После тоа, отворете терминал и најавете се во конзолата MySQL користејќи ја следнава команда (написот претпоставува дека MySQL е веќе инсталиран на системот):

Mysql -u root -p

Потоа внесете ја вашата лозинка.

Извршете ја следнава команда. Да ја наречеме базата на податоци „универзитет“:

КРЕИРАЈ БАЗА НА ПОДАТОЦИ универзитет; КОРИСТЕТЕ универзитет; ИЗВОР ; ИЗВОР

Наредби за работа со бази на податоци

1. Погледнете ги достапните бази на податоци

ПОКАЖИ БАЗИ НА ПОДАТОЦИ;

2. Направете нова база на податоци

КРЕИРАЈ БАЗА НА ПОДАТОЦИ;

3. Избор на база на податоци за користење

КОРИСТЕТЕ ;

4. Увезете SQL команди од датотека .sql

ИЗВОР ;

5. Избришете ја базата на податоци

СОПАДИ БАЗА НА ПОДАТОЦИ ;

Работа со табели

6. Погледнете ги табелите достапни во базата на податоци

ПОКАЖИ ТАБЕЛИ;

7. Направете нова табела

КРЕИРАЈ ТАБЕЛА ( , , ПРИМАРЕН КЛУЧ ( ), СТРАНСКИ КЛУЧ ( ) РЕФЕРЕНЦИ ());

Ограничувања за интегритет при користење на КРЕИРАЈ ТАБЕЛА

Можеби ќе треба да креирате ограничувања за одредени колони во табела. Кога креирате табела, можете да ги поставите следниве ограничувања:

  • ќелијата на табелата не може да има NULL вредност;
  • примарен клуч - ПРИМАРЕН КЛУЧ (коло_име1, коло_име2, ...) ;
  • странски клуч - СТРАНСКИ КЛУЧ (col_namex1, …, col_namexn) РЕФЕРЕНЦИ Име на табела (col_namex1, …, col_namexn) .

Можете да наведете повеќе од еден примарен клуч. Во овој случај, ќе добиете композитен примарен клуч.

Пример

Направете табела „инструктор“:

Инструктор за CREATE TABLE (ID CHAR(5), име VARCHAR(20) NOT NULL, dept_name VARCHAR(20), плата NUMERIC(8,2), PRIMARY KEY (ID), FOREIGN KEY (dept_name) РЕФЕРЕНЦИ одделение(dept_name));

8. Информации за табела

Можете да прегледате различни информации (тип на вредност, клуч или не) за колоните на табелата со следнава команда:

ОПИШИ ;

9. Додавање податоци на табелата

Вметнете ВО (, , , ...) ВРЕДНОСТИ ( , , , …);

Кога додавате податоци на секоја колона во табела, не треба да наведете имиња на колони.

Вметнете ВО ВРЕДНОСТИ ( , , , …);

10. Ажурирање на податоците од табелата

АЖУРИРАЈ ПОСТАВЕТЕ = , = , ... КАДЕ ;

11. Отстранување на сите податоци од табелата

ИЗБРИШИ ОД ;

12. Избришете табела

ПАДНА ТАБЕЛА ;

Наредби за креирање прашања

13. ИЗБЕРЕТЕ

SELECT се користи за преземање податоци од одредена табела:

ИЗБЕРИ , , … ОД ;

Следната команда може да ги прикаже сите податоци од табелата:

ИЗБЕРИ * ОД ;

14. ИЗБЕРЕТЕ ДИСТИНКТ

Колоните на табелите може да содржат дупликат податоци. Користете SELECT DISTINCT за да добиете само не-дупликат податоци.

ИЗБЕРЕТЕ РАЗЛИЧНИ , , … ОД ;

15. КАДЕ

Можете да го користите клучниот збор WHERE во SELECT за да наведете услови во барањето:

ИЗБЕРИ , , … ОД КАДЕ ;

Во барањето може да се наведат следниве услови:

  • споредба на текстот;
  • споредба на нумерички вредности;
  • логички оператори И (и), ИЛИ (или) и НЕ (негација).

Пример

Обидете се со следните команди. Обрнете внимание на условите наведени во КАДЕ:

ИЗБЕРЕТЕ * ОД курсот WHERE dept_name=’Комп. Наука.'; ИЗБЕРИ * ОД курсот WHERE кредити>3; SELECT * FROM курс WHERE dept_name="Comp. Sci." И кредити>3;

16. ГРУПА ПО

Операторот GROUP BY често се користи со агрегатните функциикако што се COUNT, MAX, MIN, SUM и AVG за групирање на излезните вредности.

ИЗБЕРИ , , … ОД ГРУПА ПО ;

Пример

Да го прикажеме бројот на предмети за секој факултет:

ИЗБЕРИ COUNT(course_id), dept_name ОД курс GROUP BY dept_name;

17. ИМАЊЕ

Клучниот збор HAVING е додаден во SQL бидејќи WHERE не може да се користи со збирни функции.

ИЗБЕРИ , , ... ОД ГРУПА ПО ИМАЊЕ

Пример

Ајде да прикажеме листа на факултети кои имаат повеќе од еден курс:

ИЗБЕРИ COUNT(id_course), dept_name ОД курсот GROUP BY dept_name HAVING COUNT(course_id)>1;

18. НАРАЧАЈ ПО

ORDER BY се користи за сортирање на резултатите од барањето во опаѓачки или растечки редослед. ORDER BY ќе се подреди по растечки редослед освен ако не се наведени ASC или DESC.

ИЗБЕРИ , , … ОД НАРАЧАЈ ПО , , …ASC|DESC;

Пример

Ајде да прикажеме листа на курсеви во растечки и опаѓачки редослед на кредити:

ИЗБЕРИ * ОД курс ПОРАЧАЈ ПО кредити; ИЗБЕРИ * ОД курсот НАРЕДУВАЈ ПО кредити ОПИС;

19. ПОМЕЃУ

BETWEEN се користи за избор на вредности на податоци од одреден опсег. Нумерички и текстуални вредности, како и датуми.

ИЗБЕРИ , , … ОД КАДЕ ПОМЕЃУ И ;

Пример

Ајде да прикажеме список на инструктори чија плата е повеќе од 50.000, но помала од 100.000:

ИЗБЕРИ * ОД инструктор КАДЕ плата помеѓу 50000 И 100000;

20. LIKE

Операторот LIKE се користи во WHERE за одредување шема за пребарување за слична вредност.

Постојат два бесплатни оператори кои се користат во LIKE:

  • % (ниту еден, еден или повеќе знаци);
  • _ (еден лик).
ИЗБЕРИ , , … ОД КАДЕ ДОПАЃА ;

Пример

Да прикажеме листа на курсеви чии имиња содржат „to“ и листа на курсеви чии имиња започнуваат со „CS-“:

ИЗБЕРИ * ОД курсот КАДЕ Наслов КАКО „% до%“; ИЗБЕРИ * ОД курс КАДЕ курс_ид КАКО „CS-___“;

21. ВО

Користејќи IN, можете да наведете повеќе вредности за клаузулата WHERE:

ИЗБЕРИ , , … ОД КАДЕ ВО ( , , …);

Пример

Ајде да прикажеме список на студенти од специјалност на Комп. Наука, Физика и Електро. инж.:

SELECT * FROM student WHERE dept_name IN ('Comp. Sci.', 'Physics', 'Elec. Eng.');

22. ПРИКЛУЧЕТЕ СЕ

JOIN се користи за поврзување на две или повеќе табели користејќи заеднички атрибути во нив. Сликата подолу покажува различни начинисе приклучува во SQL. Забележете ја разликата помеѓу левиот надворешен спој и десниот надворешен спој:

ИЗБЕРИ , , … ОД ПРИКЛУЧЕТЕ СЕ НА = ;

Пример 1

Ќе прикажеме список на сите курсеви и релевантни информации за факултетите:

ИЗБЕРИ * ОД курсот ПРИДРУЖИ СЕ на одделот ON course.dept_name=department.dept_name;

Пример 2

Ќе прикажеме список на сите потребни курсеви и детали за нив:

SELECT prereq.course_id, наслов, dept_name, credits, prereq_id FROM prereq LEFT OUTER JOIN курс ON prereq.course_id=course.course_id;

Пример 3

Ќе прикажеме список на сите курсеви, без разлика дали се потребни или не:

SELECT course.course_id, наслов, dept_name, кредити, prereq_id FROM prereq RIGHT OUTER JOIN курс ON prereq.course_id=course.course_id;

23. Поглед

View е виртуелна SQL табела создадена како резултат на извршување на израз. Таа содржи редови и колони и е многу слична на обична SQL табела. Прегледот секогаш ги прикажува најновите информации од базата на податоци.

Создавање

СОЗДАДЕТЕ ПОГЛЕД AS SELECT , , … ОД КАДЕ ;

Отстранување

ПРИКАЗ НА ПАКИ ;

Пример

Ајде да создадеме приказ кој се состои од курсеви со 3 кредити:

24. Збирни функции

Овие функции се користат за да се добие збирен резултат поврзан со податоците за кои станува збор. Следниве се најчесто користени збирни функции:

  • COUNT (col_name) - го враќа бројот на редови;
  • SUM (col_name) - го враќа збирот на вредностите во оваа колона;
  • AVG (col_name) - ја враќа просечната вредност на дадена колона;
  • MIN (col_name) - ја враќа најмалата вредност на дадена колона;
  • MAX (col_name) - Ја враќа најголемата вредност на дадена колона.

25. Вгнездени подпрашања

Вгнездените подпрашања се SQL пребарувања кои вклучуваат клаузули SELECT , FROM и WHERE вгнездени во друго барање.

Пример

Ајде да ги најдеме курсевите што се предаваа во есента 2009 година и пролетта 2010 година:

SELECT DISTINCT course_id FROM секција WHERE семестар = 'Есен' AND year= 2009 AND course_id IN (SELECT course_id FROM секција WHERE семестар = 'Пролет' И година= 2010);

SQL - Структуриран јазик за пребарување.
ВО овој прегледЌе ги разгледаме најчестите типови на SQL барања.
Дефиниран е стандардот SQL ANSI(Американскиот национален институт за стандарди).
SQL е јазик насочен конкретно кон релациони бази на податоци.

SQL партиција:


ДДЛ
(Јазик за дефиниција на податоци) - таканаречениот јазик за опис на шемата во ANSI, се состои од команди кои создаваат објекти (табели, индекси, прегледи и така натаму) во базата на податоци.
DML(Јазик за манипулација со податоци) е збир на команди кои одредуваат кои вредности се претставени во табелите во кое било дадено време.
DCD(Јазик за управување со податоци) се состои од објекти кои одредуваат дали да му дозволат на корисникот да изврши одредени дејства или не. Тие се дел од ANSI DDL. Не заборавајте ги овие имиња. Ова не се различни јазици, туку делови од SQL команди групирани според нивните функции.

Типови на податоци:

SQL Server - Типови на податоци

Опис

бигинт (инт 8)

бигинт (инт 8)

бинарни(n)

бинарни(n) или слика

карактер
(синоним кал)

национално карактерили ntext

карактер кој се разликува(синоним char варира варчар)

различен национален карактерили ntext

Датум време

датум време

децимална

ака нумерички

двојна прецизност

двојна прецизност

цел број (инт 4) (синоним: инт)

цел број (инт 4)

национален карактер(синоним: национален карактер, нчар)

национален карактер

Нумерички(синоними: децимална, дек)

различен национален карактер(синоними: националниот карактер се разликува, нварчар)

Национален карактер е различен

Мало време

датум време

ситница (инт 2)

ситница (инт 2)

Мали пари

sql_variant

Повеќе не е поддржано

Следно
Почнувајќи со SQL Server 2005, не се препорачува за употреба.

Временски печат

Не се поддржани

малата (инт 1)

малата (инт 1)

Единствен идентификатор

единствен идентификатор

варбинарен(n)

варбинарен(n) или слика

малите датуми

датум време

ситница (инт 2)

ситница (инт 2)

мали пари

sql_variant

Не се поддржани

временски печат

Не се поддржани

малата (инт 1)

малата (инт 1)

единствен идентификатор

единствен идентификатор

варбинарен(n)

варбинарен(n) или слика

Табела со типови на податоци во SQL Server 2000

ШТО Е БАРАЊЕ?

Барањее команда што ја давате на вашата програма за база на податоци. Прашањата се дел од јазикот DML. Сите SQL барања се состојат од една команда. Структурата на оваа команда е измамливо едноставна бидејќи мора да ја проширите за да извршите многу сложени проценки и манипулации со податоци.

SELECT команда:

ИЗБЕРИ„Избери“ е најчесто користената команда; се користи за избор на податоци од табелата.
Тип на барање користејќи SELECT:

ИД ОДБЕРЕТЕ ИД, корисничко име, град, роденден од базата на корисници;

Таквото барање ќе ги прикаже од табелата users_base сите вредности на колоните наведени, одделени со запирки по SELECT команди. Исто така, можете да ги прикажете сите колони со еден знак, * т.е. ИЗБЕРИ * ОД user_base ; - ваквото барање ќе ги прикаже сите податоци од табелата.

Избери командна структура:

SELECT (Имињата на колоните одделени со запирки што треба да се прикажат во барањето) FROM (име на табелата во базата на податоци)
- Ова е наједноставниот тип на барање. Постојат дополнителни команди за практично пронаоѓање податоци (видете подолу „Функции“)

DML команди:

Вредностите може да се постават и отстранат од полињата користејќи три команди DML (Јазик за манипулација со податоци):
ВНЕСЕТЕ(Вметни)
АЖУРИРАЈ(Ажурирање, измена),
ИЗБРИШИ(Избриши)

INSERT команда:

INSERT INTO users_base (корисничко име, град, роденден) VALUES ('Alexander', 'Rostov', '06/20/1991');

Командата INSERT доаѓа со префиксот INTO (во до), потоа во загради се имињата на колоните во кои мораме да вметнеме податоци, потоа доаѓа командата VALUES (вредности) и во заградите вредностите доаѓаат на ред (тоа е неопходно да се набљудува редоследот на вредностите со колоните, вредностите мора да бидат по истиот редослед како и колоните што ги наведовте).

Наредба за ажурирање:

АЖУРИРАЈ user_base SET user_name = 'Alexey';

Командата UPDATE ги ажурира вредностите во табела. Прво доаѓа самата команда UPDATE, потоа името на табелата, по командата SET (сет), потоа името на колоната и неговата вредност во наводници (наводниците се ставаат ако вредноста е во формат на низа, ако е нумеричка вредност и колоната не е врзан за типот на податоци vchar или кој било друг тип на низа, наводниците немаат значење.)

Команда DELETE:

ИЗБРИШИ ОД users_base КАДЕ user_name = 'Vasily';

Командата DELETE го брише целиот ред и го идентификува редот користејќи го критериумот WHERE. Во овој случај, ова барање ќе ги избрише сите редови во кои вредноста на колоната user_name е Василиј. За критериумот WHERE и други ќе зборуваме малку подоцна.

Критериуми, функции, услови итн. што ни помага во SQL:

Клаузулата WHERE е клаузула од командата SELECT и други команди на DML што ви овозможува да поставите предикати чија состојба може да биде точно или неточна за кој било ред во табелата. Командата ги враќа само оние редови од табелата за кои оваа изјава е вистинита.
Пример:
ИЗБЕРЕТЕ ИД, град, роденден_ден ОД users_base КАДЕ user_name = ‘Alexey’;- ваквото барање ќе ги прикаже само оние редови што одговараат на условот WHERE, имено сите редови во кои колоната user_name ја има вредноста Alexey.

ORDER BY - услов за сортирање на избраните редови. Има 2 критериуми ASC и DESC. ASC (сортирање од А до Ш или од 0 до 9)

DESC (спроти ASC).
Пример:
ИЗБЕРИ ИД, град,_роденден ОД user_base НАРАЧАЈ ПО корисничко_име ASC; - таквото барање ќе прикаже вредности подредени по колоната корисничко_име од А до Ш (А-З; 0-9)

Овој услов може да се користи и во врска со клаузулата WHERE.
Пример:
ИЗБЕРИ ИД, град,_роденден ОД users_base КАДЕ корисничко_име = ‘Alexey’ ORDER BY id ASC;

DISTINCT е аргумент кој ви дава начин да ги елиминирате двојните вредности од вашата клаузула SELECT. Оние. ако имате дупликат вредности во колона, да речеме user_name, тогаш DISTINCT ќе ви покаже само една вредност, на пример, имате 2 лица по име Alexey во вашата база на податоци, тогаш барањето со помош на функцијата DISTINCT ќе ви покаже само 1 вредност тоа се среќава прво...
Пример:
ИЗБЕРЕТЕ ДИСТИНКТНО корисничко_име ОД базата на корисници;- ваквото барање ќе ни ги покаже вредностите на сите записи во колоната user_name, но тие нема да се повторуваат, т.е. ако сте имале бесконечен број вредности што се повторуваат, тогаш тие нема да бидат прикажани...

И - зема два Булови (во форма А И Б) како аргументи и ги оценува во однос на вистината дали и двете се вистинити.
Пример:
SELECT * FROM users_base КАДЕ град = 'Ростов' И корисничко_име = 'Александар';- ќе ги прикаже сите вредности од табелата каде што името на градот се појавува во една линија (во овој случај, Ростов и корисничкото име Александар.

ИЛИ - зема два Булови (во форма А ИЛИ Б) како аргументи и оценува дали еден од нив е точен.

SELECT * FROM users_base КАДЕ град = 'Ростов' ИЛИ ​​корисничко_име = 'Александар';- ќе ги прикаже сите вредности од табелата каде што во линијата се појавува името на градот Ростов или корисничкото име Александар.

НЕ - зема еден Булова (во форма NOT A) како аргументи и ја менува неговата вредност од неточно во точно или точно во неточно.
SELECT * FROM users_base КАДЕ град = 'Ростов' ИЛИ ​​НЕ корисничко_име = 'Александар';- ќе ги прикаже сите вредности од табелата каде што името на градот Ростов се појавува во една линија или корисничкото име не е точно Александар.

IN - дефинира збир на вредности во кои дадена вредност може или не може да биде вклучена.
SELECT * FROM users_base WHERE city IN ('Владивосток', 'Ростов');- ваквото барање ќе ги прикаже сите вредности од табелата што ги содржат имињата на наведените градови во градската колона

Помеѓу е сличен на IN операторот. За разлика од дефинирањето со броеви од множество, како што прави IN, BETWEEN дефинира опсег чии вредности мора да се намалат за да се направи предикатот вистинит.
ИЗБЕРИ * ОД user_base КАДЕ ИД ПОМЕЃУ 1 И 10;- ги прикажува сите вредности од табелата што ќе бидат во опсег од 1 до 10 во колоната id

COUNT - Ги произведува броевите на редовите или не-NULL вредностите на полињата што ги избрало барањето.
ИЗБЕРИ COUNT (*) ОД user_base ;- ќе го прикаже бројот на редови во оваа табела.
ИЗБЕРИ COUNT (DISTINCT user_name) FROM users_base ;- ќе го прикаже бројот на линии со кориснички имиња (не се повторува)

SUM - ја произведува аритметичката сума на сите избрани вредности за дадено поле.
SELECT SUM (id) FROM users_base ;- ќе го прикаже збирот на вредностите на сите редови од колоната id.

AVG - ги просекува сите избрани вредности на ова поле.
SELECT AVG (id) FROM users_base ;- ќе го прикаже просекот на сите избрани вредности на колоната id

MAX - ја произведува најголемата од сите избрани вредности за ова поле.

MIN - ја произведува најмалата од сите избрани вредности за ова поле.

Креирање табели:

КРЕИРАЈ ТАБЕЛА user_base (ид цел број, текст на корисничко име, градски текст, датум на раѓање);- извршувањето на таква команда ќе доведе до создавање на табелата за која дадов примери... Овде се е едноставно, ја пишуваме командата CREATE TABLE, потоа името на табелата што сакаме да ја креираме, па во заграда, разделени со запирки, имињата на колоните и нивниот тип на податоци. Ова е стандарден начин за креирање табела во SQL. Сега ќе дадам пример за креирање табели во SQL Server 2005:

ПОСТАВЕТЕ ANSI_NULLS ВКЛУЧЕНИ
ОДИ
ПОСТАВЕТЕ ВКЛУЧЕНО QUOTED_IDENTIFIER
ОДИ
АКО НЕ ПОСТОИ (ИЗБЕРЕТЕ * ОД sys.objects WHERE object_id = OBJECT_ID(N."") И внесете (N"U"))
ЗАПОЧНЕТЕ
КРЕИРАЈ ТАБЕЛА .(

НЕ НИШТА,
НЕ НИШТА,
НЕ НИШТА,
ПРИМАРЕН КЛУЧ СО КОЛСТРИРАН
А.С.Ц.


КРАЈ
ОДИ
ПОСТАВЕТЕ ANSI_NULLS ВКЛУЧЕНИ
ОДИ
ПОСТАВЕТЕ ВКЛУЧЕНО QUOTED_IDENTIFIER
ОДИ
АКО НЕ ПОСТОИ (ИЗБЕРЕТЕ * ОД sys.objects WHERE object_id = OBJECT_ID(N."") И внесете (N"U"))
ЗАПОЧНЕТЕ
КРЕИРАЈ ТАБЕЛА .(
ИДЕНТИТЕТ (1,1) НЕ НУЛАТЕН,
НУЛА,
НУЛА,
ПРИМАРЕН КЛУЧ СО КОЛСТРИРАН
А.С.Ц.
)СО ВКЛУЧЕНО (IGNORE_DUP_KEY = OFF).
) ВО TEXTIMAGE_ON
КРАЈ
ОДИ
ПОСТАВЕТЕ ANSI_NULLS ВКЛУЧЕНИ
ОДИ
ПОСТАВЕТЕ ВКЛУЧЕНО QUOTED_IDENTIFIER
ОДИ
АКО НЕ ПОСТОИ (ИЗБЕРЕТЕ * ОД sys.objects WHERE object_id = OBJECT_ID(N."") И внесете (N"U"))
ЗАПОЧНЕТЕ
КРЕИРАЈ ТАБЕЛА .(
ИДЕНТИТЕТ (1,1) НЕ НУЛАТЕН,
НУЛА,
НУЛА,
ПРИМАРЕН КЛУЧ СО КОЛСТРИРАН
А.С.Ц.
)СО ВКЛУЧЕНО (IGNORE_DUP_KEY = OFF).
) НА
КРАЈ

Синтаксата во SQL Server 2005 е друга тема, само сакав да покажам дека ги опишав основите на SQL програмирањето, можете сами да го достигнете врвот знаејќи ги основите.

Ако имате какви било прашања на оваа тема, пишете ми

Развијте апликација која ги демонстрира основните операции на податоци во базата на податоци како што е MS SQL Server, имено:

  • поврзување на базата на податоци со апликацијата;
  • прикажување на табели со бази на податоци на формуларот;
  • додавање нов влездо базата на податоци;
  • уредување запис;
  • бришење запис.

Како основа е земена базата на податоци Education.dbo, чиј процес на креирање е детално опишан

Слика 1 ја прикажува структурата на базата на податоци Education.dbo. Како што може да се види од сликата, базата на податоци се нарекува:

sasha-pc\sqlexpress.Education.dbo

Овде „sasha-pc“ е идентификаторот на компјутерот на мрежата, „sqlexpress“ е името на серверот за базата на податоци, „Education.dbo“ е името на базата на податоци.

Ориз. 1. База на податоци Education.dbo

Базата на податоци содржи две табели: Студент и Сесија. Структурата на табелите е следна.

Ученичка маса.

Табела за сесии.

Изведба

1. Креирајте нов проект во MS Visual Studio како апликација Windows Forms.

Креирајте нов проект од типот Windows Forms Application. Детално е опишан пример за создавање нов проект

2. Креирајте нов приказ за прикажување податоци од табелата Студент.

За прикажување на податоци од табелите на базата на податоци, можете да користите различни начини. Еден од нив е создавањето на прегледи, кои се генерираат со помош на MS Visual Studio.

Во нашиот случај, податоците од табелата ќе бидат прикажани на формуларот во контрола од типот DataGridView. По креирањето погледи, многу е погодно да се поврзат со елементите на DataGridView.

За да креирате приказ, треба да ја повикате командата „Додај нов поглед“ од контекстното мени, која се повикува со десен клик на елементот „Views“ од базата на податоци Education.dbo (Слика 2).

Ориз. 2. Повикување на командата за додавање нов приказ

Како резултат на тоа, ќе се отвори прозорецот „Додај табела“ (Слика 3). Во прозорецот треба да ги изберете табелите што се додадени на приказот.

Ориз. 3. Избирање на табелите на кои ќе се базира новиот приказ

Во нашиот случај, изберете ја табелата Студент и потврдете го вашиот избор со кликнување на копчето Додај. Следниот чекор е да го затворите прозорецот со избирање на копчето Затвори.

По завршувањето на чекорите, ќе се генерира прозорец во кој треба да ги изберете полињата што треба да се прикажат во приказот (на формуларот). Изберете ги сите полиња (Слика 4).

Кога ќе изберете полиња, полињата од табелата Студент се прикажуваат на горниот дел од работната област. Со помош на глувчето, можете да ги изберете саканите полиња за презентација.

Соодветно на тоа, средната област на прозорецот ги прикажува имињата на избраните полиња, табелата во која тие постојат (види слика 4), способноста за сортирање, филтрирање итн.

На дното на областа се прикажува соодветниот текст за барање SQL што се користи за креирање на приказот.

Ориз. 4. Избирање на полиња од табелата Студент за прикажување во приказот

По изборот на тим

Датотека->Зачувај ги сите Датотека->Зачувај поглед1

Ќе се отвори прозорец во кој треба да го наведете името на приказот. Поставете го името „Преглед на студент“ (Слика 5).

Ориз. 5. Одредување име за приказот

По завршувањето на чекорите, прозорецот за презентација ќе изгледа како што е прикажан на Слика 6.

Ориз. 6. Преглед на претставувањето на учениците во базата на податоци

Сега можете да хостирате DataGridView контрола и да ја поврзете со приказ.

3. Поставете ја контролата DataGridView и конфигурирајте ја врската со базата на податоци.

Пред да ја поставите контролата DataGridView, треба да отидете во режим на дизајнирање форма „Form1.cs“.

Елементот DataGridView е табела што може да прикажува податоци. Оваа контрола се наоѓа во панелот ToolBox. Прво, малку ја прилагодуваме големината на формуларот, а потоа ја ставаме контролата DataGridView на неа (Слика 7). Ова стандардно ќе создаде пример на објект со име dataGridView1.

Ориз. 7. Прозорец за контрола на DataGridView и избор на извор на податоци

Откако ќе ја поставите контролата DataGridView на формуларот, во горниот десен агол можете да изберете да го конфигурирате изворот на податоци. Соодветно на тоа, ќе се отвори прозорецот „DataGridView Tasks“. Во овој прозорец треба да го изберете скокачкото мени „Избери извор на податоци“.

Во менито што се отвора, изберете ја командата „Додај извор на податоци за проектот...“ (сл. 7). По ова, се отвора прозорец со волшебник, во кој изворот на податоци е последователно избран.

Слика 8 го покажува „ Волшебник за конфигурација на извор на податоци“, во која е избран типот на извор на податоци. Во нашиот случај, инсталираме „База на податоци“.

Ориз. 8. Избор на тип на извор на податоци

Во следниот прозорец (слика 9) се избира моделот на извор на податоци. Треба да изберете DataSet.

Ориз. 9. Избор на модел на извор на податоци

Во прозорецот прикажан на Слика 10, треба да ја наведете податочната врска што сакате да ја користите за да се поврзете со базата на податоци. Во нашиот случај, треба да ја избереме базата на податоци " sasha-pc\sqlexpress\Education.dbo«.

Ориз. 10. Избор на податочна врска

Следниот прозорец (слика 11) предлага зачувување на низата за поврзување во конфигурациската датотека на апликацијата. Оставаме сè како што е и продолжуваме на следниот прозорец.

Ориз. 11. Предлог за зачувување на низата за поврзување со базата на податоци Connection String во конфигурациската датотека на апликацијата

По креирањето на врска со базата на податоци, се прикажуваат различни објекти на базата на податоци (Слика 12). Во нашиот случај, треба да го избереме приказот „Преглед на студент“ и сите полиња од него. Проверените полиња ќе се прикажат во компонентата од типот DataGridView.

Ориз. 12. Избирање на објекти на базата на податоци за прикажување во DataGridView

По избор на копчето Finish, ќе се прикажат избраните објекти (View Student view) од базата Education.dbo (Слика 13).

Ориз. 13. Контрола DataGridView со избрани полиња View Student

На сличен начин, можете да конфигурирате прикази кои содржат полиња од која било табела со база на податоци. Исто така, полињата од различни табели може да се прикажат во еден приказ.

4. Поставување на изгледот на контролата DataGridView.

Ако ја извршите апликацијата, ќе добиете податоци од приказот View Student, што одговара на табелата Студент во базата на податоци (слика 14).

Ориз. 14. Стартување на апликацијата за извршување

Како што можете да видите од Слика 14, податоците во табелата dataGridView1 се прикажуваат нормално, но дизајнот може да се прилагоди.

Контролата на типот DataGridView ви овозможува да го прилагодите изгледот на полињата што се прикажуваат.

За да повикате команди за уредување полиња, само повикајте го контекстното мени со десен клик на контролата dataGridView1.

Менито има различни корисни команди, кои ви дозволуваат да го контролирате изгледот и работата на DataGridView:

  • команда за блокирање на контролата (Lock Controls);
  • команда за уредување на полињата кои се прикажани во приказот (Уреди колони...);
  • команда за додавање нови полиња, на пример пресметани (Додај колона).

Во нашиот случај, треба да ја изберете командата „Уреди колони...“ (Слика 15).

Ориз. 15. Наредете „Уреди колони...“ од контекстното мени

Како резултат на тоа, ќе се отвори прозорецот „Уреди колони“, во кој можете да го прилагодите изгледот на полињата за презентација по ваш вкус (Слика 16).

Ориз. 16. Прозорец за поставување на приказот на полињата во приказот „View Student“.

Во прозорецот на Слика 16, за кое било поле можете да го конфигурирате името, порамнувањето, ширината, способноста за уредување податоци итн.

5. Низа за поврзување

За да направите промени во базата на податоци, треба да добиете низа за поврзување со базата на податоци Connection String .

Постојат различни начини да се добие низата за поврзување со базата на податоци. Еден од нив се базира на читање на оваа линија во прозорецот Properties на базата на податоци Education.dbo (сл. 17).

Ориз. 17. Дефинирање на низа за поврзување

За да ја зачувате низата во програмата, внатрешна променлива од типот низа. Користејќи ја таблата со исечоци, копирајте ја низата за поврзување во опишаната променлива од типот стринг .

Во текстот на датотеката „Form1.cs“ на почетокот на описот на класата Form1, треба да ја опишете променливата:

стринг conn_string = ;

Во моментов текстот на класата Form1 е како што следува:

јавна делумна класа Образец1 : Образец { стринг conn_string = @"Извор на податоци=(локален)\SQLEXPRESS;Почетен каталог=Образование;Интегрирана безбедност=Точно;Здружување=Неточно"; јавна форма 1() { InitializeComponent(); } приватна празнина Form1_Load (испраќач на објекти, EventArgs e) { // TODO: Оваа линија код ги вчитува податоците во табелата „educationDataSet.View_Student“. Ти можешпреместете го или отстранете го, по потреба. } }

6. Создавање нова формада се демонстрираат команди за манипулација со податоци.

За да можете да ги обработите податоците од тековниот запис, треба да креирате нова форма. Детално е опишан процесот на креирање нова форма во MS Visual Studio - C#.

Додавањето нова форма се прави со командата:

Проект -> Додај формулар за Windows...

Во прозорецот „Нова ставка“ што се отвора, треба да го изберете елементот „Форма за Windows“.

Оставете го името на датотеката на новата форма како стандардно „Form2.cs“.

Слика 18 покажува приказ на новата форма.

На формуларот ги ставаме следниве видови контроли:

  • две контроли на копчињата (копчињата ОК и Откажи). Соодветно, ќе бидат примени два објекти со име button1 и button2;
  • четири Label контроли за креирање информативни пораки;
  • четири контроли од типот TextBox за внесување податоци во полињата Num_book, Name, Group, Year.

Треба да ги конфигурирате следните својства на контролите:

  • во контролното копче1 својство Текст = „Во ред“;
  • во контролното својство на копчето2 Текст = „Откажи“;
  • во својството на контролното копче1 DialogResult = "OK ";
  • во својството на контролното копче2 DialogResult = „Откажи“;
  • во контролната ознака1 својство Текст = „Број_книга“;
  • во контролната ознака2 својство Текст = „Име“;
  • во контролната ознака3 својство Текст = „Група“;
  • во label4 контролирајте го својството Текст = „Година“.

Ја конфигурираме и видливоста на контролите на TextBox. За да го направите ова, во сите контроли textBox1, textBox2, textBox3, textBox4, вредноста на имотот Modifiers = „public“.

Ориз. 18. Поглед на новосоздадената форма

7. Додавање копчиња за повикување наредби за манипулирање со податоци од табелата Студент.

За понатамошна работа, треба да го користите глувчето за да се префрлите на главната форма Form1.

Додадете три копчиња во главната форма на апликацијата Form1 (копче). Автоматски ќе се креираат три објектни променливи со имињата button1, button2, button3. Во секое од овие копчиња ги правиме следните поставки (прозорец со својства):

  • во својствата на копчето копчето1 Текст = „Вметни…“ (внеси запис);
  • во својствата на копчето копче2 Текст = „Уреди…“ (промени запис);
  • во копче копчето3 својство Текст = „Избриши“.

Како резултат на направените промени, главната форма ќе изгледа како што е прикажано на Слика 19.

Ориз. 19. Главна форма на апликацијата

8. Програмирање на настан за кликнување на копчето „Вметни...“.

Ракувачот за настани за кликнување на копчето „Вметни...“ изгледа вака:

приватно копче за празнина1_Click_1(испраќач на објекти, EventArgs e) { стринг cmd_text; Form2 f2 = new Form2(); ако (f2.ShowDialog() == DialogResult .OK) { cmd_text = „Внесете ВО студентските вредности (“ + """ + f2.textBox1.Text + "" , "" + f2.textBox2.Text + "" , "" + f2.textBox3.Text + "" , " + f2.textBox4.Text + ")" ; // креирајте врска со базата на податоци SqlConnection sql_conn = нова SqlConnection(conn_string); // креирајте команда во јазикот SQL SqlCommand sql_comm = нова SqlCommand (cmd_text, sql_conn); sql_conn.Open(); // отворена врска sql_comm.ExecuteNonQuery(); // изврши команда во јазикот SQL sql_conn.Close(); // затворете ја врската овој .view_StudentTableAdapter.Fill(this .educationDataSet.View_Student); } }

Прво се нарекува Форма2. По добивањето на резултатот „OK“ (притискање на соодветното копче), во Form2 пополнетите полиња во елементите од типот TextBox се вклучени во низата за пребарување SQL. SQL барањето за додавање нов ред изгледа вака:

Вметнете ВО ученикот VALUES (вредност1, вредност2, вредност3, вредност4)

каде што вредноста 1 одговара на бројот на оценката; вредност2 – презиме на ученикот; вредност3 – група во која ученикот студира; вредност4 – година на влез.

Низата за поврзување со базата на податоци Connection String е опишана во променливата conn_string (види став 5). Објектот од класата SqlConnection ја поврзува апликацијата со извори на податоци. Покрај тоа, класата Connection се справува со автентикација на корисникот, вмрежување, идентификација на базата на податоци, баферирање на конекција и обработка на трансакции.

Командата SQL која додава запис во табела е инкапсулирана во класата SqlCommand. Конструкторот на класата SqlCommand зема два параметри: SQL стринг за барање (cmd_text променлива) и објект од класата SqlConnection.

Методот ExecuteNonQuery() се имплементира во интерфејсот IDBCommand. Методот имплементира SQL команди кои не враќаат податоци. Таквите команди вклучуваат команди INSERT, DELETE, UPDATE, како и складирани процедури кои не враќаат податоци. Методот ExecuteNonQuery() го враќа бројот на вклучени записи.

9. Програмирање на настан за кликнување на копчето „Уреди...“.

Управувачот со настани за кликнување на копчето „Уреди...“ изгледа вака:

приватно копче за празнина2_Кликнете (испраќач на објект, EventArgs e) ( низа cmd_text; Form2 f2 = нов Form2 (); int индекс; стринг num_book; индекс = dataGridView1.CurrentRow.Index; num_book = Конвертирајте .ToString (dataGridextBox1); .Text = num_book; f2.textBox2.Text = Convert .ToString(dataGridView1.Value); f2.textBox3.Text = Convert .ToString(dataGridView1.Value); f2.textBox4.Text = Convert .VdaStrue); ако (f2.ShowDialog() == DialogResult .OK) ( cmd_text = „АЖУРИРАЈ СЕТ за студентски број = „“+ f2.textBox1.Text + "", " + " = "" + f2.textBox2.Text + "", " + " = "" + f2.textBox3.Text + "", " + "Година = " + f2 .TextBox4.Text + "What num_book =" " + num_book +" "" "" SQLConNection SQL_Conn = Ново SQLConNECTION (Conn_String); SQLCMAND SQL_comm = Нов SQLCMANT (CMD_TEXT, sqlqlqlnry (.exeql_conn_n); ) ; sql_conn.Close(); this .view_StudentTableAdapter.Fill(this .educationDataSet.View_Student); ) )

Овој управувач извршува команда UPDATE SQL што ја менува моменталната вредност на активниот запис.

10. Програмирање на настан за кликнување на копчето „Избриши“.

Управувачот со настани за кликнување на копчето „Избриши“ изгледа вака:

приватно копче за празнина3_Click(испраќач на објект, EventArgs e) ( низа cmd_text = "ИЗБРИШИ ОД Студент" ; int индекс; низа num_book; индекс = dataGridView1.CurrentRow.Index; num_book = Convert.ToString (dataGridView1.Vtal); "ИЗБРИШЕ ОД Студентот WHERE . = ""+ num_book + """; SqlConnection sql_conn = нова SqlConnection (conn_string); SqlCommand sql_comm = нова SqlCommand (cmd_text, sql_conn); sql_conn.Open(); sqlxery(); _Студентски адаптер за маса. Пополнете (ова .educationDataSet.View_Student);

Овој управувач ја извршува командата SQL DELETE за да избрише запис.

Поврзани теми

  • Издавање табела со база на податоци на Microsoft Access

SQL Server Management Studio обезбедува комплетна алатка за креирање на сите видови прашања. Со негова помош можете да креирате, зачувувате, вчитувате и уредувате барања. Покрај тоа, можете да работите на прашања без да се поврзете на кој било сервер. Оваа алатка, исто така, обезбедува можност за развој на прашања за различни проекти.

Можете да работите со прашања користејќи или Уредувач на прашања или Solution Explorer. Оваа статија ги опфаќа двете од овие алатки. Во прилог на овие две компоненти на SQL Server Management Studio, ќе го разгледаме дебагирањето на SQL кодот со помош на вградениот дебагер.

Уредник за прашања

За да го отворите панелот Уредувач на прашања Уредник за прашања, на алатникот SQL Server Management Studio, кликнете на копчето Ново барање. Овој панел може да се прошири за да ги прикаже копчињата за креирање на сите можни прашања, а не само барања за мотори на база на податоци. Стандардно е креиран ново барањеКомпонента на моторот на базата на податоци, но со кликнување на соодветното копче на лентата со алатки, можете исто така да креирате прашања MDX, XMLA итн.

Статусната лента на дното на панелот Уредувач на прашања го означува статусот на врската на уредникот со серверот. Ако не се поврзете автоматски со серверот, кога ќе го стартувате Уредувачот за пребарување, се појавува дијалог прозорец Поврзи се со сервер, што ви овозможува да го изберете серверот на кој ќе се поврзете и режимот за автентикација.

Уредувањето на барањата офлајн обезбедува поголема флексибилност отколку кога е поврзано на сервер. За уредување барања, не е неопходно да се поврзете со серверот, а прозорецот за уредувач на барања може да се исклучи од еден сервер (со користење на командата од менито Query --> Connection --> Disconnect) и да се поврзе со друг без да се отвори друг прозорец на уредувачот. За да изберете офлајн режим за уредување, користете го дијалогот Поврзи се со серверот што се отвора кога ќе го стартувате уредникот. специфичен типбарања, едноставно кликнете на копчето Откажи.

Можете да го користите Уредникот за прашања за да ги извршите следните задачи:

    креирање и извршување Transact-SQL извештаи;

    зачувување на креираните изјави на јазикот Transact-SQL во датотека;

    креирање и анализа на планови за извршување за вообичаени прашања;

    графички илустрирајќи го планот за извршување на избраното барање.

Уредникот за прашања содржи вграден уредувач на тексти лента со алатки со збир на копчиња за различни дејства. Главниот прозорец на уредувачот на барања е поделен хоризонтално на панел за прашања (на врвот) и панел за резултати (на дното). Изјавите на Transact-SQL (т.е. прашања) што треба да се извршат се внесуваат во горниот панел, а резултатите од обработката на системот на тие барања се прикажани во долниот дел. Сликата подолу покажува пример за внесување на барање во уредувачот на барања и резултатите од извршувањето на тоа барање:

Првата изјава за барање USE одредува да се користи базата на податоци SampleDb како тековна база на податоци. Втората изјава, SELECT, ги враќа сите редови од табелата Вработен. За да го извршите ова барање и да ги прикажете резултатите, на алатникот Уредувач на прашања, кликнете на копчето Изврши или притиснете F5.

Можете да отворите неколку прозорци на Query Editor, т.е. направи повеќекратни врски со еден или повеќе примероци на моторот за бази на податоци. Се создава нова врска со кликнување на копчето Ново барање на лентата со алатки SQL Server Management Studio.

Статусната лента на дното на прозорецот Уредувач на барања ги прикажува следните информации поврзани со извршувањето на изјавите за барање:

    статусот на тековната операција (на пример, "Барањето е успешно завршено");

    име на сервер за база на податоци;

    тековно корисничко име и ID на процесот на серверот;

    тековно име на база на податоци;

    времето поминато за извршување на последното барање;

    број на пронајдени линии.

Една од главните предности на SQL Server Management Studio е неговата леснотија на користење, што важи и за Query Editor. Уредникот за прашања обезбедува многу функции за да го олесни кодирањето на извештаите Transact-SQL. Конкретно, користи истакнување на синтаксата за да ја подобри читливоста на извештаите Transact-SQL. Сите резервирани зборови се прикажани со сино, променливите се прикажани со црно, низите се прикажани со црвено, а коментарите се прикажани со зелена боја.

Дополнително, уредникот за прашања е опремен со помош чувствителна на контекст наречена Динамичка помош, преку кој можете да добиете информации за одредена инструкција. Ако не ја знаете синтаксата на инструкцијата, изберете ја во уредникот, а потоа притиснете го копчето F1. Можете исто така да ги означите параметрите на различни извештаи Transact-SQL за да добиете помош за нив од Books Online.

SQL Management Studio поддржува SQL Intellisense, што е еден вид алатка за автоматско комплетирање. Со други зборови, овој модул сугерира најверојатно завршување на делумно внесените елементи на изјавата Transact-SQL.

Истражувачот на објекти исто така може да ви помогне да уредувате прашања. На пример, ако сакате да знаете како да креирате изјава CREATE TABLE за табелата Employee, кликнете со десното копче на табелата во Object Explorer и добиената контекстното мениизберете Script Table As --> CREATE to --> New Query Editor Window. Прозорецот Уредувач на прашања што ја содржи изјавата CREATE TABLE креирана на овој начин е прикажан на сликата подолу. Оваа функција се однесува и на други објекти, како што се складирани процедури и функции.

Прелистувачот на објекти е многу корисен за графички приказ на планот за извршување на одредено барање. Планот за извршување на барањето е опцијата за извршување избрана од оптимизатор на барања меѓу неколку можни опцииисполнување на конкретно барање. Внесете го бараното барање во горниот панел на уредувачот, изберете низа наредби од менито Query --> Display Estimated Execution Plan, а планот за извршување за ова барање ќе биде прикажан во долниот панел на прозорецот на уредувачот.

Solution Explorer

Уредувањето на барањата во SQL Server Management Studio се заснова на методот на решенија. Ако креирате празно барање користејќи го копчето Ново барање, тоа ќе се заснова на празно решение. Можете да го видите ова со извршување на низа команди од менито View --> Solution Explorer веднаш по отворањето на празно барање.

Одлуката може да биде поврзана со ниту еден, еден или повеќе проекти. Празно решение, кое не е поврзано со ниту еден проект. За да поврзете проект со решение, затворете го празното решение, Solution Explorer и Query Editor и креирајте нов проект со извршување на File --> New --> Project. Во прозорецот Нов проект што се отвора, изберете ја опцијата SQL Server Scripts во средниот панел. Проектот е начин на организирање датотеки на одредена локација. Можете да доделите име на проектот и да изберете локација за неговата локација на дискот. Кога креирате нов проект, ново решение автоматски се стартува. Проектот може да се додаде на постоечко решениекористејќи Solution Explorer.

За секој креиран проект, Solution Explorer ги прикажува папките Connections, Queries и Разно. За да отворите нов прозорец на Уредувач на барања за даден проект, кликнете со десното копче на неговата папка Queries и изберете New Query од контекстното мени.

Дебагирање на SQL Server

SQL Server, почнувајќи со SQL Server 2008, има вграден дебагер на код. За да започнете сесија за отстранување грешки, изберете Debug --> Start Debugging од главното мени SQL Server Management Studio. Ќе погледнеме како работи дебагерот користејќи пример користејќи серија команди. Серијата е логична низа од SQL изјави и процедурални екстензии што се испраќаат до моторот на базата на податоци за да ги изврши сите изјави што ги содржи.

Сликата подолу покажува пакет кој го брои бројот на вработени кои работат на проектот p1. Ако овој број е 4 или повеќе, тогаш се прикажува соодветната порака. Во спротивно, се прикажуваат името и презимето на вработените.

За да го запрете извршувањето на пакетот на одредена инструкција, можете да поставите точки на прекин, како што е прикажано на сликата. За да го направите ова, кликнете лево од линијата на која сакате да застанете. Кога ќе започне дебагирањето, извршувањето запира на првата линија од кодот, која е означена со жолта стрелка. За да продолжите со извршувањето и дебагирањето, изберете ја командата Debug --> Continue менито. Сериските инструкции ќе продолжат да се извршуваат до првата точка на прекин, а жолтата стрелка ќе застане на таа точка.

Информациите поврзани со процесот на дебагирање се прикажуваат во два панели на дното од прозорецот Уредувач на прашања. Информации за различни типовиИнформациите за отстранување грешки се групирани во овие панели на неколку јазичиња. Левиот панел ги содржи табулаторот Autos, табот Locals и до пет картички Watch. Десното окно ги содржи табовите Call Stack, Threads, Breakpoints, Command Window, Immediate Window и Output табовите. Табот Locals прикажува променливи вредности, табот Call Stack ги прикажува вредностите на стек на повици, а табот Breakpoints прикажува информации за точките на прекин.

За да го завршите процесот на отстранување грешки, извршете низа наредби од главното мени Debug --> Stop Debugging или кликнете на синото копче на лентата со алатки за отстранување грешки.

SQL Server 2012 додава неколку нови функции на вградениот дебагер во SQL Server Management Studio. Сега можете да извршите голем број од следниве операции во него:

    Наведете услов за точка на прекин. Состојба на прекине SQL израз чија проценета вредност одредува дали извршувањето на кодот ќе запре во дадена точка или не. За да наведете состојба на точка на прекин, кликнете со десното копче на црвената икона за точка на прекин и изберете Condition од контекстното мени. Се отвора дијалог прозорецот „Состојба на точка на прекин“, што ви овозможува да го внесете бараниот Булов израз. Дополнително, ако треба да го запрете извршувањето ако изразот е вистинит, треба да го поставите прекинувачот Is True. Ако извршувањето треба да се прекине ако изразот е променет, тогаш треба да го поставите прекинувачот When Changed.

    Наведете го бројот на погодоци на точката на прекин. Бројот на удари е услов за запирање на извршувањето во дадена точка врз основа на бројот на пати кога таа точка на прекин е погодена за време на извршувањето. Кога ќе се достигне наведениот број на поминувања и кој било друг услов наведен за дадена точка на прекин, дебагерот го извршува наведеното дејство. Условот за прекин на извршувањето врз основа на бројот на погодоци може да биде еден од следниве:

    1. безусловно (стандардно дејство) (Секогаш пауза);

      ако бројот на погодоци е еднаков на одредената вредност (Прекирај кога неговото броење е еднакво на одредена вредност);

      ако бројот на погодоци е повеќекратен од одредената вредност (Прекирај кога бројот на удари е еднаков на множител на одредена вредност);

      Прекинете кога неговиот број е поголем или еднаков на одредена вредност.

    За да го поставите бројот на погодоци за време на дебагирање, кликнете со десното копче на иконата за потребната точка на прекин на табулаторот Точки на прекин, изберете Број на удари од контекстното мени, а потоа изберете еден од условите во полето за дијалог Breakpoint Hit Count што се отвора од претходната листа. За опции за кои е потребна вредност, внесете ја во полето за текст десно од паѓачката листа со услови. За да ги зачувате наведените услови, кликнете OK.

    Наведете филтер за точка на прекин. Филтерот за точка на прекин ја ограничува работата на точката на прекин само на одредени компјутери, процеси или нишки. За да поставите филтер за точка на прекин, кликнете со десното копче на точката на прекин што ја сакате и изберете Филтер од контекстното мени. Потоа, во полето за дијалог Филтри за точки на прекин што се отвора, наведете ги ресурсите на кои сакате да го ограничите извршувањето на оваа точка на прекин. За да ги зачувате наведените услови, кликнете OK.

    Наведете дејство на точка на прекин. Условот When Hit го одредува дејството што треба да се преземе кога сериското извршување ќе достигне одредена точка на прекин. Стандардно, кога и условот за броење удари и условот за запирање се задоволени, тогаш извршувањето е прекинато. Алтернативно, може да се прикаже однапред одредена порака.

    За да одредите што да правите кога ќе се погоди точката на прекин, кликнете со десното копче на црвената икона за точката на прекин и изберете When Hit од контекстното мени. Во полето за дијалог Кога точката на прекин е хит што се отвора, изберете го дејството што сакате да го преземете. За да ги зачувате наведените услови, кликнете OK.

    Користете го прозорецот Quick Watch. Можете да ја видите вредноста на изразот Transact-SQL во прозорецот QuickWatch, а потоа да го зачувате изразот во прозорецот Watch. За да го отворите прозорецот Quick Watch, изберете Quick Watch од менито Debug. Изразот во овој прозорец може или да се избере од паѓачката листа Израз или да се внесе во ова поле.

    Користете го советот за алатки Брзи информации. Кога го ставате глувчето над ID на код, Брзи информации ( Кратки информации) ја прикажува својата реклама во скокачки прозорец.




Врв