Rumah > Artikel > pangkalan data > 10 Soalan Temuduga MySQL Penting untuk Pentadbir Pangkalan Data
Sebagai pentadbir pangkalan data, anda perlu mahir dalam MySQL, salah satu sistem pengurusan pangkalan data sumber terbuka yang paling popular. Sama ada anda seorang pemula atau profesional berpengalaman, anda harus bersedia untuk menjawab beberapa soalan asas temuduga MySQL. Dalam artikel ini, kami akan membincangkan beberapa soalan yang paling biasa dan memberikan contoh untuk membantu anda bersedia untuk temu duga anda yang seterusnya.
MySQL ialah sistem pengurusan pangkalan data hubungan sumber terbuka (RDBMS) yang menggunakan SQL (Bahasa Pertanyaan Berstruktur) untuk mengurus dan memanipulasi data. Ia pertama kali dikeluarkan pada tahun 1995 dan kini dimiliki oleh Oracle Corporation. MySQL digunakan secara meluas dalam aplikasi web, terutamanya yang dibina menggunakan PHP, dan terkenal dengan kelajuan, kebolehpercayaan dan kemudahan penggunaannya.
MySQL menyokong pelbagai jenis data, termasuk −
Jenis data berangka − INT, BIGINT, FLOAT, DOUBLE, PERPULUHAN.
Jenis data tarikh dan masa - TARIKH, MASA, MASA TARIKH, STAMP MASA.
Jenis data rentetan − CHAR, VARCHAR, TEKS, BLOB.
Jenis data lain - BOOLEAN, ENUM, SET.
Berikut adalah beberapa contoh−
INT − mewakili integer (cth. 5, 10, 100).
VARCHAR − mewakili rentetan panjang berubah-ubah (cth. 'hello', 'world').
TEKS − mewakili nilai teks yang besar (cth. catatan blog, artikel).
TARIKH − mewakili tarikh (cth. '2023-04-03').
TIMESTAMP − mewakili tarikh dan masa (cth. '2023-04-03 14:30:00').
Kunci utama ialah pengecam unik untuk satu baris dalam jadual MySQL Ia digunakan untuk memastikan setiap baris dalam jadual boleh dikenal pasti secara unik dan boleh diakses dengan cepat menjadi unik dan tidak boleh batal.
Ini adalah contoh −
CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL UNIQUE );
Dalam contoh ini, lajur 'id' ialah kunci utama jadual 'pengguna'. Ia memastikan bahawa setiap pengguna boleh dikenal pasti secara unik melalui ID mereka.
Kunci asing ialah lajur atau kumpulan lajur dalam jadual MySQL yang merujuk kepada kunci utama jadual lain. Ia digunakan untuk mewujudkan hubungan antara dua jadual dan memastikan ketekalan data di antara mereka. Kekangan utama asing boleh ditambah pada jadual untuk menguatkuasakan integriti rujukan.
Ini adalah contoh −
CREATE TABLE orders ( id INT PRIMARY KEY, user_id INT, product_id INT, FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (product_id) REFERENCES products(id) );
Dalam contoh ini, lajur 'id_pengguna' dan 'id_produk' ialah kunci asing yang merujuk kepada lajur 'id' dalam jadual 'pengguna' dan 'produk', ini memastikan pesanan dikaitkan dengan pengguna dan produk yang sah.
Dalam MySQL, paparan ialah jadual maya berdasarkan hasil pernyataan SELECT. Pandangan sering digunakan untuk memudahkan pertanyaan kompleks dan memberikan pandangan abstrak data asas.
Ini adalah contoh −
CREATE VIEW user_orders AS SELECT u.name, o.product_name, o.order_date FROM users u JOIN orders o ON u.id = o.user_id;
Dalam contoh ini, kami telah mencipta paparan yang dipanggil 'pesanan_pengguna' yang mengembalikan nama pengguna, nama produk dan tarikh pesanan untuk semua pesanan. Pandangan ini adalah berdasarkan operasi JOIN antara jadual 'pengguna' dan 'pesanan'.
INNER JOIN dan LEFT JOIN ialah kedua-dua jenis operasi JOIN yang digunakan untuk menggabungkan baris daripada dua atau lebih jadual. Perbezaan utama antara keduanya ialah INNER JOIN hanya mengembalikan baris yang mempunyai nilai yang sepadan dalam kedua-dua jadual, manakala LEFT JOIN mengembalikan semua baris dari jadual kiri (jadual pertama yang disenaraikan dalam pernyataan JOIN) serta dari jadual kanan daripada garisan yang sepadan.
Ini adalah contoh −
Andaikan kita mempunyai dua jadual, 'pengguna' dan 'pesanan'. Jadual 'pengguna' mengandungi maklumat tentang pengguna, manakala jadual 'pesanan' mengandungi maklumat tentang pesanan yang dibuat oleh pengguna ini.
Untuk mendapatkan senarai semua pengguna dan pesanan mereka yang sepadan, kami boleh menggunakan LEFT JOIN −
SELECT u.name, o.product_name, o.order_date FROM users u LEFT JOIN orders o ON u.id = o.user_id;
Pertanyaan ini akan mengembalikan semua pengguna, tidak kira sama ada mereka mempunyai sebarang pesanan dan pesanan sepadan mereka, jika ada.
Untuk mendapatkan senarai pengguna yang telah membuat tempahan, kita boleh menggunakan INNER JOIN −
SELECT u.name, o.product_name, o.order_date FROM users u INNER JOIN orders o ON u.id = o.user_id;
Pertanyaan ini hanya akan mengembalikan pengguna yang telah membuat pesanan, dan pesanan mereka yang sepadan.
Pengindeksan ialah proses mencipta indeks pada satu atau lebih lajur jadual MySQL untuk meningkatkan prestasi pertanyaan. Indeks ialah struktur data yang membolehkan pangkalan data mencari baris dengan cepat berdasarkan nilai dalam lajur yang diindeks.
Andaikan kita mempunyai jadual yang dipanggil 'produk' yang mengandungi maklumat tentang produk, termasuk lajur yang dipanggil 'nama_produk'. Untuk meningkatkan prestasi mencari produk mengikut nama, kami boleh membuat indeks pada lajur 'nama_produk' −
CREATE INDEX idx_products_product_name ON products(product_name);
Ini akan mencipta indeks pada lajur 'product_name' pada jadual 'products', membenarkan pangkalan data mencari produk dengan cepat mengikut nama.
CHAR和VARCHAR都是MySQL中用于存储字符数据的字符串数据类型。两者之间的主要区别在于,CHAR是固定长度的数据类型,而VARCHAR是可变长度的数据类型。
如果我们将一个列定义为CHAR(10),无论该列中存储的数据的长度如何,它始终会占用10个字节的存储空间。这意味着,如果我们在该列中存储字符串'hello',它将会被填充空格以占用10个字节的存储空间。
如果我们将一列定义为VARCHAR(10),它将只占用必要的存储空间来存储数据。这意味着如果我们在该列中存储字符串'hello',它将只占用5个字节的存储空间。
一般来说,对于长度固定的列(例如邮政编码),使用CHAR是一个好的实践,而对于长度可变的列(例如产品名称),使用VARCHAR。
子查询是在MySQL中嵌套在另一个查询中的查询。子查询可以用于检索将在主查询中使用的数据,或者根据条件过滤数据。
假设我们有两个表,'users'和'orders'。'users'表包含有关用户的信息,而'orders'表包含有关这些用户下的订单的信息。
要获取所有已下订单的用户列表,我们可以使用子查询 -
SELECT name FROM users WHERE id IN (SELECT user_id FROM orders);
这个查询首先执行子查询,该子查询从'orders'表中返回一个用户ID列表。然后,主查询使用IN运算符过滤'users'表,并返回下单的用户的姓名。
MySQL中的数据库事务是一系列作为单个工作单元执行的SQL语句。事务用于确保一组SQL语句以原子、一致、隔离和持久(ACID)的方式执行。
假设我们有一个名为'accounts'的表,其中包含有关银行账户的信息,包括一个名为'balance'的列。要将资金从一个账户转移到另一个账户,我们需要在一个事务中更新两个账户的余额 -
BEGIN; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT;
此交易将从ID为1的账户中扣除100美元,并将100美元添加到ID为2的账户中,确保该交易以ACID方式执行。
Atas ialah kandungan terperinci 10 Soalan Temuduga MySQL Penting untuk Pentadbir Pangkalan Data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!