久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

第二天

 以怪力亂神 2018-08-29

列類型(字段類型)

整數(shù)類型

Tinyint

迷你整形,,系統(tǒng)采用一個(gè)字節(jié)來保存的整形:一個(gè)字節(jié) = 8位,,最大能表示的數(shù)值是0-255

Smallint

小整形,系統(tǒng)采用兩個(gè)字節(jié)來保存的整形:能表示0-65535之間

Mediumint

中整形,,采用三個(gè)字節(jié)來保存數(shù)據(jù),。

Int

整形(標(biāo)準(zhǔn)整形),采用四個(gè)字節(jié)來保存數(shù)據(jù),。

Bigint

大整形,,采用八個(gè)字節(jié)來保存數(shù)據(jù)。

 

1,、  創(chuàng)建數(shù)據(jù)表

2,、  插入合理數(shù)據(jù)

3  插入錯(cuò)誤數(shù)據(jù)(超出對應(yīng)的數(shù)據(jù)范圍)

4,、  錯(cuò)誤原因:并不是說tinyint沒有這么大的空間,,而是因?yàn)?/span>mysql默認(rèn)的為整形增加負(fù)數(shù)。

實(shí)際表示的區(qū)間為-128,127

 

 

實(shí)際應(yīng)用中,,應(yīng)該根據(jù)對應(yīng)的數(shù)據(jù)的范圍來選定對應(yīng)的整形類型:通常使用的比較多的TINYINTint,。

 

無符號標(biāo)識設(shè)定

 

