Podstawy MS SQL



Aby mieć możliwoć cwiczeń praktycznych proponuje zainstalowac MS SQL Serwer 2014 Express. Pobrać go można ze strony http://www.microsoft.com/en-us/download/details.aspx?id=42299 lub po prostu zgoglować frazę SQL Server 2014 Express. Następnie proszę zainstalowac MS SQL Server Management Studio Express w tym narzędziu będziemy mogli wykonac ćwiczenia pisać zapytania, tworzyć tabele itd. Aby zacząć przygode z sql proponuje pobrać plik zawierający skryptSql(jeśli są jakieś niezgodności proszę o maila). Uruchomić SQL Menagement Studio i wcisnąć F5 lub przycik execute.
SELECT *
  FROM [traning].[dbo].[sprzedarz]

go

Składni polcenia SELECT:
SELECT [DISTINCT] nazwztabel
[INTO nazwa tabeli do umieszczenia wyniku zapytania]
FROM nazwa tabeli [JOIN] [nazwa tabeli przyłączanej] [ON] [warunki łączenia]
[WHERE] [filtry i ich warunki dla nich]
[GROUP BY] [kolumny po którcyh ma się odbyć grupowanie]
[HAVING] [filtry dla wartości z agregowanych]
[ORDER BY] [kolumny lub ich indeksy w zapytaniu od 1]

Powyższy przykład to najprostszy sposób wykonania zapytania, w wyniku tego zapytania zwrócona zostanie cała zawartość tabeli sprzedarz.

Proszę przećwiczyć również:
SELECT 2/2
go
SELECT 'witaj świecie'
go
SELECT 2+2
go

Przykład ten pokazuje jak w ms sql posługiwać się selectem do wyświetlania wartości lub wykonywania działań matematycznych.
Możemy poćwiczyć działanie samego Select w SQL

Użycie klauzuli WHERE w SQL

Klauzula WHERE działa jak filtr wskazuje jakie dane w zapytaniu mają być wyświetlone w tym przypadku z tabeli sprzedarz zostaną wyświetlone wszystkie rekordy gdzie w kolumnie ilosc występuje wartość 2.
SELECT [Id]
      ,[Produktid]
      ,[Miastatid]
      ,[Ilosc]
      ,[DataZamowienia]
      ,[Koszt]
  FROM [traning].[dbo].[sprzedarz]
  where
  ilosc=2
SELECT [Id]
      ,[Name]
  FROM [traning].[dbo].[miasta]
  where
  Name='Warszawa'

Jeśli chemy szukać wartości nie będącej liczbą należy umieścić ją w apostrfoch

SELECT [Id]
      ,[Name]
  FROM [traning].[dbo].[miasta]
  where
  Name like 'Warsz%'
Możemy poszukiwać również fragmentu tekstu za pomocą predykatu like. W tym przpadu wynikiem będą wszyskie nazwy zawierające Warsz na początku nazwy.

SELECT [Id]
      ,[Produktid]
      ,[Miastatid]
      ,[Ilosc]
      ,[DataZamowienia]
      ,[Koszt]
  FROM [traning].[dbo].[sprzedarz]
  where [Produktid] = 1 OR Produktid =2 

Operator logiczny OR najprościej przetłumaczyć jego dzałanie jako LUB. Pozwala w tym przypadku na wybranie produktid 1 lub 2.

SELECT [Id]
      ,[Produktid]
      ,[Miastatid]
      ,[Ilosc]
      ,[DataZamowienia]
      ,[Koszt]
  FROM [traning].[dbo].[sprzedarz]
  where [Produktid] in (1,2)

go

Predykt IN działa podobnie jak OR z poprzedniego przykłądu. W tym przpadku pozwala na wybranie wszystkich produktid wymienionych w nawiasach.



Tabele 1. Przedstawia operatory klauzuli Where:
!= różne od
> większe
>= większe równe
< mniejsze
=< mniejsze równe
like jak wyrażenie
not like różne od wyrażenia
in równe dla kilku wartości
= równe

Nawiąże jeszcze do polecenia Like, pozwala ono na użycie wyrażeń regularnych takich jak "[2][0][0][0-2] "
SELECT [Id]
      ,[Name]
  FROM [traning].[dbo].[miasta]
  where
  Name like 'Warszaw[a-z]'

go

Grupowanie w ms sql


Grupowanie danych, agregacja odbywa się poprzez użycie polecenia GROUP BY np:
SELECT 
	  produktid,	
      sum([Ilosc])

  FROM [traning].[dbo].[sprzedarz]
 group by produktid

go

Przykdład demonstruje jak uzyskać sumę sprzedarzy per prodkukt.

