2.1 Pengenalan kepada SQL
Jika anda mempunyai pangkalan data (DB), dan di dalamnya - jadual dengan beberapa data, maka tugas yang paling biasa ialah mencari data tertentu dalam jadual ini. Itulah yang dicipta SQL selama 40 tahun yang lalu.
SQL adalah singkatan dari Structured Query Language .
Pertanyaan SQL yang paling mudah kelihatan seperti ini:
SELECT column1, column2, … columnN FROM table
Katakan anda mempunyai jadual pekerja dengan senarai pekerja permulaan anda:
ID | nama | pekerjaan | gaji | umur | tarikh menyertai |
---|---|---|---|---|---|
1 | Ivanov Ivan | Pengaturcara | 100,000 | 25 | 30-06-2012 |
2 | Petrov Petr | Pengaturcara | 80,000 | 23 | 2013-08-12 |
3 | Ivanov Sergey | Penguji | 40,000 | tiga puluh | 2014-01-01 |
4 | Rabinovich Moisha | Pengarah | 200,000 | 35 | 12-05-2015 |
5 | Kirienko Anastasia | Pengurus pejabat | 40,000 | 25 | 2015-10-10 |
6 | Vaska | kucing | 1,000 | 3 | 2018-01-01 |
Anda ingin menulis pertanyaan yang akan memaparkannya employee names
juga salaries
, maka anda perlu menulis pertanyaan:
SELECT name, salary FROM employee
Anda akan mendapat hasil pertanyaan:
nama | gaji |
---|---|
Ivanov Ivan | 100,000 |
Petrov Petr | 80,000 |
Ivanov Sergey | 40,000 |
Rabinovich Moisha | 200,000 |
Kirienko Anastasia | 40,000 |
Vaska | 1,000 |
Jika anda ingin memaparkan semua lajur jadual anda , maka bukannya menyenaraikan nama semua lajur, anda hanya boleh menulis asterisk. Contoh:
SELECT * FROM employee
Anda akan mendapat hasil pertanyaan:
ID | nama | pekerjaan | gaji | umur | tarikh menyertai |
---|---|---|---|---|---|
1 | Ivanov Ivan | Pengaturcara | 100,000 | 25 | 30-06-2012 |
2 | Petrov Petr | Pengaturcara | 80,000 | 23 | 2013-08-12 |
3 | Ivanov Sergey | Penguji | 40,000 | tiga puluh | 2014-01-01 |
4 | Rabinovich Moisha | Pengarah | 200,000 | 35 | 12-05-2015 |
5 | Kirienko Anastasia | Pengurus pejabat | 40,000 | 25 | 2015-10-10 |
6 | Vaska | kucing | 1,000 | 3 | 2018-01-01 |
2.2 Pandangan lanjutan bagi pertanyaan SQL
Bahasa SQL telah direka sebagai mesra pengguna yang mungkin.
Pertama, kes teks permintaan tidak penting . Anda boleh menulis PILIH, Pilih, atau pilih dan semuanya akan berfungsi. Kedua, pemisah baris tidak diambil kira dalam apa jua cara . DBMS masih akan mengubah pertanyaan menjadi satu rentetan panjang, jadi anda boleh menulisnya mengikut cara yang anda suka.
Seperti yang anda mungkin sudah meneka, kata kunci SELECT dan FROM tidak terhad. Jika tidak, tidak akan ada banyak perbincangan mengenai SQL. Pandangan lanjutan bagi pertanyaan SQL kelihatan seperti ini:
SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING columns
ORDER BY sorting
Dengan bantuan kata kunci, WHERE
anda boleh menetapkan syarat / penapis untuk baris yang dipilih.
Contoh 1 . Mari tulis pertanyaan yang akan memilih pekerja dengan profesion "Programmer":
SELECT * FROM employee WHERE occupation = 'Programmer'
Dan kami mendapat hasil pertanyaan berikut:
ID | nama | pekerjaan | gaji | umur | tarikh menyertai |
---|---|---|---|---|---|
1 | Ivanov Ivan | Pengaturcara | 100,000 | 25 | 30-06-2012 |
2 | Petrov Petr | Pengaturcara | 80,000 | 23 | 2013-08-12 |
Seperti yang anda lihat, hasil daripada pelaksanaan pertanyaan, hanya baris di mana profesion pekerja dipanggil "Programmer" dipaparkan.
Kata kunci GROUP BY
, ORDER BY
dan HAVING
kami akan kupas dalam kuliah seterusnya. Dan dalam hal ini kita akan menganalisis beberapa lagi contoh dengan perkataan WHERE.
Contoh 2 . Sekarang mari kita tulis pertanyaan yang akan menunjukkan kepada kita semua pekerja dengan gaji lebih daripada 100K. Begini rupanya:
SELECT * FROM employee WHERE salary > 100000
Kami mendapat hasil pertanyaan berikut:
ID | nama | pekerjaan | gaji | umur | tarikh menyertai |
---|---|---|---|---|---|
4 | Rabinovich Moisha | Pengarah | 200,000 | 35 | 12-05-2015 |
Contoh 3 . Sekarang mari kita cuba sesuatu yang lebih sukar. Bagaimana untuk memaparkan semua pekerja yang diambil bekerja pada tahun 2015? Dan seperti ini:
SELECT * FROM employee WHERE YEAR(join_date) = 2015
Kami mendapat hasil pertanyaan berikut:
ID | nama | pekerjaan | gaji | umur | tarikh menyertai |
---|---|---|---|---|---|
4 | Rabinovich Moisha | Pengarah | 200,000 | 35 | 12-05-2015 |
5 | Kirienko Anastasia | Pengurus pejabat | 40,000 | 25 | 2015-10-10 |
Dalam pertanyaan ini, kami menggunakan fungsi khas YEAR()
yang membolehkan kami mendapatkan tahun daripada tarikh dan kemudian membandingkan tahun tarikh dengan nombor 2015.
2.3 Ulasan dalam pertanyaan SQL
Dan satu lagi perkara penting ialah ulasan dalam pertanyaan SQL. Komen adalah perkara yang sangat berguna. Pertama, anda boleh menulis penjelasan dan / atau idea anda di dalamnya. Kedua, dengan bantuan komen, anda boleh melumpuhkan kod yang rosak. Atau ulas versi lama kod tersebut.
SQL, seperti Java, mempunyai komen satu baris dan berbilang baris. Lebih-lebih lagi, komen berbilang baris kelihatan seperti di Jawa. Penampilannya:
/*
comment text
comment text
comment text
*/
Sudah tentu, ia boleh digunakan dalam satu baris juga. Contoh:
/*comment text*/
Terdapat juga jenis komen "dari awal hingga akhir baris", serupa dengan Java "//". Hanya dalam SQL anda perlu menulis dua aksara tolak dan ruang . Pandangan umum mengenai ulasan sedemikian:
-- comment text
Contoh:
SELECT * FROM employee -- WHERE YEAR(join_date) = 2015
Dalam contoh di atas, kami mengulas keadaan pertanyaan, jadi MySQL hanya akan melaksanakan pertanyaan:
SELECT * FROM employee
2.4 Sebutan SQL
Jika anda berkomunikasi dengan pelanggan asing atau lulus temu duga dalam talian untuk syarikat Amerika, maka anda mungkin ditanya tentang pengalaman anda dengan bahasa sekuel . Anda akan dengan jujur mengatakan bahawa anda tidak bekerja dengannya dan segera gagal temu duga.
Dan masalahnya ialah bahasa SQL pada asalnya dipanggil SEQUEL, yang disebut seperti sekuel (ˈsēkwəl), jadi selalunya di AS dan sumber bahasa Inggeris lain anda tidak akan mendengar "escuel", tetapi "sequel". SQL ditulis, dan sekuelnya dibaca. Inilah paradoks sejarah sedemikian.