無符號:表示存儲的數(shù)據(jù)在當(dāng)前字段中,沒有負(fù)數(shù)(只有正數(shù),,區(qū)間為0-255

基本語法:在類型之后加上一個(gè) unsigned

 

顯示長度

顯示長度:指數(shù)據(jù)(整型)在數(shù)據(jù)顯示的時(shí)候,,到底可以顯示多長位。

 

Tinyint(3) 表示最長可以顯示3位,unsigned說明只能是正數(shù),,0-255永遠(yuǎn)不會超過三個(gè)長度

Tinyint(4):表示最長可以顯示4位,-128~127

 

 

顯示長度只是代表了數(shù)據(jù)是否可以達(dá)到指定的長度,,但是不會自動滿足到指定長度:如果想要數(shù)據(jù)顯示的時(shí)候,,保持最高位(顯示長度),那么還需要給字段增加一個(gè)zerofill屬性才可以,。

 

Zerofill:從左側(cè)開始填充0(左側(cè)不會改變數(shù)值大?。载?fù)數(shù)的時(shí)候就不能使用zerofill,,一旦使用zerofill就相當(dāng)于確定該字段為unsigned

 

數(shù)據(jù)顯示的時(shí)候,,zerofill會在左側(cè)填充0到指定位:如果不足3位,那么填充到3位,,如果本身已經(jīng)夠了或者超出,,那么就不在填充。

 

 

顯示長度可以自己設(shè)定:超出長度(但是不超出范圍)不會影響,,只會對不夠長度的進(jìn)行補(bǔ)充(顯示長度)

小數(shù)類型

專門用來存儲小數(shù)的

 

Mysql中將小數(shù)類型又分為兩類:浮點(diǎn)型和定點(diǎn)型

 

浮點(diǎn)型

浮點(diǎn)型又稱之為精度類型:是一種有可能丟失精度的數(shù)據(jù)類型,,數(shù)據(jù)有可能不那么準(zhǔn)確(由其是在超出范圍的時(shí)候)

 

浮點(diǎn)型之所以能夠存儲較大的數(shù)值(不精確),原因就是利用存儲數(shù)據(jù)的位來存儲指數(shù)

 

整型:所有位都為1

1

1

1

1

1

1

1

1

計(jì)算結(jié)果:

 

浮點(diǎn)型:有部分用于存儲數(shù)據(jù),,有部分用于存指數(shù)

1

1

1

1

1

1

1

1

前三位轉(zhuǎn)換成十進(jìn)制之后用作10的指數(shù): 10^7 * 數(shù)據(jù)值

Float

Float又稱之為單精度類型:系統(tǒng)提供4個(gè)字節(jié)用來存儲數(shù)據(jù),,但是能表示的數(shù)據(jù)范圍比整型大的多,大概是10^38,;只能保證大概7個(gè)左右的精度(如果數(shù)據(jù)在7位數(shù)以內(nèi),,那么基本是準(zhǔn)確的,但是如果超過7位數(shù),,那么就是不準(zhǔn)確的)

 

基本語法

Float:表示不指定小數(shù)位的浮點(diǎn)數(shù)

Float(M,D):表示一共存儲M個(gè)有效數(shù)字,,其中小數(shù)部分占D

Float(10,2):整數(shù)部分為8位,小數(shù)部分為2

 

1,、  創(chuàng)建一個(gè)數(shù)據(jù)表保存浮點(diǎn)數(shù)據(jù)

2,、  存入數(shù)據(jù):合法數(shù)據(jù)

注意:如果數(shù)據(jù)精度丟失,那么浮點(diǎn)型是按照四舍五入的方式進(jìn)行計(jì)算

3,、  插入數(shù)據(jù),,超出大小

4  數(shù)據(jù)長度剛好滿足條件,,但是會超出精度

 

說明:用戶不能插入數(shù)據(jù)直接超過指定的整數(shù)部分長度,,但是如果是系統(tǒng)自動進(jìn)位導(dǎo)致,系統(tǒng)可以承擔(dān),。

5,、浮點(diǎn)數(shù)可以采用科學(xué)計(jì)數(shù)法來存儲數(shù)據(jù)

 

浮點(diǎn)數(shù)的應(yīng)用:通常是用來保存一些數(shù)量特別大,大到可以不用那么精確的數(shù)據(jù)。

 

Double

Double又稱之為雙精度:系統(tǒng)用8個(gè)字節(jié)來存儲數(shù)據(jù),,表示的范圍更大,,10^308次方,但是精度也只有15位左右,。

 

 

定點(diǎn)數(shù)

定點(diǎn)數(shù):能夠保證數(shù)據(jù)精確的小數(shù)(小數(shù)部分可能不精確,,超出長度會四舍五入),整數(shù)部分一定精確

Decimal

Decimal定點(diǎn)數(shù):系統(tǒng)自動根據(jù)存儲的數(shù)據(jù)來分配存儲空間,,每大概9個(gè)數(shù)就會分配四個(gè)字節(jié)來進(jìn)行存儲,,同時(shí)小數(shù)和整數(shù)部分是分開的。

 

Decimal(M,D)M表示總長度,,最大值不能超過65,,D代表小數(shù)部分長度,最長不能超過30,。

 

 

1,、  創(chuàng)建表:與浮點(diǎn)數(shù)對比

2  插入正常數(shù)據(jù)

3,、  插入最大數(shù)據(jù)

4,、  嘗試定點(diǎn)數(shù)進(jìn)行四舍五入

 

 

定點(diǎn)數(shù)的應(yīng)用:如果涉及到錢的時(shí)候有可能使用定點(diǎn)數(shù)

時(shí)間日期類型

Date

日期類型:系統(tǒng)使用三個(gè)字節(jié)來存儲數(shù)據(jù),對應(yīng)的格式為:YYYY-mm-dd,,能表示的范圍是從1000-01-01 9999-12-12,,初始值為0000-00-00

Time

時(shí)間類型:能夠表示某個(gè)指定的時(shí)間,但是系統(tǒng)同樣是提供3個(gè)字節(jié)來存儲,,對應(yīng)的格式為:HH:ii:ss,,但是mysql中的time類型能夠表示時(shí)間范圍要大的多,能表示從-838:59:59~838:59:59,,在mysql中具體的用處是用來描述時(shí)間段,。

Datetime

日期時(shí)間類型:就是將前面的datetime合并起來,表示的時(shí)間,,使用8個(gè)字節(jié)存儲數(shù)據(jù),,格式為YYYY-mm-dd HH:ii:ss,能表示的區(qū)間1000-01-01 00:00:00 9999-12-12 23:59:59,,其可以為0值:0000-00-00 00:00:00

Timestamp

時(shí)間戳類型:mysql中的時(shí)間戳只是表示從格林威治時(shí)間開始,,但是其格式依然是:YYYY-mm-dd HH:ii:ss

Year

年類型:占用一個(gè)字節(jié)來保存,能表示1900~2155年,,但是year有兩種數(shù)據(jù)插入方式:0~99和四位數(shù)的具體年

 

1,、  創(chuàng)建對應(yīng)的時(shí)間日期類型的數(shù)據(jù)表

2  插入數(shù)據(jù):正常數(shù)據(jù)

3,、  year的特殊性:可以采用兩位數(shù)的數(shù)據(jù)插入,,也可以采用四位數(shù)的年份插入

4,、  year進(jìn)行兩位數(shù)插入的時(shí)候,有一個(gè)區(qū)間劃分,,零界點(diǎn)為6970:當(dāng)輸入69以下,,那么系統(tǒng)時(shí)間為20+數(shù)字,如果是70以上,,那配系統(tǒng)時(shí)間為19+數(shù)字

5,、  timestamp當(dāng)對應(yīng)的數(shù)據(jù)被修改的時(shí)候,會自動更新(這個(gè)被修改的數(shù)據(jù)不是自己)

6,、  time類型特殊性:本質(zhì)是用來表示時(shí)間區(qū)間(當(dāng)前時(shí)間之后的多少個(gè)小時(shí)),能表示的范圍比較大

7,、  在進(jìn)行時(shí)間類型錄入的時(shí)候(time)還可以使用一個(gè)簡單的日期代替時(shí)間,,在時(shí)間格式之前加一個(gè)空格,然后指定一個(gè)數(shù)字(可以是負(fù)數(shù)):系統(tǒng)會自動將該數(shù)字轉(zhuǎn)換成天數(shù) * 24小時(shí),,再加上后面的時(shí)間,。

 

 

PHP中有著非常強(qiáng)大的時(shí)間日期轉(zhuǎn)換函數(shù):date將時(shí)間戳轉(zhuǎn)換成想要的格式,strtotime又可以將很多格式轉(zhuǎn)換成對應(yīng)的時(shí)間戳,。PHP通常不需要數(shù)據(jù)庫來幫助處理這么復(fù)雜的時(shí)間日期,,所以通常配合PHP的時(shí)候,時(shí)間的保存通常使用時(shí)間戳(真正),,從而用整型來保存,。字符串型

Mysql記錄長度

 

mysql中,有一項(xiàng)規(guī)定:mysql的記錄長度(record == row)總長度不能超過65535個(gè)字節(jié),。

 

Varchar能夠存儲的理論值為65535個(gè)字符:字符在不同的字符集下可能占用多個(gè)字節(jié),。

 

 

1  創(chuàng)建表:證明varcharmysql中能夠達(dá)到的理論值(utf8GBK

Varchar除了存儲的數(shù)據(jù)本身要占用空間:還需要額外的空間來保存記錄長度

2,、  計(jì)算在utf8GBK下對應(yīng)的varchar能夠存儲的長度

Utf8 最多只能存儲21844個(gè)字符

GBK最多只能存儲32766個(gè)字符

 

字符串型

 

Char

定長字符:指定長度之后,,系統(tǒng)一定會分配指定的空間用于存儲數(shù)據(jù)

基本語法:char(L)L代表字符數(shù)(中文與英文字母一樣),,L長度為0255

Varchar

變長字符:指定長度之后,,系統(tǒng)會根據(jù)實(shí)際存儲的數(shù)據(jù)來計(jì)算長度,分配合適的長度(數(shù)據(jù)沒有超出長度)

基本語法:Varchar(L),,L代表字符數(shù),,L的長度理論值位065535

 

因?yàn)?/span>varchar要記錄數(shù)據(jù)長度(系統(tǒng)根據(jù)數(shù)據(jù)長度自動分配空間),所以每個(gè)varchar數(shù)據(jù)產(chǎn)生后,,系統(tǒng)都會在數(shù)據(jù)后面增加1-2個(gè)字節(jié)的額外開銷:是用來保存數(shù)據(jù)所占用的空間長度

如果數(shù)據(jù)本身小于127個(gè)字符:額外開銷一個(gè)字節(jié),;如果大于127個(gè),就開銷兩個(gè)字節(jié)

 

Charvarchar數(shù)據(jù)存儲對比(utf8,,一個(gè)字符都會占用3個(gè)字節(jié))

存儲數(shù)據(jù)

Char(2)

Varchar(2)

Char所占字節(jié)

Varchar所占字節(jié)

A

A

A

2 * 3 = 6

1 * 3 + 1 = 4

AB

AB

AB

2 * 3 = 6

2 * 3 + 1 = 7

 

Charvarchar的區(qū)別

1,、  char一定會使用指定的空間,varchar是根據(jù)數(shù)據(jù)來定空間

2  char的數(shù)據(jù)查詢效率比varchar高:varchar是需要通過后面的記錄數(shù)來計(jì)算

 

 

如果確定數(shù)據(jù)一定是占指定長度,,那么使用char類型,;

如果不確定數(shù)據(jù)到底有多少,那么使用varchar類型,;

如果數(shù)據(jù)長度超過255個(gè)字符,,不論是否固定長度,都會使用text,,不再使用charvarchar

 

Text

文本類型:本質(zhì)上mysql提供了兩種文本類型

Text:存儲普通的字符文本

Blob:存儲二進(jìn)制文本(圖片,,文件),一般都不會使用blob來存儲文件本身,,通常是使用一個(gè)鏈接來指向?qū)?yīng)的文件本身,。

 

