Podstawy SQL


Podział SQL

SQL dzieli się na:

DML składa się z instrukcji SQL używanych do uzyskiwania, wstawiania, modyfikacji i usuwania danych z tabel. SELECT jest instrukcją DML.

DDL składa się z instrukcji SQL używanych do tworzenia, zmiany i usuwania tabel, do tworzenia i usuwania indeksów. CREATE TABLE i DROP INDEX są instrukcjami DDL.

Komentarze

 /*To jest komentarz*/

Instrukcja SELECT

Pobranie całej tabeli CUSTOMER.
SELECT * FROM CUSTOMER
Pobranie wybranych pól tabeli
SELECT CustNo,Company  FROM CUSTOMER
Pobranie rekordów tabeli spełniających warunek
SELECT * FROM CUSTOMER WHERE CustNo>5000        
SELECT * FROM CUSTOMER WHERE Company LIKE "S%"  /* Company na literę "S" */
SELECT * FROM CUSTOMER WHERE CustNo>5000 AND Company LIKE "S%"
Sortowanie.
SELECT * FROM CUSTOMER ORDER BY Company
Aliasy pól
SELECT CustNo AS Numer, Company AS Firma  FROM CUSTOMER
Agregacje
 SELECT Count(*)  FROM CUSTOMER     /* Liczba rekordów */
 SELECT Sum(AmountPaid) FROM ORDERS /* Suma z pól AmountPaid */
 SELECT Avg(AmountPaid) FROM ORDERS /* średnia z pól AmountPaid */
Grupowanie
 SELECT CustNo,Count(*) FROM ORDERS GROUP BY CustNo         
 /* Liczba zamówień wg klientów */
 SELECT CustNo,Sum(AmountPaid) FROM ORDERS GROUP BY CustNo  
 /* Suma z pól AmountPaid wg klientów */
 SELECT CustNo,Avg(AmountPaid) FROM ORDERS GROUP BY CustNo  
 /* średnia z pól AmountPaid wg klientów */
 SELECT CustNo,Avg(AmountPaid) FROM ORDERS GROUP BY CustNo HAVING Avg(AmountPaid)>10000
 /* średnia z pól AmountPaid wg klientów powyżej 10000*/
Złączenia
  /* prosta relacja jeden-do-jednego */
  SELECT * FROM CUSTOMER,ORDERS WHERE CUSTOMER.CustNo=ORDERS.CustNo

  /* ... z wyborem pól */
  SELECT  CUSTOMER.Company,ORDERS.AmountPaid 
  FROM CUSTOMER,ORDERS 
  WHERE CUSTOMER.CustNo=ORDERS.CustNo
   
  /* ... z aliasami tabel */
  SELECT  CUSTOMER.Company,ORDERS.AmountPaid 
  FROM CUSTOMER c,ORDERS o
  WHERE c.CustNo=o.CustNo

  /* złączenie z agregacją */
  SELECT  CUSTOMER.Company AS Firma ,Avg(ORDERS.AmountPaid) AS Srednia 
  FROM CUSTOMER c,ORDERS o
  WHERE c.CustNo=o.CustNo
  GROUP BY c.Company
  ORDER BY Srednia