Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Създайте заявка в SQL Server 2017

Как да създадете заявка в база данни на SQL Server 2017.

Една от най-основните заявки, които можете да направите, е така:

SELECT * 
FROM TableName;

Тази заявка връща всички данни от дадена таблица. TableName е името на таблицата, която искате да направите заявка. Всичко, което трябва да направите, е да го замените с името на таблица във вашата база данни, да стартирате заявката и съдържанието на тази таблица ще се покаже.

Нашата база данни се състои от три таблици. Всеки съдържа данни. Нека видим какво има във всяка таблица.

Artists таблица:

SELECT * 
FROM Artists;
Резултат
ArtistId  ArtistName              ActiveFrom              
--------  ----------------------  ------------------------
1         Iron Maiden             1975-12-25T00:00:00.000Z
2         AC/DC                   1973-01-11T00:00:00.000Z
3         Allan Holdsworth        1969-01-01T00:00:00.000Z
4         Buddy Rich              1919-01-01T00:00:00.000Z
5         Devin Townsend          1993-01-01T00:00:00.000Z
6         Jim Reeves              1948-01-01T00:00:00.000Z
7         Tom Jones               1963-01-01T00:00:00.000Z
8         Maroon 5                1994-01-01T00:00:00.000Z
9         The Script              2001-01-01T00:00:00.000Z
10        Lit                     1988-06-26T00:00:00.000Z
11        Black Sabbath           1968-01-01T00:00:00.000Z
12        Michael Learns to Rock  1988-03-15T00:00:00.000Z
13        Carabao                 1981-01-01T00:00:00.000Z
14        Karnivool               1997-01-01T00:00:00.000Z
15        Birds of Tokyo          2004-01-01T00:00:00.000Z
16        Bodyjar                 1990-01-01T00:00:00.000Z

16 row(s) returned

Executed in 1 ms

Albums таблица:

SELECT * 
FROM Albums;
Резултат
AlbumId  AlbumName                 ReleaseDate               ArtistId  GenreId
-------  ------------------------  ------------------------  --------  -------
1        Powerslave                1984-09-03T00:00:00.000Z  1         1      
2        Powerage                  1978-05-05T00:00:00.000Z  2         1      
3        Singing Down the Lane     1956-01-01T00:00:00.000Z  6         3      
4        Ziltoid the Omniscient    2007-05-21T00:00:00.000Z  5         1      
5        Casualties of Cool        2014-05-14T00:00:00.000Z  5         1      
6        Epicloud                  2012-09-18T00:00:00.000Z  5         1      
31       Somewhere in Time         1986-09-29T00:00:00.000Z  1         1      
32       Piece of Mind             1983-05-16T00:00:00.000Z  1         1      
33       Killers                   1981-02-02T00:00:00.000Z  1         1      
34       No Prayer for the Dying   1990-10-01T00:00:00.000Z  1         1      
35       No Sound Without Silence  2014-09-12T00:00:00.000Z  9         4      
36       Big Swing Face            1967-06-01T00:00:00.000Z  4         2      
37       Blue Night                2000-11-01T00:00:00.000Z  12        4      
38       Eternity                  2008-10-27T00:00:00.000Z  12        4      
39       Scandinavia               2012-06-11T00:00:00.000Z  12        4      
40       Long Lost Suitcase        2015-10-09T00:00:00.000Z  7         4      
41       Praise and Blame          2010-06-26T00:00:00.000Z  7         4      
42       Along Came Jones          1965-05-21T00:00:00.000Z  7         4      
43       All Night Wrong           2002-05-05T00:00:00.000Z  3         2      
44       The Sixteen Men of Tain   2000-03-20T00:00:00.000Z  3         2      

20 row(s) returned

Executed in 1 ms

Genres таблица:

SELECT * 
FROM Genres;
Резултат
GenreId  Genre  
-------  -------
1        Rock   
2        Jazz   
3        Country
4        Pop    
5        Blues  
6        Hip Hop
7        Rap    
8        Punk   

8 row(s) returned

Executed in 1 ms

И в трите случая запитването ни беше едно и също. Единственото нещо, което се промени, беше името на таблицата.

Това е една от най-основните заявки, които можем да направим. Той просто връща всички редове и всички колони от една таблица.

Бихме могли да модифицираме тази заявка по няколко начина, за да върнем само данните, които искаме да видим. По-долу са някои често срещани начини, по които можем да модифицираме заявка, за да върне точно нужните ни резултати.

Посочете колоните

Вместо да използвате звездичката (* ), за да върнете всички колони, можете изрично да посочите само тези колони, които искате да бъдат върнати.

SELECT AlbumId, AlbumName, ArtistId 
FROM Albums;
Резултат
AlbumId  AlbumName                 ArtistId
-------  ------------------------  --------
1        Powerslave                1       
2        Powerage                  2       
3        Singing Down the Lane     6       
4        Ziltoid the Omniscient    5       
5        Casualties of Cool        5       
6        Epicloud                  5       
31       Somewhere in Time         1       
32       Piece of Mind             1       
33       Killers                   1       
34       No Prayer for the Dying   1       
35       No Sound Without Silence  9       
36       Big Swing Face            4       
37       Blue Night                12      
38       Eternity                  12      
39       Scandinavia               12      
40       Long Lost Suitcase        7       
41       Praise and Blame          7       
42       Along Came Jones          7       
43       All Night Wrong           3       
44       The Sixteen Men of Tain   3       

20 row(s) returned

Executed in 1 ms

Стесняване на критериите

Можете да добавите WHERE клауза за връщане само на онези редове, които отговарят на предоставен от вас критерии.