Text:系統(tǒng)中提供的四種text

Tinytext:系統(tǒng)使用一個(gè)字節(jié)來保存,實(shí)際能夠存儲的數(shù)據(jù)為:2 ^ 8 + 1

Text:使用兩個(gè)字節(jié)保存,,實(shí)際存儲為:2 ^ 16 + 2

Mediumtext:使用三個(gè)字節(jié)保存,,實(shí)際存儲為:2 ^ 24 + 3

Longtext:使用四個(gè)字節(jié)保存,實(shí)際存儲為:2 ^ 32 + 4

 

注意:

1,、  在選擇對應(yīng)的存儲文本的時(shí)候,,不用刻意去選擇text類型,系統(tǒng)會自動根據(jù)存儲的數(shù)據(jù)長度來選擇合適的文本類型,。

2,、  在選擇字符存儲的時(shí)候,如果數(shù)據(jù)超過255個(gè)字符,,那么一定選擇text存儲

 

Enum

枚舉類型:在數(shù)據(jù)插入之前,,先設(shè)定幾個(gè)項(xiàng),這幾個(gè)項(xiàng)就是可能最終出現(xiàn)的數(shù)據(jù)結(jié)果,。

 

如果確定某個(gè)字段的數(shù)據(jù)只有那么幾個(gè)值:如性別,,男、女,、保密,,系統(tǒng)就可以在設(shè)定字段的時(shí)候規(guī)定當(dāng)前字段只能存放固定的幾個(gè)值:使用枚舉

 

