为期一周的数据库课程设计终于完工, 总结一些经验和教训。发现基础的知识还是要时刻记在心中,知识不基础,何谈去开发?因为做什么东西都首先要一定的目标,计划,以及做到东西要做到那个程度,这方面一点要先在脑子里有一个印象,然后才能用所学的知识点去
为期一周的数据库课程设计终于完工, 总结一些经验和教训。发现基础的知识还是要时刻记在心中,知识不基础,何谈去开发?因为做什么东西都首先要一定的目标,计划,以及做到东西要做到那个程度,这方面一点要先在脑子里有一个印象,然后才能用所学的知识点去发挥, 因此知识点一点要掌握牢固,自己在设计课程设计的过程中,发现写好的数据库语言一点运行,就会出现这个那个的问题。然后从头去寻找问题的源头,才发现表的主键和外键设置出了问题。然后琢磨半天,突然意识到到底是什么主键和外键?
两个的定义和作用到底是什么?,这才发现以前上课所学的知识现在非所用,知其然不知其所以然。
键:唯一标识表中的所有行的一个列或一组列。
主键不允许空值。不能存在具有相同的主键值的两个行,因此主键值总是唯一标识单个行。
表中可以有不止一个键唯一标识行,每个键都称作候选键。只有一个候选键可以选作表的主键,所有其它候选键称作备用键。尽管表不要求具有主键,但定义主键是很好的做法。
外键(FK): 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。
例如:成绩表中的学号不能做成绩表的主键(因为一个学生可以有多行成绩数据),但每行的学号和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键。(典型的一对多关系)
(1)创建一个新表的时候,把英文括号写成了中文,找错误找了半小时。
(2)新表第一次录入数据之后,第二次不能再次录入,已经造成重复。
(3)没有注意主键不能为空值。
(4)外键设置时约束项没有搞清楚。
通过这次课程设计发现这其中需要的很多知识我们没有接触过,上网查找资料的时候发现我们以前所学到的仅仅是皮毛,还有很多需要我们掌握的东西我们根本不知道。同时也发现有很多已经学过的东西我们没有理解到位,不能灵活运用于实际,不能很好的用来解决问题,这就需要自己不断的大量的实践,通过不断的自学,不断地发现问题,思考问题,进而解决问题。在这个过程中我们将深刻理解所学知识,同时也可以学到不少很实用的东西。
CREATE TABLE BILL ( BILL_num char(10) primary key , BILL_time char(8) NOT NULL, BILL_paymoney char(10) NOT NULL, BILL_summoney char(10) NOT NULL, BILL_goodstype char(10) NOT NULL, BILL_unitprice char (10) NOT NULL, Customers_num char (10), MemberID char (11) , ) CREATE TABLE Member ( MemberID char(11) primary key, MemberNAme char(10) NOT NULL, MemberSex char (2) NOT NULL, Memberphone varchar(12) NOT NULL, BILL_num char(10) NOT NULL, constraint MemberSex check(MemberSex='男'or MemberSex='女'), foreign key (BILL_num ) references BILL(BILL_num) ) CREATE TABLE Customers ( Customers_num char (10) primary key , Customers_name char (10) NOT NULL, BILL_num char(10) NOT NULL, foreign key (BILL_num ) references BILL(BILL_num) ) CREATE TABLE Goods ( Goods_num char(4) primary key, Goods_name char (10) , Goods_stock char(10), BILL_num char(10), foreign key (BILL_num ) references BILL(BILL_num) ) go insert into BILL(BILL_num, BILL_time,BILL_paymoney ,BILL_summoney, BILL_goodstype ,BILL_unitprice ,MemberID,Customers_num) values('2014010101','20140101','100','50','蓝山','30','20140101001','Null') insert into BILL(BILL_num, BILL_time,BILL_paymoney ,BILL_summoney, BILL_goodstype ,BILL_unitprice ,MemberID ,Customers_num) values('2014010102','20140101','100','50','炭烧','35','20140202002','Null') insert into BILL(BILL_num, BILL_time,BILL_paymoney ,BILL_summoney, BILL_goodstype ,BILL_unitprice ,MemberID,Customers_num ) values('2014010103','20140101','100','50','美式','40','20140310003','Null') insert into BILL(BILL_num, BILL_time,BILL_paymoney ,BILL_summoney, BILL_goodstype ,BILL_unitprice ,MemberID ,Customers_num) values('2014010104','20140101','100','50','拿铁','45','20140404004','Null') insert into BILL(BILL_num, BILL_time,BILL_paymoney ,BILL_summoney, BILL_goodstype ,BILL_unitprice ,MemberID ,Customers_num) values('2014010105','20140101','100','50','摩卡','50','20141001005','Null') insert into BILL(BILL_num, BILL_time,BILL_paymoney ,BILL_summoney, BILL_goodstype ,BILL_unitprice ,MemberID, Customers_num) values('2014010106','20140101','100','50','卡布奇诺','55','20141101006','Null') insert into BILL(BILL_num, BILL_time,BILL_paymoney ,BILL_summoney, BILL_goodstype ,BILL_unitprice ,MemberID, Customers_num) values('2013010101','20140101','100','50','卡布奇诺','55','Null','2014110106') insert into BILL(BILL_num, BILL_time,BILL_paymoney ,BILL_summoney, BILL_goodstype ,BILL_unitprice ,MemberID, Customers_num) values('2013010102','20140101','100','50','卡布奇诺','55','Null','2014110106') insert into Member(MemberID,MemberNAme,MemberSex,Memberphone,BILL_num) values ('20140101001','李一','男','15832578651','2014010101') insert into Member(MemberID,MemberNAme,MemberSex,Memberphone,BILL_num) values ('20140202002','李二','女','15832578652','2014010102') insert into Member(MemberID,MemberNAme,MemberSex,Memberphone,BILL_num) values ('20140310003','李三','男','15832578653','2014010103') insert into Member(MemberID,MemberNAme,MemberSex,Memberphone,BILL_num) values ('20140404004','李四','女','15832578654','2014010104') insert into Member(MemberID,MemberNAme,MemberSex,Memberphone,BILL_num) values ('20141001005','李五','男','15832578655','2014010105') insert into Member(MemberID,MemberNAme,MemberSex,Memberphone,BILL_num) values ('20141101006','李六','女',【本文来自鸿网互联 (http://www.68idc.cn)】'15832578656','2014010106') insert into Goods(Goods_num ,Goods_name ,Goods_stock ,BILL_num ) values('1','蓝山','10','2014010101') insert into Goods(Goods_num ,Goods_name ,Goods_stock ,BILL_num ) values('2','炭烧','10','2014010102') insert into Goods(Goods_num ,Goods_name ,Goods_stock ,BILL_num ) values('3','美式','10','2014010103') insert into Goods(Goods_num ,Goods_name ,Goods_stock ,BILL_num ) values('4','拿铁','10','2014010104') insert into Goods(Goods_num ,Goods_name ,Goods_stock ,BILL_num ) values('5','摩卡','10','2014010105') insert into Goods(Goods_num ,Goods_name ,Goods_stock ,BILL_num ) values('6','卡布奇诺','10','2014010106') insert into Customers( Customers_num,Customers_name,BILL_num ) values ('01','王一','2013010101') insert into Customers( Customers_num,Customers_name,BILL_num ) values ('02','王二','2013010102')实验结果:会员信息:
商品信息:
顾客信息:
账单信息:

InnoDB使用redologs和undologs確保數據一致性和可靠性。 1.redologs記錄數據頁修改,確保崩潰恢復和事務持久性。 2.undologs記錄數據原始值,支持事務回滾和MVCC。

EXPLAIN命令的關鍵指標包括type、key、rows和Extra。 1)type反映查詢的訪問類型,值越高效率越高,如const優於ALL。 2)key顯示使用的索引,NULL表示無索引。 3)rows預估掃描行數,影響查詢性能。 4)Extra提供額外信息,如Usingfilesort提示需要優化。

