SQL-peruskomennot - luettelo tietokantakyselyistä ja -lausekkeista, jotka sinun pitäisi tietää

SQL tarkoittaa lyhenne sanoista Structured Query Language. SQL-komennot ovat ohjeita, joita käytetään yhteydenpitoon tietokannan kanssa tehtävien, toimintojen ja kyselyjen suorittamiseksi datalla.

SQL-komentoja voidaan käyttää hakemiseen tietokannasta ja muihin toimintoihin, kuten taulukoiden luomiseen, tietojen lisäämiseen taulukoihin, tietojen muokkaamiseen ja taulukoiden pudottamiseen.

Tässä on luettelo SQL-peruskomennoista (joita kutsutaan joskus lausekkeiksi), jotka sinun tulisi tietää, jos aiot työskennellä SQL: n kanssa.

SELECT ja FROM

SELECTOsa kyselyn määrittää, mitkä sarakkeet näytettävät tiedot tuloksissa. On myös vaihtoehtoja, joita voit käyttää näyttämään tietoja, jotka eivät ole taulukon sarakkeita.

Alla olevassa esimerkissä kolmesta sarakkeesta SELECTed FROM”opiskelija” pöytä ja yksi laskettu sarake. Tietokanta tallentaa opiskelijan tunnuksen, etunimen ja sukunimen. Voimme yhdistää Etunimi ja Sukunimi -sarakkeet, jolloin luodaan KokoNimi-laskettu sarake.

SELECT studentID, FirstName, LastName, FirstName + ' ' + LastName AS FullName FROM student;
+-----------+-------------------+------------+------------------------+ | studentID | FirstName | LastName | FullName | +-----------+-------------------+------------+------------------------+ | 1 | Monique | Davis | Monique Davis | | 2 | Teri | Gutierrez | Teri Gutierrez | | 3 | Spencer | Pautier | Spencer Pautier | | 4 | Louis | Ramsey | Louis Ramsey | | 5 | Alvin | Greene | Alvin Greene | | 6 | Sophie | Freeman | Sophie Freeman | | 7 | Edgar Frank "Ted" | Codd | Edgar Frank "Ted" Codd | | 8 | Donald D. | Chamberlin | Donald D. Chamberlin | | 9 | Raymond F. | Boyce | Raymond F. Boyce | +-----------+-------------------+------------+------------------------+ 9 rows in set (0.00 sec)

LUO TAULUKKO

CREATE TABLEtekee juuri miltä se kuulostaa: se luo taulukon tietokantaan. Voit määrittää taulukon nimen ja sarakkeiden, joiden pitäisi olla taulukossa.

CREATE TABLE table_name ( column_1 datatype, column_2 datatype, column_3 datatype );

MUUTOSTAULUKKO

ALTER TABLEmuuttaa taulukon rakennetta. Näin lisäät sarakkeen tietokantaan:

ALTER TABLE table_name ADD column_name datatype;

TARKISTAA

CHECKRajoitus käytetään rajoittamaan arvon alueella, joka voidaan sijoittaa pylvääseen.

Jos määrität CHECKrajoituksen yhdelle sarakkeelle, se sallii tälle sarakkeelle vain tietyt arvot. Jos määrität CHECKrajoituksen taulukolle, se voi rajoittaa tiettyjen sarakkeiden arvoja rivin muiden sarakkeiden arvojen perusteella.

Seuraava SQL luo CHECKrajoituksen Ikä-sarakkeeseen, kun Henkilöt-taulukko luodaan. CHECKRajoitus varmistaa, että voit olla kuka tahansa alle 18-vuotiaille.

CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, CHECK (Age>=18) );

Voit sallia CHECKrajoitteen nimeämisen ja määrätä rajoituksen CHECKuseille sarakkeille käyttämällä seuraavaa SQL-syntaksia:

CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, City varchar(255), CONSTRAINT CHK_Person CHECK (Age>=18 AND City="Sandnes") );

MISSÄ

(AND ,OR , IN, BETWEEN, Ja LIKE)

WHERELauseketta käytetään rajoittamaan rivien palasi.

Esimerkiksi ensimmäinen näytämme sinulle SELECTlausuman ja tuloksia ilmanWHERE selvitys. Sitten lisätään WHERElause, joka käyttää kaikkia viittä yllä olevaa karsintaa.

