授课课时:2 授课地点:三教202
授课形式:教学做合一
教学目标
(一)知识目标:
- 掌握数据库的创建与表的设计方法。
- 掌握视图和存储过程的创建与使用。
(二)能力目标:
- 能够设计和实现一个简单的图书管理信息系统。
- 熟练使用SQL进行数据库操作。
(三)素质目标:
- 提升学生的数据库设计与操作能力。
- 培养解决实际问题的综合能力。
教学重难点
(一)重点:数据库表的设计与创建。
(二)难点:理解外键约束及其在表设计中的作用。
教学资源
教科书、PPT、 Navicat 、’头歌’在线实验平台
教学方法
(一)教法
1.讲授法 2.示范法 3.讨论法
(二)学法
1.自主学习 2.实践操作 3.归纳总结
教学过程设计
(一)课前任务
预习数据库基本操作和表设计,熟悉SQL数据插入、更新和查询语法
(二)课程导入
今天我们将设计和实现一个图书管理信息系统,通过实际操作掌握数据库的基本操作、视图和存储过程。
(三)综合实训内容
实训项目:图书管理信息系统的设计与实
一、数据库与表的创建
- 创建数据库
BookDB
:
CREATE DATABASE BookDB DEFAULT CHARSET utf8;
2.创建数据表 T_book
、T_card
、T_borrow
:
USE BookDB;
CREATE TABLE T_book (
Book_no VARCHAR(20) PRIMARY KEY,
Book_name VARCHAR(100),
Author VARCHAR(50),
Price DECIMAL(10,2),
Qty INT,
Loan_qty INT
);
CREATE TABLE T_card (
Card_no VARCHAR(20) PRIMARY KEY,
Card_name VARCHAR(30),
Address VARCHAR(200),
Mobile VARCHAR(11)
);
CREATE TABLE T_borrow (
Borrow_id BIGINT PRIMARY KEY,
Book_no VARCHAR(20) NOT NULL,
Card_no VARCHAR(20) NOT NULL,
Borrow_date DATETIME,
Return_date DATETIME,
FOREIGN KEY (Book_no) REFERENCES T_book (Book_no),
FOREIGN KEY (Card_no) REFERENCES T_card (Card_no)
);
二、插入测试数据
- 向表
T_book
插入数据:
INSERT INTO T_book VALUES
('B1001', '数据库应用', '曾建华', 58, 15, 12),
('B1002', 'java程序设计', '李勇', 45, 15, 20),
('B1003', 'html5与css3', '刘强', 65, 15, 8),
('B1004', 'Python', '王芳', 42, 5, 5),
('B1005', 'jsp编程', '李小明', 60, 5, 7);
2.向表 T_card
插入数据:sql复制代码
INSERT INTO T_card VALUES
('C1001', 'Kate', '无', '13578954578'),
('C1002', 'Marry', '无', '13596547896'),
('C1003', 'Jarry', '无', '13878954512'),
('C1004', 'Tom', '无', '13732148965'),
('C1005', 'Tinna', '无', '15978954532');
3.向表 T_borrow
插入数据:
INSERT INTO T_borrow VALUES
(1, 'B1001', 'C1001', '2010-11-15', '2010-11-12'),
(2, 'B1003', 'C1002', '2010-11-16', '2010-12-11'),
(3, 'B1002', 'C1003', '2010-11-30', '2010-12-24'),
(4, 'B1004', 'C1003', '2020-02-15', '2020-06-12'),
(5, 'B1004', 'C1001', '2020-06-15', '2020-07-12'),
(6, 'B1001', 'C1002', '2020-10-15', NULL);
三、数据操作
- 将“李”姓作者的所有图书单价下调10%:sql复制代码
UPDATE T_book SET Price = 0.9 * Price WHERE Author LIKE '李%';
- 查询出日期在2010-10-31至2010-11-30之间借出的图书信息:sql复制代码
SELECT T_book.* FROM T_book JOIN T_borrow ON T_book.Book_no = T_borrow.Book_no WHERE Borrow_date BETWEEN '2010-10-31' AND '2010-11-30';
- 查询出没有还书的借书人姓名:sql复制代码
SELECT Card_name FROM T_borrow JOIN T_card ON T_borrow.Card_no = T_card.Card_no WHERE Return_date IS NULL;
- 查询出手机号为“135”开头的所有借书人姓名:sql复制代码
SELECT Card_name FROM T_card WHERE Mobile LIKE '135%';
四、视图和存储过程
- 编写视图查询库存数量小于10册的图书信息:sql复制代码
CREATE VIEW v_bookInfor AS SELECT * FROM T_book WHERE Qty < 10; SELECT * FROM v_bookInfor;
- 编写存储过程查询指定借阅者的借阅次数:sql复制代码
DELIMITER $$ CREATE PROCEDURE p_borrow(IN cardno VARCHAR(20), OUT num INT) BEGIN SELECT COUNT(card_no) INTO num FROM T_borrow WHERE card_no = cardno; END $$ DELIMITER ; CALL p_borrow('C1001', @num); SELECT @num;
课程总结
本课程的综合实训项目涵盖了MySQL核心知识点。通过这个综合实训,可以巩固并提高MySQL开发技能。
课后作业
统计各借书人的累计借阅天数
教学反思
在内容组织、实战案例设计和教学方式方面,我还有很大的提升空间