基本語法:enum(數(shù)據(jù)值1,數(shù)據(jù)值2…)

系統(tǒng)提供了12個(gè)字節(jié)來存儲枚舉數(shù)據(jù):通過計(jì)算enum列舉的具體值來選擇實(shí)際的存儲空間:如果數(shù)據(jù)值列表在255個(gè)以內(nèi),那么一個(gè)字節(jié)就夠,,如果超過255但是小于65535,,那么系統(tǒng)采用兩個(gè)字節(jié)保存。

 

1,、  創(chuàng)建表

2,、  插入數(shù)據(jù):合法數(shù)據(jù),字段對應(yīng)的值必須是設(shè)定表的時(shí)候所確定的值

3,、  錯(cuò)誤數(shù)據(jù):enum有規(guī)范數(shù)據(jù)的功能,,能夠保證插入的數(shù)據(jù)必須是設(shè)定的范圍,,其他類型都不可以

4  枚舉enum的存儲原理:實(shí)際上字段上所存儲的值并不是真正的字符串,,而是字符串對應(yīng)的下標(biāo):當(dāng)系統(tǒng)設(shè)定枚舉類型的時(shí)候,,會給枚舉中每個(gè)元素定義一個(gè)下標(biāo),這個(gè)下標(biāo)規(guī)則從1開始

Enum(1=>‘’,2=>’’,3=>’保密’)

 

特性:在mysql中系統(tǒng)是自動進(jìn)行類型轉(zhuǎn)換的:如果數(shù)據(jù)碰到“+,、-,、*/”系統(tǒng)就會自動將數(shù)據(jù)轉(zhuǎn)換成數(shù)值:而普通字符串轉(zhuǎn)換成數(shù)值為0

Select 字段名 + 0 from 表名;

5,、  既然實(shí)際enum字段存儲的結(jié)果是數(shù)值:那么在進(jìn)行數(shù)據(jù)插入的時(shí)候,,就可以使用對應(yīng)的數(shù)值來進(jìn)行。

 

 

枚舉的意義:

1,、  規(guī)范數(shù)據(jù)本身,,限定只能插入規(guī)定的數(shù)據(jù)項(xiàng)

