主鍵約束:主健對應(yīng)的字段中的數(shù)據(jù)不允許重復(fù)接剩,一旦重復(fù),數(shù)據(jù)操作(增和改)失敗
更新主鍵 & 刪除主鍵
alter table 表名 drop primary key;
主鍵分類: 業(yè)務(wù)主鍵萨咳、邏輯主鍵
自動增長:auto_increment,當(dāng)對應(yīng)的字段懊缺,不給值,或給默認(rèn)值培他、或給NULL值鹃两,會自動的被系統(tǒng)觸發(fā),系統(tǒng)會從當(dāng)前字段中已有的最大值基礎(chǔ)上舀凛,再進(jìn)行+1操作俊扳,得到一個新的不同的數(shù)據(jù)
修改自增長:alter table 表名 auto_increment=值;
查看自增長對應(yīng)的變量:show variables like ‘a(chǎn)uto_increment%’;
刪除自增長:alter table 表名 modify 字段類型猛遍;
唯一讲黾恰(unique key):默認(rèn)允許自動為空,而且可以多個為空
增加唯一桨每尽:
方案一: 在創(chuàng)建表的時候梯醒,字段之后直接跟unique/unique? key
方案二: 在所有的字段之后增加unique key(字段列表);
方案三: 在創(chuàng)建表之后增加唯一健
更新唯一健 & 刪除唯一健:
錯誤的刪除方法:
alter table 表名 drop unique key;
alter table 表名 drop index 索引名字;
索引:系統(tǒng)根據(jù)某種算法腌紧,將已有的數(shù)據(jù)茸习,或未來可能新增的數(shù)據(jù),單獨獨立一個文件壁肋,文件能夠?qū)崿F(xiàn)快速的匹配數(shù)據(jù)号胚,并且能夠快速地找到對應(yīng)表中的記錄
索引的意義:
提升查詢數(shù)據(jù)的效率
約束數(shù)據(jù)的有效性籽慢、唯一性等
MySQL中提供了多種索引
主鍵索引:primary key
唯一索引:unique key
全文索引:fulltext index
普通索引:index
表關(guān)系:
一對一:一張表的一條記錄一定只能與另外一張表的一條記錄進(jìn)行對應(yīng),反之亦然
一對多:一張表中有一條記錄可以對應(yīng)另外一張表中的多條記錄猫胁,但是反過來箱亿,另外一張表的一條記錄只能對應(yīng)第一張表的一條記錄
多對多:一張A表中的一條記錄,能夠?qū)?yīng)B表中的多條記錄杜漠,同時B表中的一條記錄也能對應(yīng)A表中的多種記錄
范式:
Normal Format极景,是一種離散數(shù)學(xué)中的知識,是為了解決一種數(shù)據(jù)的存儲與優(yōu)化的問題驾茴,它的終極目標(biāo)是為了減少數(shù)據(jù)的冗余
范式是一種分層結(jié)構(gòu)的規(guī)范盼樟,分為六層:
1NF、2NF锈至、3NF晨缴、......6NF
1NF是最底層,要求最低
6NF是最高層峡捡,要求最嚴(yán)格
第一范式 (1NF) :要求字段的數(shù)據(jù)具有原子性
第二范式 (2NF) :要解決表的設(shè)計不允許出現(xiàn)部分依賴
第三范式 (3NF) :解決傳遞依賴的問題
隊列和棧有什么特點:
隊列是只允許在一端進(jìn)行插入操作击碗、而在另一端進(jìn)行刪除操作的線性表
棧是限定僅在表尾進(jìn)行插入和刪除操作的線性表
隊列:先進(jìn)先出
棧:先進(jìn)后出
隊列:基于地址指針進(jìn)行遍歷,而且可以從頭部或者尾部進(jìn)行遍歷们拙,但不能同時遍歷稍途,無需開辟空間,因為在遍歷的過程中不影響數(shù)據(jù)結(jié)構(gòu)砚婆,所以遍歷速度要快
棧:只能從頂部取數(shù)據(jù)械拍,也就是說最先進(jìn)入棧底的,需要遍歷整個棧才能取出來装盯,遍歷數(shù)據(jù)時需要微數(shù)據(jù)開辟臨時空間坷虑,保持?jǐn)?shù)據(jù)在遍歷前的一致性
進(jìn)程 線程 協(xié)程:
進(jìn)程:是系統(tǒng)中資源分配和運行調(diào)度的單位
線程:是進(jìn)程的?個實體, 也叫輕量級進(jìn)程,是CPU調(diào)度和分派的基本單位,它是比進(jìn)程更小的能獨立運行的基本單位.線程自己基本上不擁有系統(tǒng)資源,只擁有?點在運行中必不可少的資源。但是它可與同屬?個進(jìn)程的其他的線程共享進(jìn)程所擁有的全部資源.
協(xié)程:協(xié)程執(zhí)行過程中埂奈,在協(xié)程內(nèi)部可中斷迄损,然后轉(zhuǎn)而執(zhí)行別的協(xié)程,在適當(dāng)?shù)臅r候再返回來接著執(zhí)行账磺。協(xié)程之間不是調(diào)用者與被調(diào)用者的關(guān)系芹敌,而是彼此對稱、平等的垮抗,通過相互協(xié)作共同完成任務(wù)氏捞。
面向?qū)ο蟮姆庋b有什么特點:
就是把抽象的數(shù)據(jù)和對數(shù)據(jù)進(jìn)行的操作封裝在一起,將屬性和方法封裝到一個抽象的類中
數(shù)據(jù)被保存在內(nèi)部借宵,程序的其他部分只有通過被授權(quán)的操作(成員方法)才能對數(shù)據(jù)進(jìn)行操作幌衣。外界使用類創(chuàng)建對象矾削,然后讓對象調(diào)用方法
通過在實例上調(diào)用方法壤玫,我們就直接操作了對象內(nèi)部的數(shù)據(jù)豁护,但無需知道方法內(nèi)部的實現(xiàn)細(xì)節(jié)。對象方法的細(xì)節(jié)都被封裝在類的內(nèi)部
什么叫可迭代對象欲间?迭代器楚里?生成器是迭代器嗎?:
可迭代對象:
可迭代對象包含迭代器猎贴。
如果一個對象擁有__iter__方法班缎,其是可迭代對象
迭代器:
一個對象擁有next方法,就是迭代器
生成器:
生成器是特殊的迭代器
死鎖 互斥鎖:
死鎖:
1.關(guān)于死鎖她渴。 死鎖,就是當(dāng)多個進(jìn)程或者線程在執(zhí)行的過程中,因爭奪共享資源而造成的一種互相等待的現(xiàn)象,一旦產(chǎn)生了死鎖,不加人工處理,程序會一直等待下去,這也被稱為死鎖進(jìn)程达址。
互斥鎖:
只有當(dāng)一個進(jìn)程在進(jìn)行資源的時候,進(jìn)行上鎖趁耗,可以保護(hù)資源沉唠,只有當(dāng)他運行玩的時候,才會進(jìn)行解鎖苛败。對數(shù)據(jù)的保護(hù)