Products
GG网络技术分享 2025-10-28 21:03 1
Sakila数据库,作为MySQL的示例数据库,自MySQL 5.0版本引入以来已成为学关系型数据库特性的绝佳案例。它不仅涵盖了表的关系和连接,还展示了SQL语句的基本用法。

通过以下SQL语句,我们能查询出客户信息,包括客户ID、名字、邮箱地址、地址以及租借订单数。
SELECT customer.customer_id, CONCAT AS name, customer.email, address.address, address.phone, COUNT AS total_rentals
FROM customer
INNER JOIN address ON customer.address_id=address.address_id
INNER JOIN rental ON customer.customer_id=rental.customer_id
GROUP BY customer.customer_id
ORDER BY total_rentals DESC;
查询电影信息是Sakila数据库中常见的操作。以下SQL语句可用于查询电影表格中全部电影的信息,包括电影ID、标题、说说、长远度以及评级等。
SELECT film.film_id, film.title, film.description, film.length, rating.rating
FROM film
INNER JOIN film_rating ON film.film_id = film_rating.film_id
INNER JOIN rating ON film_rating.rating_id = rating.rating_id
ORDER BY film.length DESC;
表格film_category存储了个个电影的类别信息, 如动作、科幻、经典、新鲜片等。film_id和category_id分别对应着表格film和表格category中的主键。
CREATE TABLE film_category (
film_id SMALLINT UNSIGNED NOT NULL,
category_id TINYINT UNSIGNED NOT NULL,
last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY ,
KEY fk_film_category_category ,
CONSTRAINT fk_film_category_film FOREIGN KEY REFERENCES film ON UPDATE CASCADE,
CONSTRAINT fk_film_category_category FOREIGN KEY REFERENCES category ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表格payment存储了关于客户租赁订单的相关信息, 包括支付方式、租赁时候以及返回时候等。payment_id是该表格的主键。
CREATE TABLE payment (
payment_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
customer_id SMALLINT UNSIGNED NOT NULL,
staff_id TINYINT UNSIGNED NOT NULL,
rental_id INT DEFAULT NULL,
amount DECIMAL NOT NULL,
payment_date DATETIME NOT NULL,
last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY ,
KEY idx_fk_staff_id ,
KEY idx_fk_customer_id ,
KEY idx_fk_rental_id ,
CONSTRAINT `fk_payment_customer` FOREIGN KEY REFERENCES `customer` ON DELETE NO ACTION ON UPDATE CASCADE,
CONSTRAINT `fk_payment_rental` FOREIGN KEY REFERENCES `rental` ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `fk_payment_staff` FOREIGN KEY REFERENCES `staff` ON DELETE NO ACTION ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Sakila数据库基本上用于演示基本的关系型数据库知识,包括表的关系、表之间的连接以及SQL语句的用。
地址表包含客户、员工和商店的地址信息。以下为address表格的创建语句:
CREATE TABLE address (
address_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
address VARCHAR NOT NULL,
address2 VARCHAR DEFAULT NULL,
district VARCHAR NOT NULL,
city_id SMALLINT UNSIGNED NOT NULL,
postal_code VARCHAR DEFAULT NULL,
phone VARCHAR NOT NULL,
last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY ,
KEY idx_fk_city_id ,
CONSTRAINT `fk_address_city` FOREIGN KEY REFERENCES `city` ON DELETE NO ACTION ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
以下SQL语句用于更新鲜表格store的地址信息,将store_id为1的门店复制到prague地址。
UPDATE store
SET address_id =
WHERE store_id = ;
Sakila数据库是学MySQL关系型数据库特性以及查询、更新鲜数据的最佳实践示例。通过深厚入了解Sakila数据库表格以及运用SQL语句, 能帮巨大家更优良地搞懂关系型数据库的特点和优势,为之后的数据库设计和应用开发打下基础。
预测:因为巨大数据和人造智能的飞迅速进步,Sakila数据库作为学材料的关键性将进一步提升。欢迎用实际体验验证这一观点。
Demand feedback