SELECT 
	  produktid,	
      sum([Ilosc]),
	  min(ilosc),
	  max(ilosc),
	  avg(ilosc)
  FROM [traning].[dbo].[sprzedarz]
 group by produktid
 

Możemy korzystać również z innych funkcji agregujących takich jak max, min, avg itd. Istotnym jest by wskazać poczym agregujemy w klauzuli GROUP BY

Ms SQL umożliwia również filtrowanie danych po już z agregowanych wartościach np

SELECT 
	  produktid,	
      sum([Ilosc]),
	  min(ilosc),
	  max(ilosc),
	  avg(ilosc)
  FROM [traning].[dbo].[sprzedarz]
 group by produktid
 having  avg(ilosc) >1

go

Having działamy zatem na całych grupach wierszy

Sorotowanie w MS SQL ORDER BY


Kolejnym ważnym elementem sql jest sortowanie wyniku zapytania, odbywa się to poprzez użycie polcenie ORDER BY.
SELECT [Id]
      ,[Produktid]
      ,[Miastatid]
      ,[Ilosc]
      ,[DataZamowienia]
      ,[Koszt]
  FROM [traning].[dbo].[sprzedarz]
  order by [DataZamowienia]
  
SELECT [Id]
      ,[Produktid] AS Prod
      ,[Miastatid]
      ,[Ilosc]
      ,[DataZamowienia]
      ,[Koszt]
  FROM [traning].[dbo].[sprzedarz]
  order by [Prod],Ilosc
  

W trakcie sortowania możemy równiże wykorzystywać alisy nazw komun.

select 
ROW_NUMBER() OVER(order by [Ilosc]) as RN, * 

from 
[traning].[dbo].[sprzedarz]
ORDER BY 1 OFFSET 5 ROWS  
    

W spominając o sortowaniu, warto przyjrzeć się poleceniom OFFSET oraz FETCH NEXT. Polcenia pozwalają na stronicowanie wyniku zapytania w przykładzie powyżej zauważyć możemy, że zostaną wyświetlone rekordy od piątego.

select 
ROW_NUMBER() OVER(order by [Ilosc]) as RN, * 

from 
[traning].[dbo].[sprzedarz]
ORDER BY 1 OFFSET 5 ROWS FETCH NEXT 10 ROWS ONLY

Przykład demonstruje jak wyświetlić wiersze od 5 do 10.


ORDER BY pozwala na posortowanie wyniku zapytania po dowolnej kolumnie lub kilku kolumnach, opcjonalnie możemy użyć DESC lub ASC (malejąco, rosnąco)
Możemy również zamiast nazwy kolumny podać nr indeksu kolumny np:
SELECT [Id]
      ,[Produktid]
      ,[Miastatid]
      ,[Ilosc]
      ,[DataZamowienia]
      ,[Koszt]
  FROM [traning].[dbo].[sprzedarz]
  order by 1

go

Ograniczanie ilości wyświetlanych danych w MS SQL

SELECT TOP 5 [Id]
      ,[Produktid]
      ,[Miastatid]
      ,[Ilosc]
      ,[Koszt]
      ,[DataZamowienia]
  FROM [traning].[dbo].[sprzedarz]

go

TOP 5 pozwala nam na określenie ilości rekordów jakie chcemy wyświetlić z danego zapytania w tym przypadku zostanie zwróconych tylko 5 rekordów. PERCENT w t-sql pozwala na określenie jaką iloś rekordów chemy wyświetlić w procentach czyli jeśli baza ma sto rekordów i użyjemy
SELECT TOP 5 PERCENT * FROM [traning].[dbo].[sprzedarz]

go

Wynikiem będzie 5 rekordów

komnetarze w ms sql

SELECT TOP 5 [Id]
      --,[Produktid]
      --,[Miastatid]
      ,[Ilosc]
      ,[Koszt]
      ,[DataZamowienia]
  FROM [traning].[dbo].[sprzedarz]


go

W ten sposób komentujemy jedną linie
SELECT /*TOP 5 [Id]
      ,[Produktid]
      ,[Miastatid]
      ,*/[Ilosc]
      ,[Koszt]
      ,[DataZamowienia]
  FROM [traning].[dbo].[sprzedarz]


go
W ten sposób komentujemy cały blok  

SQL-KURSY.pl poleca:

Książki
ksikaksikaksikaksikaksika

Copyright 2010-2011mariuszhk@op.pl

obob ob

Valid HTML 4.01 Transitional

Strona internetowa wykorzystuje pliki cookie zapisywane w pamięci przeglądarki internetowej.

OK