Perintah SQL Dasar - Daftar Query Database dan Pernyataan yang Harus Anda Ketahui

SQL adalah singkatan dari Structured Query Language. Perintah SQL adalah instruksi yang digunakan untuk berkomunikasi dengan database untuk melakukan tugas, fungsi, dan kueri dengan data.

Perintah SQL dapat digunakan untuk mencari database dan melakukan fungsi lain seperti membuat tabel, menambahkan data ke tabel, mengubah data, dan menghapus tabel.

Berikut adalah daftar perintah SQL dasar (terkadang disebut klausa) yang harus Anda ketahui jika Anda akan menggunakan SQL.

PILIH dan DARI

Bagian SELECTdari kueri menentukan kolom mana dari data yang akan ditampilkan dalam hasil. Ada juga opsi yang bisa Anda terapkan untuk memperlihatkan data yang bukan kolom tabel.

Contoh di bawah ini menunjukkan tiga kolom SELECTed FROMyang “mahasiswa” meja dan satu kolom dihitung. Database menyimpan studentID, FirstName, dan LastName siswa. Kita bisa menggabungkan kolom First dan Last name untuk membuat kolom terhitung FullName.

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)

BUAT TABEL

CREATE TABLEtidak persis seperti namanya: membuat tabel di database. Anda dapat menentukan nama tabel dan kolom yang harus ada di tabel.

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

ALTER TABLE

ALTER TABLEmengubah struktur tabel. Berikut adalah cara menambahkan kolom ke database:

ALTER TABLE table_name ADD column_name datatype;

MEMERIKSA

The CHECKkendala digunakan untuk membatasi rentang nilai yang dapat ditempatkan dalam kolom.

Jika Anda menentukan CHECKbatasan pada satu kolom, itu hanya memungkinkan nilai tertentu untuk kolom ini. Jika Anda menentukan CHECKbatasan pada tabel, itu bisa membatasi nilai di kolom tertentu berdasarkan nilai di kolom lain di baris.

SQL berikut membuat CHECKbatasan pada kolom "Usia" saat tabel "Orang" dibuat. The CHECKMemastikan kendala bahwa Anda tidak dapat memiliki orang di bawah 18 tahun.

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

Untuk mengizinkan penamaan CHECKbatasan, dan untuk menentukan CHECKbatasan pada beberapa kolom, gunakan sintaks SQL berikut:

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") );

DIMANA

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

The WHEREklausul digunakan untuk membatasi jumlah baris yang dikembalikan.

Sebagai contoh, pertama kita akan menunjukkan SELECTpernyataan dan hasil tanpa sebuah WHEREpernyataan. Kemudian kami akan menambahkan WHEREpernyataan yang menggunakan kelima kualifikasi di atas.

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)

Sekarang, kami akan mengulangi SELECTkueri tetapi kami akan membatasi baris yang dikembalikan menggunakan WHEREpernyataan.

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)

MEMPERBARUI

Untuk memperbarui record dalam tabel Anda menggunakan UPDATEpernyataan.

Gunakan WHEREkondisi untuk menentukan rekaman mana yang ingin Anda perbarui. Dimungkinkan untuk memperbarui satu atau lebih kolom dalam satu waktu. Sintaksnya adalah:

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

Berikut adalah contoh memperbarui Nama rekaman dengan Id 4:

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

Anda juga dapat memperbarui kolom dalam tabel dengan menggunakan nilai dari tabel lain. Gunakan JOINklausa untuk mendapatkan data dari beberapa tabel. Sintaksnya adalah:

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

Berikut adalah contoh memperbarui Manajer dari semua catatan:

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

GRUP OLEH

GROUP BY memungkinkan Anda untuk menggabungkan baris dan data agregat.

Berikut adalah sintaks GROUP BY:

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

HAVING

HAVINGmemungkinkan Anda untuk memfilter data yang digabungkan dengan GROUP BYklausa sehingga pengguna mendapatkan sekumpulan catatan terbatas untuk dilihat.

Berikut adalah sintaks HAVING:

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

AVG ()

"Rata-rata" digunakan untuk menghitung rata-rata kolom numerik dari kumpulan baris yang dikembalikan oleh pernyataan SQL.

Berikut sintaks untuk menggunakan fungsi tersebut:

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

Berikut adalah contoh menggunakan tabel siswa:

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

SEBAGAI

AS memungkinkan Anda untuk mengganti nama kolom atau tabel menggunakan alias.

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

Ini menghasilkan keluaran seperti di bawah ini.

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

Anda juga dapat menggunakan AS untuk menetapkan nama ke tabel agar lebih mudah untuk referensi dalam gabungan.

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

Ini menghasilkan keluaran seperti di bawah ini.

+-------------+------------+-----------+-----------------+--------------+ | 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 | +-------------+------------+-----------+-----------------+--------------+

DIPESAN OLEH

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  is used in a WHERE or HAVING (as part of the GROUP BY) to limit the selected rows to the items when a column has a certain pattern of characters contained in it.

This SQL will select students that have FullName starting with “Monique” or ending with “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)

You can place NOT before LIKE to exclude the rows with the string pattern instead of selecting them. This SQL excludes records that contain “cer Pau” and “Ted” in the FullName column.

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)