Mengubah nama kolom
Kita juga perlu berurusan dengan nama kolom. Jika tidak, kami mengulangi nama nama dan id, tetapi berisi data yang berbeda. Di sisi lain, ada kolom id pertama dan kolom employee_id yang berisi data yang sama.
Mari tulis kueri, di mana hanya akan ada kolom yang diperlukan, dan juga ganti nama kolom dengan nama yang sama:
SELECT
task.id AS task_id,
task.name AS task_desc,
task.deadline AS deadline,
emploee.id AS emploee_id,
emploee.name AS emp_name,
emploee.occupation AS
emp_occupation
FROM employee, task
WHERE emploee.id = task.emploee_id
Dan hasil dari kueri ini:
task_id | tugas_desc | tenggat waktu | employee_id | emp_name | emp_occupation |
---|---|---|---|---|---|
1 | Perbaiki bug di frontend | 01-06-2022 | 1 | Ivanov Ivan | Programmer |
2 | Perbaiki bug di backend | 15-06-2022 | 2 | Petrov Petr | Programmer |
7 | Menikmati hidup | (BATAL) | 4 | Rabinovich Moisha | Direktur |
3 | Beli kopi | 01-07-2022 | 5 | Kirienko Anastasia | Manajer kantor |
4 | Beli kopi | 01-08-2022 | 5 | Kirienko Anastasia | Manajer kantor |
5 | Beli kopi | 01-09-2022 | 5 | Kirienko Anastasia | Manajer kantor |
8 | Menikmati hidup | (BATAL) | 6 | Vaska | kucing |
Hebat, masalah dengan nama kolom yang tidak dapat dipahami telah berhasil diselesaikan. Kueri menjadi agak panjang, tetapi semuanya jelas di tabel yang dihasilkan. Dan tidak ada kolom tambahan.
alias tabel
Terkadang nama tabel terlalu panjang dan menghabiskan banyak ruang dalam kueri. Oleh karena itu, pembuat SQL, untuk meningkatkan keterbacaan, seperti dalam kasus kolom, menawarkan kemampuan untuk menentukan alias tabel.
Bentuk umum alias (tabel alias) adalah sebagai berikut:
FROM table1 alias1, table2 alias2
Mari tulis ulang kueri kita sebelumnya dengan alias singkat:
SELECT
t.id AS task_id,
t.name AS task_desc,
t.deadline AS deadline,
e.id AS emploee_id,
e.name AS emp_name,
e.occupation AS emp_occupation
FROM employee e, task t
WHERE e.id = t.emploee_id
Keterbacaan sedikit menurun, tetapi ini karena nama tabel awalnya sederhana dan jelas. Mungkin juga seperti ini:
SELECT
task.id AS task_id,
task.name AS task_desc,
task.deadline AS deadline,
emploee.id AS emploee_id,
emploee.name AS emp_name,
emploee.occupation AS
emp_occupation
FROM
Microsoft_it_department_employee employee,
Year2022_priority_task task
WHERE emploee.id = task.emploee_id
Dan dalam hal ini, alias sudah berguna, bukan? ;)
kunci utama
Dan satu lagi informasi penting tentang tabel. Ingat bahwa kita memiliki kolom employee_id di tabel tugas? Dengan itu, kami mereferensikan ID karyawan dari tabel karyawan.
Jika kita ingin merujuk dari satu tabel ke baris tabel lain, maka tabel yang direferensikan harus memiliki kolom dengan ID, yang juga disebut primary key - PRIMARY KEY .
Paling sering, ini adalah kolom yang ditambahkan secara khusus yang tipe nilainya int . Saat menambahkan catatan ke tabel, SQL secara otomatis menetapkan nilai kolom ini.
Kemudian banyak hal yang terkait dengan kunci-kunci ini:
- menghubungkan tabel yang berbeda satu sama lain;
- pencarian cepat dan pemfilteran berdasarkan id;
- integritas data dalam database (tidak ada referensi ke id yang tidak ada);
- menghapus data yang tidak dirujuk oleh siapa pun;
- dan banyak banyak lainnya.
Omong-omong, ada situasi ketika tabel memiliki apa yang disebut kunci alami . Ini adalah ketika ada kolom yang isinya menyiratkan keunikan. Misalnya, kami memutuskan untuk menambahkan ke tabel karyawan:
- Urutan kedatangan mereka di perusahaan;
- Nomor pajak;
- Nomor dan seri paspor.
Terkadang perancang basis data menggunakan kunci alami sebagai kunci utama, tetapi paling sering digunakan secara terpisah. Bagaimanapun, catatan dapat dihapus, diubah, dan sejenisnya.
Saya kira Anda membaca cerita di Internet ketika juru sita menggantungkan hutang dengan nama lengkapnya pada seseorang? Ini hanya terkait dengan konsep kunci unik. Sangat mudah bagi bank dan juru sita untuk mencari seseorang dengan nama lengkap dan tahun lahir. Dan dalam 99% kasus ini cukup untuk mengidentifikasi seseorang.
Tapi sisanya <1% adalah senama lengkap, dengan tahun lahir yang sama. Dalam kehidupan kita masing-masing, kemungkinan besar tidak ada orang seperti itu, tetapi dalam skala nasional, ada. Secara umum, jika Anda sedang menulis perangkat lunak atau mendesain database, maka perlu diketahui bahwa ini juga bisa terjadi.
GO TO FULL VERSION