2  節(jié)省存儲空間

Set

集合:是一種將多個(gè)數(shù)據(jù)選項(xiàng)可以同時(shí)保存的數(shù)據(jù)類型,,本質(zhì)是將指定的項(xiàng)按照對應(yīng)的二進(jìn)制位來進(jìn)行控制:1表示該選項(xiàng)被選中,0表示該選項(xiàng)沒有被選中,。

 

基本語法:set(‘1’,’2’,’3’…)

系統(tǒng)為set提供了多個(gè)字節(jié)進(jìn)行保存,,但是系統(tǒng)會自動計(jì)算來選擇具體的存儲單元

1個(gè)字節(jié):set只能有8個(gè)選項(xiàng)

2個(gè)字節(jié):set只能有16個(gè)選項(xiàng)

3個(gè)字節(jié):set只能表示24個(gè)選項(xiàng)

8個(gè)字節(jié):set可以表示64個(gè)選項(xiàng)

 

 

Setenum一樣,最終存儲到數(shù)據(jù)字段中的依然是數(shù)字而不是真實(shí)的字符串

 

1,、  創(chuàng)建表

2,、  插入數(shù)據(jù):可以插入多個(gè)數(shù)據(jù),就是在數(shù)據(jù)插入的字符串中,,使用對應(yīng)的逗號“,”將選項(xiàng)進(jìn)行隔開

3,、  數(shù)據(jù)選項(xiàng)所在的數(shù)據(jù)與數(shù)據(jù)插入的順序無關(guān):最終都會變成選項(xiàng)對應(yīng)的順序

4  分析數(shù)據(jù)存儲的方式

4.1   系統(tǒng)將對應(yīng)的數(shù)據(jù)選項(xiàng)(設(shè)計(jì))按照順序進(jìn)行編排:從第一個(gè)開始進(jìn)行占位,,每一個(gè)都對應(yīng)一個(gè)二進(jìn)制位,。

4.2   數(shù)據(jù)在存儲的時(shí)候,如果被選中,,那么對應(yīng)的位的值就為1,,否則為0

4.3   系統(tǒng)在進(jìn)行存儲的時(shí)候會自動將得到的最終的二進(jìn)制顛倒過來,然后再進(jìn)行轉(zhuǎn)換成十進(jìn)制存儲

5,、  查看數(shù)據(jù):按照自動轉(zhuǎn)換成數(shù)值來查看

6,、  既然是數(shù)值,那么就可以插入數(shù)值來代替實(shí)際插入數(shù)據(jù)

 

注意:數(shù)字插入的前提是對應(yīng)的二進(jìn)制位上都有對應(yīng)的數(shù)據(jù)項(xiàng)

 

Set集合的意義:

1,、  規(guī)范數(shù)據(jù)

2,、  節(jié)省存儲空間

 

Enum:單選框

Set:復(fù)選框

列屬性

 

列屬性又稱之為字段屬性,在mysql中一共有6個(gè)屬性:null,,默認(rèn)值,,列描述,,主鍵,唯一鍵和自動增長

Null屬性

NULL屬性:代表字段為空

 

如果對應(yīng)的值為YES表示該字段可以為NULL

 

注意:

1,、  在設(shè)計(jì)表的時(shí)候,,盡量不要讓數(shù)據(jù)為空

2,、  Mysql的記錄長度為65535個(gè)字節(jié),,如果一個(gè)表中有字段允許為NULL,,那么系統(tǒng)就會設(shè)計(jì)保留一個(gè)字節(jié)來存儲NULL,最終有效存儲長度為65534個(gè)字節(jié),。

 

默認(rèn)值

Default:默認(rèn)值,,當(dāng)字段被設(shè)計(jì)的時(shí)候,如果允許默認(rèn)條件下,,用戶不進(jìn)行數(shù)據(jù)的插入,,那么就可以使用事先準(zhǔn)備好的數(shù)據(jù)來填充:通常填充的是NULL

 

測試:不給當(dāng)前字段提供數(shù)據(jù)值

 

Default關(guān)鍵字的另外一層使用:顯示的告知字段使用默認(rèn)值:在進(jìn)行數(shù)據(jù)插入的時(shí)候,對字段值直接使用default

 

列描述

列描述:comment,,是專門用于給開發(fā)人員進(jìn)行維護(hù)的一個(gè)注釋說明

 

