广东工业大学SQL编程报告.docx
大作业名称:数据库的定义、建立与维护实验一、目的与要求使用 SQL 语言实现数据库的创建、删除;基本表的创建、删除、更新工作。必须给出完整的 SQL 源码,并以截图的形式表现出 SQL 语句的运行是否成功。二、SQL 源码及运行结果1定义数据库1. - 创建数据库2. CREATE DATABASE library_3119001063; 3.4. - 切换到 Library_3119001063 数据库5. USE Library_3119001063;2. 定义下列数据库基本表1. - 创建表2. CREATE TABLE book3. (bno CHAR(8) PRIMARY KEY NOT NULL,4. category VARCHAR(10) NOT NULL,5. title VARCHAR(40) NOT NULL,6. publisher VARCHAR(30) NULL,7. pub_year YEAR NOT NULL,8. author CHAR(20),9. price DECIMAL(5,2) NOT NULL 10. );11.12. CREATE TABLE card13. (cno CHAR(7) PRIMARY KEY NOT NULL,14. pname CHAR(8) NOT NULL,15. department VARCHAR(5),16. ctype char(1) NOT NULL CHECK (ctype IN('T','G','U','F') 17. );18.19. CREATE TABLE borrow20. (cno CHAR(7),21. bno CHAR(8),22. borrow_date DATE NOT NULL,23. return_date DATE,24. CONSTRAINT C2 PRIMARY KEY(cno, bno),25. CONSTRAINT C3 FOREIGN KEY(cno) REFERENCES card(cno),26. CONSTRAINT C4 FOREIGN KEY(bno) REFERENCES book(bno) 27. );-一廿暹厘日l, l i 1 咖 l . ',l, -,.r| J 作 户 ” 11 ·1,·,r. : ·· , . 1 I o k. , , 1·' . ,> ID 如°'; n少 ,. ., ., I . ,匡倡加·' 人S"' " '全t' ” ' bX遭 I'腊.I'll. 圈+手I 1, ,1·,'之二0(:·) :- 11111 j .l ;J··l 心, .i.f' I ,.I .1. I 11·, 1 卜 . I , 1 , ,'仁 仁 1. 1 , . l I J)。,叫三臼, ., .,.,·' ' , - ,',.,I ' l , . . ,凤J ' , :·, l '··.,寸.I :,cr r, w、1 11 I .I·:. :>< . , · ,J 1111 :u,q:十合·q: Fr,4b亭渗 ,1(?j ,·,亡I俨:;-、严 百I: .I (.,·,! I " I大··今;-, L I,. ,. ,I I l l , . .,墨= cl(:.: , ',, l " ' ,, : , ,.,. J. J! ·', I 4 : UI I I ,上,.,', 卜 , '七,:, 1 , .,七一:,k ,_,.,至(") l l , . T 1 4 ,· 1. , '" I . ·, JI . ·· ,.l·'l9iiiJ 1窄严 P: 1 1 勹 ";覃亡3. 数据输入1. - 插入数据 - 插入 Book 表数据2. INSERT INTO book VALUES('b0001', 'eng.', 'Database systems', 'Springer', 2016, 'John', 28);3. INSERT INTO book VALUES('b0002', 'eng.', 'Operation systems', 'Taylor', 2018, 'Michael', 35);4. INSERT INTO book VALUES('b0003', 'sci.', 'Advanced mathematics', 'MIT', 2021, 'Catherine', 15);5. INSERT INTO book VALUES('b0004', 'sci.', 'Discrete mathematics', 'MIT', 2020, 'Peter', 22);6. INSERT INTO book VALUES('b0005', 'eng.', 'C language', 'Springer', 2017, 'Shan non', 40);7. INSERT INTO book VALUES('b0006', 'liter.', 'Harry potter', 'Elseiver', 2019, ' Lisa', 19);8. INSERT INTO book VALUES('b0007', 'liter.', 'Star wars', 'Elseiver', 2018, 'Jim ', 25);9. INSERT INTO book VALUES('b0008', 'his.', 'Modern chinese history', 'Taylor', 2 017, 'Frank', 32);10. INSERT INTO book VALUES('b0009', 'his.', 'The second world war', 'Taylor', 20 21, 'Mark', 32);11. INSERT INTO book VALUES('b0010', 'eng.', 'JAVA language', 'MIT', 2022, 'Sally ', 38);12.13. - 插入数据 - 插入 Card 表数据14. INSERT INTO card VALUES('T001', 'Li Yuan', 'auto', 'T');15. INSERT INTO card VALUES('T002', 'Wang Li', 'auto', 'T');16. INSERT INTO card VALUES('T003', 'Zhang Qi', 'cs', 'T');17. INSERT INTO card VALUES('T004', 'Zhao Gao', 'math', 'T');18. INSERT INTO card VALUES('G001', 'Wu Mi', 'auto', 'G');19. INSERT INTO card VALUES('G002', 'Qian qi', 'cs', 'G');20. INSERT INTO card VALUES('U001', 'Li Fen', 'auto', 'U');21. INSERT INTO card VALUES('U002', 'Bai La', 'art', 'U');22. INSERT INTO card VALUES('F001', 'Zhang Fa', 'pku', 'F');23. INSERT INTO card VALUES('F002', 'Li Aigu', 'stu', 'F'); 24.25. - 插入数据 - 插入 Borrow 表数据26. INSERT INTO borrow VALUES('T001', 'b0001', '2022-01-10', '2022-03-04');27. INSERT INTO borrow VALUES('T001', 'b0002', '2022-05-10', '2022-08-01');28. INSERT INTO borrow VALUES('T001', 'b0005', '2022-01-01', '2022-03-04');29. INSERT INTO borrow VALUES('T001', 'b0010', '2022-01-01', '2022-03-04');30. INSERT INTO borrow VALUES('T003', 'b0001', '2022-05-15', '2022-08-04');31. INSERT INTO borrow VALUES('T003', 'b0002', '2022-03-15', '2022-04-04');32. INSERT INTO borrow VALUES('T003', 'b0003', '2022-02-15', '2022-03-04');33. INSERT INTO borrow VALUES('T003', 'b0004', '2021-02-15', '2021-03-04');34. INSERT INTO borrow VALUES('G002', 'b0005', '2022-05-05', '2022-07-04');35. INSERT INTO borrow VALUES('G002', 'b0007', '2022-08-10', NULL);36. INSERT INTO borrow VALUES('G002', 'b0010', '2022-07-10', NULL);37. INSERT INTO borrow VALUES('U001', 'b0009', '2022-02-02', '2022-03-09');38. INSERT INTO borrow VALUES('U001', 'b0008', '2022-02-02', '2022-03-09');39. INSERT INTO borrow VALUES('U002', 'b0003', '2022-03-06', '2022-03-09');40. INSERT INTO borrow VALUES('U002', 'b0004', '2022-04-02', '2022-05-09');41. INSERT INTO borrow VALUES('F001', 'b0001', '2022-08-12', '2022-08-15');42. INSERT INTO borrow VALUES('F001', 'b0002', '2022-02-12', '2022-03-01');43. INSERT INTO borrow VALUES('F001', 'b0003', '2022-06-12', '2022-07-11');44. INSERT INTO borrow VALUES('F002', 'b0009', '2022-08-20', NULL);1111- 僭l, , ,., , '' " ' " .三 巳三巴rJ· .',令 , n ,罕l : .气',-,Ir' 九,' ·“'. I :· : I , I ' ·匮 I II |1 叭面""!于|J I :l l 已l 昌 晶l-i瞿i匕,! ., - , .,.,I" ' ''llIl 嘈 . 严Lr 1. I,' ? 1 · ? ., . I, It l ,:.1, : ,l., , ,.,: , 1.' ' "·" ''"" '·I .,,·,仁 ,l , I量工.1心,· , , . .,. 'I . . o;'1 l ,' 1, : :· I. ' , . , I,·., T ·, I,卜, ,., . . .- . .,1, , , f.,IL, , ,.,I ·咖·,, , : I'I I,I,. 之P,, ,令,今十气乒' O;:令11111 1 已l I )· 1 f rc瞿配1, I.I' " ', ., ,一.I ' "W, 1 1 -'卜,I :卜 ,', 卜. ,l . , ,1·, I I ,) I 心 心 = ')尸一子: . . .,". ' ' ' " 'I . l o. ' I .J ' , o -'" I 七 J I晒今I , 今今上了护,0罕 .:l·JII :.,l,l 1l ' , i, , 1 · , .· , Il,1 . 'l ', l4. 数据修改1) 将 Book 表中 price 属性的值全部打 8 折1. - 修改数据 - 将 Book 表中 price 属性的值全部打 8 折2. UPDATE book_3. SET price=price*0.8;,.1瞿,., .' 1 . 1芘 i _0,. .,.,.立0 kX土b咐 冒 · 1111- II 尸土千·f · .'.J乒,罕 .:J喟 一, , ,1,.,. .I'v ,:', :,I' ·1 · , 1 , 1,l .,; ? ,r ,' ',;, 'l, ,.,1 , , .,.,. 1' " '', , I, l l l f l 11, t .I.I ,., ,L r, 1 lr 2) 将 Card 表中 cno=F001的姓名改为Li Ai。1. - 修改数据 - 将 Card 表中 cno=F001的姓名改为Li Ai2. UPDATE card3. SET pname='Li Ai'4. WHERE cno='F001'5. 数据删除1) 删除 Borrow 表中 cno=F002的借书记录。1. - 删除数据,删除 Borrow 表中 cno='F002'的借书记录2. DELETE3. FROM borrow4. WHERE cno='F002'2) 删除MIT出版社的书籍(能够删除么?请说明原因)。1. - 删除数据,删除'MIT'出版社的书籍2. - 先删除 borrow 表中的关于'MIT'的数据3. DELETE4. FROM borrow5. WHERE bno IN (SELECT bno from book WHERE publisher='MIT'); 6.7. DELETE8. FROM book9. WHERE publisher='MIT'不能直接删除,因为 borrow 表中有 book 表的 bno 外键约束,所以要删除 book 表中MIT出版社的书籍,必须先删除 borrow 表中关于MIT书籍的数据。三、思考题1)如果在创建表时没有定义数据完整性约束,则在数据录入或删除过程中会对数据库造成什么影响?在数据录入过程中,有可能插入无效或重复的数据,使数据库的数据有重复或不健全。在使用数据库的删除和修改时,如有多张表,其约束又不健全,在执行其过程时, 会使得多张表数据不全面,有时会多余的数据存在。比如一个人的信息存在于多张表中, 你只删除了其中一张表中此人的信息,这时如果约束条件不健全,此人的信息还会在其它表中残留。