SQL

Ang **SQL** (Structured Query Language) ay isang wikang pamprograma na ginagamit sa pamamahala ng data sa isang relasyonal na sistemang database. Ang pamamahala sa data ay kinabibilangan ng pagpasok ng data(insert), kweri(query) o pagtingin sa data, pagbabago ng data(update), pagbura ng data(delete), paglikha ng mga tabla at skema at pagbibigay karapatan sa mga manggagamit ng database at iba pa. 

## Mga ginagamit na instruksiyon
### Paglikha ng tabla
Ang instruksiyon na ginagamit sa paglikha ng tabla ng isang database ay:

```sql
CREATE TABLE Estudyante(
    ID   INT,
    Pangalan  VARCHAR(50),
    Tirahan VARCHAR(50),
    PRIMARY KEY (ID)
);
```

Ang tablang Estudyante ay nilikha na may mga kolumn na ID, pangalan, at petsa kung saan ang pangunahing susi(primary key) ay ang ID.
### Pagpasok
Upang lagyan ng data ang tablang nilikha, ang sumusunod na instruksiyon ay ginagamit:

```sql
INSERT INTO Estudyante
        (ID, Pangalan, Tirahan)
    VALUES
        (102, Juan dela Cruz , 222 Maligaya St. Lungsod Quezon);
```

```sql
INSERT INTO Estudyante
        (ID, Pangalan, Tirahan)
    VALUES
        (202, Jose Santos  , 333 Masagana St. Tondo);
```

```sql
INSERT INTO Estudyante
        (ID, Pangalan, Tirahan)
    VALUES
        (104, Michael Reyes ,  444 Mahusay St. Paranaque);
```

```sql
INSERT INTO Estudyante
        (ID, Pangalan, Tirahan)
    VALUES
        (152, Lisa Aquino  , 555 Masinop St. Makati);
```

Pagkatapos mapasok ang apat na row ng data, ang resulta ng tabla ay:

### Kweri(Query)
Ang instuksiyong `SELECT` ay ginagamit sa pagtingin ng row sa isang tabla. Ang SELECT ay nagbabalik ng lahat ng row sa isang tabla. Upang salain ang mga row ayon sa isang kriteria, ang SELECT * ay ginagamitan ng mga argumento gaya ng sumusunod: 

```sql
SELECT *
    FROM Estudyante
    WHERE Pangalan="Juan dela Cruz";
```

Ang row lamang ng estudyante na nasa tablang "Estudyante" ang ipapakita kung ito ay may pangalan na Juan dela Cruz.

### Pagbabago
Upang baguhin ang field(column), ang instruksiyon ay sumusunod:

```sql
UPDATE Estudyante
    SET Tirahan = "212 Bayani St. Bulacan"
    WHERE ID=102
```

Ang resulta ay pagbabago ng tirahan ng estudyanteng may ID na 102 sa "212 Bayani St. Bulacan".
Ang resulta ng tabla pagkatapos ng pagbabago ay:

### Pagbura
```sql
DELETE FROM Estudyante
    WHERE Pangalan="Juan dela Cruz";
```

Ang estudyanteng si Juan dela Cruz ay binura sa tabla. Ang resulta ng tabla ay: 

### Pagdudugtong(Join)
Ang Join(gaya ng INNER JOIN, OUTER JOIN, at iba pa) ay ginagamit upang pagdugtungin ang dalawang tabla. Halimbawa, ang dalawang tablang Estudyante at Pagsusulit ay mapagdudugtong gamit ang pagdudugtong ng pangunahing susi ng Estudyante sa dayuhang susi ng Pagsusulit.

Lumikha ng bagong tablang Pagsusulit:

```sql
CREATE TABLE Pagsusulit(
   ID  INT NOT NULL,
   Marka       INT,
   Asignatura  VARCHAR(20)
   CONSTRAINT  Pagsusulit PRIMARY KEY (PagsusulitID),
   CONSTRAINT FK_Pagsusulit FOREIGN KEY (EstudyanteID)
              REFERENCES Estudyante(EstudyanteID)
)TYPE = InnoDB;
```

Lagyan ng data:

```sql
INSERT INTO Pagsusulit
        (ID, Marka, PagsusulitID)
    VALUES
        (202, 90, 233);
```

```sql
INSERT INTO Pagsusulit
        (EstudyanteID, Marka, PagsusulitID)
    VALUES
        (202, 100, 444);
```

```sql
INSERT INTO Pagsusulit
        (EstudyanteID, Marka,PagsusulitID)
    VALUES
        (104, 98, 111);
```

```sql
INSERT INTO Pagsusulit
        (EstudyanteID, Marka, PagsusulitID)
    VALUES
        (152, 98, 111);
```

Ang resulta ng tablang Pagsusulit ay:

Pagdugtungin ang dalawang tabla:

```sql
SELECT  Estudyante.ID as EstudyanteID, Estudyante.Pangalan AS Pangalan, Pagsusulit.Marka AS Marka, Pagsusulit.PagsusulitID AS PagsusulitID
     FROM Estudyante
      INNER JOIN Pagsusulit
      ON Estudyante.ID = Pagsusulit.EstudyanteID
```

Ang resulta ay:

### Pagbura ng tabla
Upang burahin ang mga tablang Estudyante at Pagsusulit sa database, ang instruksiyon ay:

```sql
DROP Estudyante, Pagsusulit;
```

## Mga panlabas na kawing
* Praktikal na halimbawa ng SQL GROUP BY at SUM queries

Kategorya:Database