SELECT studentID, FullName, sat_score, rcd_updated FROM student;
+-----------+------------------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated | +-----------+------------------------+-----------+---------------------+ | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | | 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 | | 3 | Spencer Pautier | 1000 | 2017-08-16 15:34:50 | | 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | | 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 | | 7 | Edgar Frank "Ted" Codd | 2400 | 2017-08-16 15:35:33 | | 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 | | 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 | +-----------+------------------------+-----------+---------------------+ 9 rows in set (0.00 sec)

Toistamme SELECTkyselyn, mutta rajoitamme WHERElausekkeella palautettuja rivejä .

STUDENT studentID, FullName, sat_score, recordUpdated FROM student WHERE (studentID BETWEEN 1 AND 5 OR studentID = 8) AND sat_score NOT IN (1000, 1400);
+-----------+----------------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated | +-----------+----------------------+-----------+---------------------+ | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | | 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 | | 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | | 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 | +-----------+----------------------+-----------+---------------------+ 5 rows in set (0.00 sec)

PÄIVITTÄÄ

Voit päivittää tietueen taulukossa käyttämällä UPDATElausetta.

Määritä WHEREehdon avulla päivitettävät tietueet. On mahdollista päivittää yksi tai useampi sarake kerrallaan. Syntaksi on:

UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

Tässä on esimerkki tietueen nimen päivittämisestä tunnuksella 4:

UPDATE Person SET Name = “Elton John” WHERE Id = 4;

Voit myös päivittää taulukon sarakkeita käyttämällä muiden taulukoiden arvoja. Käytä JOINlauseketta saadaksesi tietoja useista taulukoista. Syntaksi on:

UPDATE table_name1 SET table_name1.column1 = table_name2.columnA table_name1.column2 = table_name2.columnB FROM table_name1 JOIN table_name2 ON table_name1.ForeignKey = table_name2.Key

Tässä on esimerkki kaikkien tietueiden hallinnan päivittämisestä:

UPDATE Person SET Person.Manager = Department.Manager FROM Person JOIN Department ON Person.DepartmentID = Department.ID

RYHMÄ

GROUP BY voit yhdistää rivejä ja koota tietoja.

Tässä on syntaksi GROUP BY:

SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;

OVAT

HAVINGvoit suodattaa lauseella kootut tiedot GROUP BYsiten, että käyttäjä saa rajoitetun määrän tietueita tarkasteltavaksi.

Tässä on syntaksi HAVING:

SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name HAVING COUNT(*) > value;

AVG ()

Keskiarvoa käytetään laskemaan numeerisen sarakkeen keskiarvo SQL-käskyn palauttamista riveistä.

Tässä on funktion käytön syntaksit:

SELECT groupingField, AVG(num_field) FROM table1 GROUP BY groupingField

Tässä on esimerkki opiskelijataulukon käytöstä:

SELECT studentID, FullName, AVG(sat_score) FROM student GROUP BY studentID, FullName;

KUTEN

AS voit nimetä sarakkeen tai taulukon uudelleen aliaksen avulla.

SELECT user_only_num1 AS AgeOfServer, (user_only_num1 - warranty_period) AS NonWarrantyPeriod FROM server_table

Tämä johtaa tulokseen kuten alla.

+-------------+------------------------+ | AgeOfServer | NonWarrantyPeriod | +-------------+------------------------+ | 36 | 24 | | 24 | 12 | | 61 | 49 | | 12 | 0 | | 6 | -6 | | 0 | -12 | | 36 | 24 | | 36 | 24 | | 24 | 12 | +-------------+------------------------+

Voit myös käyttää AS: ää nimeämään taulukkoon nimen helpottamiseksi liittymisissä.

SELECT ord.product, ord.ord_number, ord.price, cust.cust_name, cust.cust_number FROM customer_table AS cust JOIN order_table AS ord ON cust.cust_number = ord.cust_number

Tämä johtaa tulokseen kuten alla.