SELECT AlbumId, AlbumName, ArtistId 
FROM Albums 
WHERE ArtistId = 1;
Резултат
AlbumId  AlbumName                ArtistId
-------  -----------------------  --------
1        Powerslave               1       
31       Somewhere in Time        1       
32       Piece of Mind            1       
33       Killers                  1       
34       No Prayer for the Dying  1       

5 row(s) returned

Executed in 1 ms

Присъединете се към друга маса

Можете да използвате обединяване, за да върнете резултати от множество таблици, които споделят данни. Това са отношенията. По-специално, свързването обикновено се използва, когато външният ключ на една таблица съвпада с първичния ключ на друга.

SELECT AlbumId, AlbumName, ArtistName 
FROM Albums 
	INNER JOIN Artists 
	ON Albums.ArtistId = Artists.ArtistId 
WHERE ReleaseDate < '1980-01-01';
Резултат
AlbumId  AlbumName              ArtistName
-------  ---------------------  ----------
2        Powerage               AC/DC     
3        Singing Down the Lane  Jim Reeves
36       Big Swing Face         Buddy Rich
42       Along Came Jones       Tom Jones 

4 row(s) returned

Executed in 1 ms

Ще видите, че WHERE клаузата все още работи върху колони, които всъщност не са включени в изхода. В този случай той беше приложен към ReleaseDate колона, въпреки че не включваме тази колона в резултатите.

Ще видите също, че квалифицираме двата ArtistId колони с името на таблицата (т.е. Albums.ArtistId и Artists.ArtistId ). Трябва да направим това, за да може SQL Server да знае коя таблица имаме предвид, когато препращаме към тази колона. Някои разработчици на бази данни смятат за добра практика да се квалифицират всички имена на колони във всички SQL заявки, но това е по-скоро случай на лични предпочитания или конвенция за кодиране, специфична за проекта.

Добавяне на псевдоним

Можете също да добавите псевдоними на таблици към вашите заявки, за да направите кода по-сбит. Например, можете да дадете Artists псевдоним на ar и Albums псевдоним на al (или друг низ, който харесвате).

Можете да използвате тези псевдоними, за да квалифицирате имената на колоните. Ето същата заявка като по-горе, но с всички имена на колони, квалифицирани с псевдоними на таблица:

SELECT al.AlbumId, al.AlbumName, ar.ArtistName 
FROM Albums al
	INNER JOIN Artists ar
	ON al.ArtistId = ar.ArtistId 
WHERE al.ReleaseDate < '1980-01-01';
Резултат
AlbumId  AlbumName              ArtistName
-------  ---------------------  ----------
2        Powerage               AC/DC     
3        Singing Down the Lane  Jim Reeves
36       Big Swing Face         Buddy Rich
42       Along Came Jones       Tom Jones 

4 row(s) returned

Executed in 1 ms

Можете също да зададете псевдоними на колони (не само на таблици). Правим това в следващия пример.

Форматирайте датата

Има много различни начини, по които датите и часовете могат да бъдат третирани в бази данни. В SQL Server има различни типове данни за съхранение на дати (като date , time , datetime , smalldatetime и т.н.) и има много различни функции за работа с дати (например SYSDATETIME() , GETDATE( ) , CURRENT_TIMESTAMP и др.).

В този пример ще използваме YEAR() функция за връщане само на годината от датата.

SELECT AlbumName, YEAR(ReleaseDate) AS Year 
FROM Albums;
Резултат
AlbumName                 Year
------------------------  ----
Powerslave                1984
Powerage                  1978
Singing Down the Lane     1956
Ziltoid the Omniscient    2007
Casualties of Cool        2014
Epicloud                  2012
Somewhere in Time         1986
Piece of Mind             1983
Killers                   1981
No Prayer for the Dying   1990
No Sound Without Silence  2014
Big Swing Face            1967
Blue Night                2000
Eternity                  2008
Scandinavia               2012
Long Lost Suitcase        2015
Praise and Blame          2010
Along Came Jones          1965
All Night Wrong           2002
The Sixteen Men of Tain   2000

20 row(s) returned

Executed in 1 ms

В този пример ние също присвояваме псевдоним на колона. По-конкретно, ние присвояваме псевдоним на резултата от YEAR() функция, на която предаваме ReleaseDate колона като аргумент.

Друг момент за този пример е, че използвахме AS ключова дума при присвояване на псевдоним. Това е по избор и бихме могли да използваме и AS ключова дума при присвояване на псевдоним на таблица в предишния пример.

Относно SQL и Transact-SQL

Горните заявки (и другите заявки в този урок) са написани на език за структурирани заявки (SQL). По-конкретно, SQL Server използва Transact-SQL (понякога се съкращава до T-SQL ), което е собствено разширение на Microsoft и Sybase към SQL.

SQL е стандартният език за заявки, използван в повечето системи за управление на релационни бази данни. Това е стандарт на Американския национален институт по стандартизация (ANSI) и на Международната организация по стандартизация (ISO).

Докато повечето основни заявки ще работят в повечето релационни бази данни, някои заявки може да се наложи да бъдат леко модифицирани при пренасяне между една система на база данни и друга. Например, може да имате скрипт, който се изпълнява в SQL Server. Можете също да използвате този скрипт в MySQL, но може да откриете, че трябва да промените няколко неща, преди той да работи успешно.

SQL скриптовете в този урок демонстрират само малка извадка от неща, които можете да правите с SQL. За повече информация вижте моя урок по SQL или отидете в справочника за Microsoft Transact-SQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проверете дали дадена таблица има колона TIMESTAMP в SQL Server с OBJECTPROPERTY()

  2. Отстраняване на проблеми с репликацията на SQL сървър

  3. Запомнете това, когато форматирате тип данни TIME в SQL Server (T-SQL)

  4. Генериране на клас от таблицата на базата данни

  5. Създайте връзка в SQL Server 2017