Usingtemporary在MySQL查詢中表示需要創建臨時表,常見於使用DISTINCT、GROUPBY或非索引列的ORDERBY。可以通過優化索引和重寫查詢避免其出現,提升查詢性能。具體來說,Usingtemporary出現在EXPLAIN輸出中時,意味著MySQL需要創建臨時表來處理查詢。這通常發生在以下情況:1)使用DISTINCT或GROUPBY時進行去重或分組;2)ORDERBY包含非索引列時進行排序;3)使用複雜的子查詢或聯接操作。優化方法包括:1)為ORDERBY和GROUPB

MySQL/InnoDB支持四種事務隔離級別:ReadUncommitted、ReadCommitted、RepeatableRead和Serializable。 1.ReadUncommitted允許讀取未提交數據,可能導致臟讀。 2.ReadCommitted避免臟讀,但可能發生不可重複讀。 3.RepeatableRead是默認級別,避免臟讀和不可重複讀,但可能發生幻讀。 4.Serializable避免所有並發問題,但降低並發性。選擇合適的隔離級別需平衡數據一致性和性能需求。

MySQL適合Web應用和內容管理系統,因其開源、高性能和易用性而受歡迎。 1)與PostgreSQL相比,MySQL在簡單查詢和高並發讀操作上表現更好。 2)相較Oracle,MySQL因開源和低成本更受中小企業青睞。 3)對比MicrosoftSQLServer,MySQL更適合跨平台應用。 4)與MongoDB不同,MySQL更適用於結構化數據和事務處理。

MySQL索引基数对查询性能有显著影响:1.高基数索引能更有效地缩小数据范围,提高查询效率;2.低基数索引可能导致全表扫描,降低查询性能;3.在联合索引中,应将高基数列放在前面以优化查询。

MySQL學習路徑包括基礎知識、核心概念、使用示例和優化技巧。 1)了解表、行、列、SQL查詢等基礎概念。 2)學習MySQL的定義、工作原理和優勢。 3)掌握基本CRUD操作和高級用法,如索引和存儲過程。 4)熟悉常見錯誤調試和性能優化建議,如合理使用索引和優化查詢。通過這些步驟,你將全面掌握MySQL的使用和優化。

MySQL在現實世界的應用包括基礎數據庫設計和復雜查詢優化。 1)基本用法:用於存儲和管理用戶數據,如插入、查詢、更新和刪除用戶信息。 2)高級用法:處理複雜業務邏輯,如電子商務平台的訂單和庫存管理。 3)性能優化:通過合理使用索引、分區表和查詢緩存來提升性能。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Dreamweaver Mac版
視覺化網頁開發工具

Dreamweaver CS6
視覺化網頁開發工具