基本語法:comment ‘字段描述’;

 

查看Comment:必須通過查看表創(chuàng)建語句

主鍵

顧名思義:主要的鍵,,primary key,在一張表中,,有且只有一個(gè)字段,,里面的值具有唯一性

創(chuàng)建主鍵

隨表創(chuàng)建

系統(tǒng)提供了兩種增加主鍵的方式

1  方案1:直接在需要當(dāng)做主鍵的字段之后,,增加primary key屬性來確定主鍵

2,、  方案2:在所有字段之后增加primary key選項(xiàng):primary key(字段信息)

表后增加

基本語法:alter table 表名 add primary key(字段);

查看主鍵

方案1:查看表結(jié)構(gòu)

 

方案2:查看表的創(chuàng)建語句

 

刪除主鍵

基本語法:alter table 表名 drop primary key;

復(fù)合主鍵

 

案例:有一張學(xué)生選修課表:一個(gè)學(xué)生可以選修多個(gè)選修課,一個(gè)選修課也可以由多個(gè)學(xué)生來選:但是一個(gè)學(xué)生在一個(gè)選修課中只有一個(gè)成績,。

 

主鍵約束

主鍵一旦增加,,那么對對應(yīng)的字段有數(shù)據(jù)要求

 

1  當(dāng)前字段對應(yīng)的數(shù)據(jù)不能為空,;

2,、  當(dāng)前字段對應(yīng)的數(shù)據(jù)不能有任何重復(fù)

 

 

主鍵分類

主鍵分類采用的是主鍵所對應(yīng)的字段的業(yè)務(wù)意義分類

 