+-------------+------------+-----------+-----------------+--------------+ | product | ord_number | price | cust_name | cust_number | +-------------+------------+-----------+-----------------+--------------+ | RAM | 12345 | 124 | John Smith | 20 | | CPU | 12346 | 212 | Mia X | 22 | | USB | 12347 | 49 | Elise Beth | 21 | | Cable | 12348 | 0 | Paul Fort | 19 | | Mouse | 12349 | 66 | Nats Back | 15 | | Laptop | 12350 | 612 | Mel S | 36 | | Keyboard| 12351 | 24 | George Z | 95 | | Keyboard| 12352 | 24 | Ally B | 55 | | Air | 12353 | 12 | Maria Trust | 11 | +-------------+------------+-----------+-----------------+--------------+

TILAA

ORDER BY gives us a way to sort the result set by one or more of the items in the SELECT section. Here is an SQL sorting the students by FullName in descending order. The default sort order is ascending (ASC) but to sort in the opposite order (descending) you use DESC.

SELECT studentID, FullName, sat_score FROM student ORDER BY FullName DESC;

COUNT

COUNT will count the number of rows and return that count as a column in the result set.

Here are examples of what you would use COUNT for:

  • Counting all rows in a table (no group by required)
  • Counting the totals of subsets of data (requires a Group By section of the statement)

This SQL statement provides a count of all rows. Note that you can give the resulting COUNT column a name using “AS”.

SELECT count(*) AS studentCount FROM student; 

DELETE

DELETE is used to delete a record in a table.

Be careful. You can delete all records of the table or just a few. Use the WHERE condition to specify which records you want to delete. The syntax is:

DELETE FROM table_name WHERE condition;

Here is an example deleting from the table Person the record with Id 3:

DELETE FROM Person WHERE Id = 3;

INNER JOIN

JOIN, also called Inner Join, selects records that have matching values in two tables.

SELECT * FROM A x JOIN B y ON y.aId = x.Id

LEFT JOIN

A LEFT JOIN returns all rows from the left table, and the matched rows from the right table. Rows in the left table will be returned even if there was no match in the right table. The rows from the left table with no match in the right table will have null for right table values.

SELECT * FROM A x LEFT JOIN B y ON y.aId = x.Id

RIGHT JOIN

A RIGHT JOIN returns all rows from the right table, and the matched rows from the left table. Opposite of a left join, this will return all rows from the right table even where there is no match in the left table. Rows in the right table that have no match in the left table will have null values for left table columns.

SELECT * FROM A x RIGHT JOIN B y ON y.aId = x.Id 

FULL OUTER JOIN

A FULL OUTER JOIN returns all rows for which there is a match in either of the tables. So if there are rows in the left table that do not have matches in the right table, those will be included. Also, if there are rows in the right table that do not have matches in the left table, those will be included.

SELECT Customers.CustomerName, Orders.OrderID FROM Customers FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID ORDER BY Customers.CustomerName

INSERT

INSERT is a way to insert data into a table.

INSERT INTO table_name (column_1, column_2, column_3) VALUES (value_1, 'value_2', value_3);

LIKE

LIKE-merkkiä  käytetään WHEREtai HAVING(osana GROUP BY) rajoittaa valitut rivit kohteisiin, kun sarakkeessa on tietty merkkikuvio.

Tämä SQL valitsee opiskelijat, joiden FullNamealku on ”Monique” tai loppu ”Greene”.

SELECT studentID, FullName, sat_score, rcd_updated FROM student WHERE FullName LIKE 'Monique%' OR FullName LIKE '%Greene'; 
+-----------+---------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated | +-----------+---------------+-----------+---------------------+ | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | +-----------+---------------+-----------+---------------------+ 2 rows in set (0.00 sec)

Voit sijoittaa NOTennen LIKEsulkeaksesi pois rivit merkkijonolla sen sijaan, että valitsisit ne. Tämä SQL sulkee pois tietueet, jotka sisältävät ”cer Pau” ja “Ted” FullName-sarakkeessa.

SELECT studentID, FullName, sat_score, rcd_updated FROM student WHERE FullName NOT LIKE '%cer Pau%' AND FullName NOT LIKE '%"Ted"%';
+-----------+----------------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated | +-----------+----------------------+-----------+---------------------+ | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | | 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 | | 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | | 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 | | 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 | | 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 | +-----------+----------------------+-----------+---------------------+ 7 rows in set (0.00 sec)