MySQL是一種常用的關系型數據庫管理系統,它允許創建一個表中有多個主鍵。多主鍵可以用于復合關鍵字的選擇,以及對表中不同屬性的查詢和排序。在 MySQL 中,我們可以使用以下語法創建一個有多個主鍵的表:
CREATE TABLE table_name ( column_name1 datatype, column_name2 datatype, …, PRIMARY KEY(column_name1, column_name2, ...) );
在這個語句中,PRIMARY KEY 用于指定列作為主鍵。如果要在一個表中有多個主鍵,則可以在 PRIMARY KEY 中列出每個主鍵列名,以逗號分隔。例如:
CREATE TABLE employees ( id INT NOT NULL, name VARCHAR(50) NOT NULL, age INT NOT NULL, PRIMARY KEY(id, name) );
在這個表中,id 和 name 兩列組成了復合主鍵。我們可以使用以下語句查詢表中的數據:
SELECT * FROM employees WHERE id = 1 AND name = 'John';
上面的語句將查詢出 id 為 1 且名字為 John 的 employee 的信息。
多主鍵的一個重要應用是對表中不同屬性的查詢和排序。假設我們有一個存儲學生成績信息的表,其中包含學生姓名、課程名稱和成績三個屬性。如果我們想查詢某個學生在不同課程中的成績排名,那么我們可以將姓名和課程名稱兩列作為主鍵,然后對成績進行排序。例如:
CREATE TABLE grades ( name VARCHAR(50) NOT NULL, course VARCHAR(50) NOT NULL, grade INT NOT NULL, PRIMARY KEY(name, course) );
我們可以使用以下語句查詢某個學生在所有課程中的排名:
SELECT g1.name, g1.course, COUNT(g2.grade) AS rank FROM grades g1, grades g2 WHERE g1.course = g2.course AND g1.grade<= g2.grade GROUP BY g1.name, g1.course;
上面的語句將返回每個學生在每個課程中的排名。