業(yè)務(wù)主鍵:主鍵所在的字段,具有業(yè)務(wù)意義(學(xué)生ID,,課程ID

邏輯主鍵:自然增長的整型(應(yīng)用廣泛)

自動增長

自動增長:auto_increment,,當(dāng)給定某個(gè)字段該屬性之后,該列的數(shù)據(jù)在沒有提供確定數(shù)據(jù)的時(shí)候,,系統(tǒng)會根據(jù)之前已經(jīng)存在的數(shù)據(jù)進(jìn)行自動增加后,,填充數(shù)據(jù)。

 

通常自動增長用于邏輯主鍵,。

原理

自動增長的原理:

 

1,、  在系統(tǒng)中有維護(hù)一組數(shù)據(jù),用來保存當(dāng)前使用了自動增長屬性的字段,,記住當(dāng)前對應(yīng)的數(shù)據(jù)值,,再給定一個(gè)指定的步長

2  當(dāng)用戶進(jìn)行數(shù)據(jù)插入的時(shí)候,,如果沒有給定值,,系統(tǒng)在原始值上再加上步長變成新的數(shù)據(jù)

3  自動增長的觸發(fā):給定屬性的字段沒有提供值

4  自動增長只適用于數(shù)值

 

使用自動增長

基本語法:在字段之后增加一個(gè)屬性auto_increment

 

插入數(shù)據(jù):觸發(fā)自動增長,,不能給定具體值

修改自動增長

1,、  查看自增長:自增長一旦觸發(fā)使用之后,會自動的在表選項(xiàng)中增加一個(gè)選項(xiàng)(一張表最多只能擁有一個(gè)自增長)

2,、  表選項(xiàng)可以通過修改表結(jié)構(gòu)來實(shí)現(xiàn)

Alter table 表名 auto_increment = ;

 

刪除自動增長

刪除自增長:就是在字段屬性之后不再保留auto_increment,,當(dāng)用戶修改自增長所在字段時(shí),如果沒有看到auto_increment屬性,,系統(tǒng)會自動清除該自增長

 

初始設(shè)置

在系統(tǒng)中,,有一組變量用來維護(hù)自增長的初始值和步長

Show variables like ‘a(chǎn)uto_increment%’;

細(xì)節(jié)問題

 

1  一張表只有一個(gè)自增長:自增長會上升到表選項(xiàng)中

2,、  如果數(shù)據(jù)插入中沒有觸發(fā)自增長(給定了數(shù)據(jù)),,那么自增長不會表現(xiàn)

3  自增長修改的時(shí)候,,值可以較大,,但是不能比當(dāng)前已有的自增長字段的值小

唯一鍵

 

唯一鍵:unique key,用來保證對應(yīng)的字段中的數(shù)據(jù)唯一的,。

 

主鍵也可以用來保證字段數(shù)據(jù)唯一性,,但是一張表只有一個(gè)主鍵。

1,、  唯一鍵在一張表中可以有多個(gè),。

2  唯一鍵允許字段數(shù)據(jù)為NULL,,NULL可以有多個(gè)(NULL不參與比較)

創(chuàng)建唯一鍵

創(chuàng)建唯一鍵與創(chuàng)建主鍵非常類似

 

1,、  直接在表字段之后增加唯一鍵標(biāo)識符:unique[ key]

2  在所有的字段之后使用unique key(字段列表);

3,、  在創(chuàng)建完表之后也可以增加唯一鍵
alter table
表名 add unique key(字段列表);

 

查看唯一鍵

唯一鍵是屬性,,可以通過查看表結(jié)構(gòu)來實(shí)現(xiàn)

 

唯一鍵效果:在不為空的情況下,不允許重復(fù)

 

在查看表創(chuàng)建語句的時(shí)候,,會看到與主鍵不同的一點(diǎn):多出一個(gè)“名字”

 

刪除唯一鍵

一個(gè)表中允許存在多個(gè)唯一鍵:假設(shè)命令為主鍵一樣:alter table 表名 drop unique key;//錯(cuò)誤的

 

Index關(guān)鍵字:索引,,唯一鍵是索引一種(提升查詢效率)

 

刪除的基本語法:alter table 表名 drop index 唯一鍵名字;

 

修改唯一鍵:先刪除后增加

 

復(fù)合唯一鍵

唯一鍵與主鍵一樣可以使用多個(gè)字段來共同保證唯一性;

 

一般主鍵都是單一字段(邏輯主鍵),,而其他需要唯一性的內(nèi)容都是由唯一鍵來處理,。

表關(guān)系

 

表關(guān)系:表與表之間(實(shí)體)有什么樣的關(guān)系,每種關(guān)系應(yīng)該如何設(shè)計(jì)表結(jié)構(gòu),。

一對一

一對一:一張表中的一條記錄與另外一張表中最多有一條明確的關(guān)系:通常,,此設(shè)計(jì)方案保證兩張表中使用同樣的主鍵即可

 

學(xué)生表

學(xué)生IDPRI

姓名

年齡

性別

籍貫

婚否

住址

 

 

 

 

 

 

 

 

表的使用過程中:常用的信息會經(jīng)常去查詢,,而不常用的信息會偶爾才會用到,。

 

解決方案:將兩張表拆分,常見的放一張表,不常見的放一張表

 

常用表

學(xué)生IDPRI

姓名

年齡

性別

 

 

 

 

 

不常用表

學(xué)生IDPRI

籍貫

婚否

住址

 

 

 

 

 

一對多

一對多,,通常也叫作多對一的關(guān)系,。通常一對多的關(guān)系設(shè)計(jì)的方案,在“多”關(guān)系的表中去維護(hù)一個(gè)字段,,這個(gè)字段是“一”關(guān)系的主鍵,。

 

母親表

母親ID

姓名

年齡

身高

M1

 

 

 

M2

 

 

 

 

孩子表

孩子ID

姓名

年齡

身高

 

母親ID

K1

 

 

 

M1

K2

 

 

 

M1

 

多對多

 

多對多:一張表中的一條記錄在另外一張表中可以匹配到多條記錄,反過來也一樣,。

 

多對多的關(guān)系如果按照多對一的關(guān)系維護(hù):就會出現(xiàn)一個(gè)字段中有多個(gè)其他表的主鍵,,在訪問的時(shí)候就會帶來不便。

 

既然通過兩張表自己增加字段解決不了問題,,那么就通過第三張表來解決,。

 

 

師生關(guān)系

1  一個(gè)老師教過多個(gè)班級的學(xué)生,;

2,、  一個(gè)學(xué)生聽過多個(gè)老師講的課;

 

首先得有兩個(gè)實(shí)體:老師表和學(xué)生表

 

從中間設(shè)計(jì)一張表:維護(hù)兩張表對應(yīng)的聯(lián)系:每一種聯(lián)系都包含

 

多對多解決方案,;增加一個(gè)中間表,,讓中間表與對應(yīng)的其他表形成兩個(gè)多對一的關(guān)系:多對一的解決方案是在“多”表中增加“一”表對應(yīng)的主鍵字段。

 

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多