筆記9-數(shù)據(jù)類型:表定義語(yǔ)句:視圖_第1頁(yè)
筆記9-數(shù)據(jù)類型:表定義語(yǔ)句:視圖_第2頁(yè)
筆記9-數(shù)據(jù)類型:表定義語(yǔ)句:視圖_第3頁(yè)
筆記9-數(shù)據(jù)類型:表定義語(yǔ)句:視圖_第4頁(yè)
筆記9-數(shù)據(jù)類型:表定義語(yǔ)句:視圖_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、昨日回顧2數(shù)據(jù)類型4概覽4整數(shù)類型4范圍5通用設(shè)定形式5小數(shù)類型6時(shí)間日期類型6字符串類型6最基本最重要的2個(gè):62個(gè)二進(jìn)制文本:62個(gè)大文本類型:62個(gè)有關(guān)“選項(xiàng)”的文本存儲(chǔ)形式:7表定義語(yǔ)句8創(chuàng)建表:8基本形式8字段屬性設(shè)置8索引設(shè)置9約束設(shè)置9表選項(xiàng)10修改表:11一般概述11修改表的基本形式:12刪除表:12表的其他操作:12視圖12什么是視圖:13視圖創(chuàng)建形式:13視圖的使用13修改視圖:13刪除視圖:14數(shù)據(jù)庫(kù)(數(shù)據(jù)表)的設(shè)計(jì)思想介紹14數(shù)據(jù)庫(kù)設(shè)計(jì)3范式(3NF):14第一范式(),原子性14第二范式()唯一性15第三范式(3NF):獨(dú)立性,消除傳遞依賴17最后的總結(jié)19昨日回顧數(shù)

2、據(jù)類型概覽整數(shù)類型分為:tinyint(1字節(jié)), smallint(2字節(jié)), mediumint(3字節(jié)),int(4字節(jié)), bigint(8字節(jié))1字節(jié)=8位(8個(gè)燈泡)一個(gè)燈泡只能表達(dá)2個(gè)意思(2個(gè)數(shù)字)2個(gè)燈泡可以表達(dá)4個(gè)意思3個(gè)燈泡可以表達(dá)8個(gè)意思。8個(gè)燈泡(1個(gè)字節(jié))可以表達(dá)256個(gè)數(shù)字。默認(rèn)情況下,這些整數(shù)類型都是可正可負(fù)的,那么:tinyInt就只能存儲(chǔ): -128-127這些數(shù)范圍通用設(shè)定形式定義一個(gè)字段的時(shí)候的類型的寫(xiě)法。比如:create table tab1 (f1 數(shù)據(jù)類型 );數(shù)據(jù)類型: 類型名(長(zhǎng)度n) unsigned zerofill長(zhǎng)度n: 表示的意思是

3、該數(shù)字的“顯示形式上的長(zhǎng)度”,unsigned:設(shè)定為“無(wú)符號(hào)”數(shù),則此時(shí)不能存儲(chǔ)負(fù)數(shù),正數(shù)幾乎加倍。zerofill:填充0,是指如果一個(gè)數(shù)字的長(zhǎng)度不夠指定長(zhǎng)度的時(shí)候,可以在左邊填充0以補(bǔ)到該長(zhǎng)度。注意: 如果設(shè)置了zerofill,則自動(dòng)也就表示同時(shí)具備了unsigned修飾的含義小數(shù)類型可以分為:?jiǎn)尉雀↑c(diǎn)型: float,非精確數(shù),通常不設(shè)定長(zhǎng)度雙精度浮點(diǎn):double,非精確數(shù),通常不設(shè)定長(zhǎng)度定點(diǎn)型:decimal,精確數(shù),通常,定點(diǎn)型需要設(shè)定長(zhǎng)度,形式為:decimal(總長(zhǎng), 小數(shù)位數(shù))時(shí)間日期類型有如下:date, time, datetime, year, timestamp

4、注意:寫(xiě)入數(shù)據(jù)庫(kù)時(shí),直接的時(shí)間日期數(shù)據(jù),應(yīng)該用單引號(hào)引起了。year類型可以是4位整數(shù)或4位純數(shù)字字符串,也可以是2位整數(shù)或2位純數(shù)字字符串timestamp表示的含義是“時(shí)間戳”,其實(shí)就是指“當(dāng)前時(shí)刻”,本質(zhì)上是一個(gè)數(shù)字,代表從1970年1月1日0點(diǎn)0分0秒到某個(gè)時(shí)間之間的秒數(shù)數(shù)值。該類型的字段值無(wú)需賦值,而是會(huì)自動(dòng)取得當(dāng)前時(shí)間值。字符串類型最基本最重要的2個(gè):varchar類型:可變長(zhǎng)度字符串類型。最多能存儲(chǔ)65532個(gè)字節(jié)的字符串也還要考慮字符編碼。設(shè)定的長(zhǎng)度只是最長(zhǎng)長(zhǎng)度,但可以不存滿,則實(shí)際長(zhǎng)度以數(shù)據(jù)長(zhǎng)度為準(zhǔn)。char類型:定長(zhǎng)字符串類型。最多能存儲(chǔ)256個(gè)字符。如果存儲(chǔ)的數(shù)據(jù)不足設(shè)定

5、的長(zhǎng)度,則會(huì)自動(dòng)補(bǔ)空格填滿。設(shè)定時(shí)都需要給定長(zhǎng)度,比如:varchar(20), char(6);mysql,一行的所有內(nèi)容的總的存儲(chǔ)長(zhǎng)度也有個(gè)限制,約65535個(gè)。2個(gè)二進(jìn)制文本:binary:類似char,只是里面不存“文本”,而是存“文本的二進(jìn)制數(shù)據(jù)”varbinary: ,類似varchar,同樣,不存“文本”,而是存“文本的二進(jìn)制數(shù)據(jù)”2個(gè)大文本類型:text:可以存儲(chǔ)“超大文本”,且其實(shí)際的長(zhǎng)度并不占用一行的長(zhǎng)度。相對(duì)char和varchar,效率低。blob: 可以存儲(chǔ)“超大二進(jìn)制文本”,通常用于存儲(chǔ)圖片這種“二進(jìn)制數(shù)據(jù)”2個(gè)有關(guān)“選項(xiàng)”的文本存儲(chǔ)形式:enum:專門(mén)用于方便存儲(chǔ)

6、類似表單中的“單選項(xiàng)”的值。形式:enum(選項(xiàng)1,選項(xiàng)2,選項(xiàng)3,.)這些選項(xiàng)的值雖然是字符串,但其數(shù)據(jù)庫(kù)內(nèi)部存儲(chǔ)其實(shí)是數(shù)字(效率高),他們的數(shù)字值是:1, 2, 3,4, 5,。最多6萬(wàn)多個(gè)。結(jié)果:set:專門(mén)用于方便存儲(chǔ)類似表單中的“多選項(xiàng)”的值。形式:set (選項(xiàng)1,選項(xiàng)2,選項(xiàng)3,.)這些選項(xiàng)的值雖然是字符串,但其數(shù)據(jù)庫(kù)內(nèi)部存儲(chǔ)其實(shí)是數(shù)字(效率高),他們對(duì)應(yīng)的數(shù)字值是:1, 2,4, 8, 16,。最多6萬(wàn)多個(gè)在看不存在的數(shù)據(jù)的情形:可見(jiàn),enum,set類型的字段,限制的“字符串”數(shù)據(jù)值。表定義語(yǔ)句創(chuàng)建表:基本形式create table if not exists 表名(字段列

7、表, 約束或索引列表) 表選項(xiàng)列表;說(shuō)明:列表都是表示“多個(gè)”,相互之間用逗號(hào)分開(kāi)。字段基本形式: 字段名 類型 字段修飾屬性;字段屬性設(shè)置not null: 不為空,表示該字段不能放“null”這個(gè)值。不寫(xiě),則默認(rèn)是可以為空auto_increment: 設(shè)定int類型字段的值可以“自增長(zhǎng)”,即其值無(wú)需“寫(xiě)入”,而會(huì)自動(dòng)獲得并增加此屬性必須隨同 primary key 或 unique key 一起使用。primary key: 設(shè)定為主鍵。是唯一鍵“加強(qiáng)”:也不能重復(fù)并且不能使用null,并且可以作為確定任意一行數(shù)據(jù)的“關(guān)鍵值”,最常見(jiàn)的類似:where id= 8; 或 where us

8、er_name = zhangsan;通常,每個(gè)表都應(yīng)該有個(gè)主鍵,而且大多數(shù)表,喜歡使用一個(gè)id并自增長(zhǎng)類型作為主鍵。但:一個(gè)表只能設(shè)定一個(gè)主鍵。unique key : 設(shè)定為唯一鍵:表示該字段的所有行的值不可以重復(fù)(唯一性)。default 默認(rèn)值: 設(shè)定一個(gè)字段在沒(méi)有插入數(shù)據(jù)的時(shí)候自動(dòng)使用的值。comment 字段注釋: 舉例:索引設(shè)置什么是索引:索引是一個(gè)“內(nèi)置表”,該表的數(shù)據(jù)是對(duì)某個(gè)真實(shí)表的某個(gè)(些)字段的數(shù)據(jù)做了“排序”之后的存儲(chǔ)形式。其作用是:極大提高表查找數(shù)據(jù)的速度!其效率(速度)可以匹敵二分查找。注意:索引在提供查找速度的同時(shí),降低增刪改的速度。對(duì)創(chuàng)建(設(shè)計(jì))表來(lái)說(shuō),建立索引

9、是非常簡(jiǎn)單的事,形式如下:索引類型 (字段名1,字段名2, . )/可以使用多個(gè)字段建立索引,但通常是一個(gè)有以下幾種索引:普通索引:key(字段名1,字段名2, . ):它只具有索引的基本功能提速唯一索引:unique key (字段名1,字段名2, . )主鍵索引:primary key (字段名1,字段名2, . )全文索引:fulltext (字段名1,字段名2, . )舉例:約束設(shè)置什么叫約束:約束就是一種限定數(shù)據(jù)以符合某種要求的形式(機(jī)制)約束主要有:主鍵約束:primary key (字段名1,字段名2, . )其實(shí)就是主鍵索引,也是主鍵屬性。即primary key有3個(gè)角度的理

10、解(說(shuō)法):字段屬性設(shè)置為主鍵,或建立的主鍵索引,或設(shè)定一個(gè)主鍵約束,但他們的本質(zhì)是一樣唯一約束:unique key (字段名1,字段名2, . ),其實(shí)也是“3體合一”(類似primary key)外鍵約束:什么叫外鍵:就是設(shè)定一個(gè)表中的某個(gè)字段的值,必須“來(lái)源于”另一個(gè)表的某個(gè)主鍵字段的值。語(yǔ)法形式:foreign key (字段名1,字段名2, . ) references 表名2(字段名1,字段名2, . )說(shuō)明:對(duì)某個(gè)(些)字段設(shè)定外鍵,則其相對(duì)應(yīng)的其他表的對(duì)應(yīng)字段需要設(shè)置為主鍵。非空約束:就是要求該字段的值不能為空,其只能在字段上當(dāng)作字段屬性來(lái)設(shè)定。默認(rèn)約束:就是要求該字段的值在

11、“空”的時(shí)候會(huì)自動(dòng)填充該設(shè)定的默認(rèn)值,也只能字段上設(shè)定。檢查約束:就是使用一個(gè)表達(dá)式(邏輯判斷)來(lái)決定數(shù)據(jù)是否有效,比如年齡字段,可以使用tinyint,則可能會(huì)超過(guò)127就不合適了。tinynit unsigned,則0-255是可以的。但:如果考慮現(xiàn)實(shí)情況,假設(shè)某保險(xiǎn)公司只作150歲以下的人的保險(xiǎn)。則我們就可以繼續(xù)對(duì)該字段可能存儲(chǔ)的數(shù)據(jù)進(jìn)行“約束”。比如類似:if(age > 150)return false可惜的是:不支持檢查約束的語(yǔ)法和功能。表選項(xiàng)表選項(xiàng)就是對(duì)一個(gè)表的有關(guān)屬性的設(shè)定,通常都不需要。如果不設(shè)定,則有其默認(rèn)值。有以下幾個(gè)可用:comment = 表的注釋;charse

12、t = 字符編碼名稱;/跟數(shù)據(jù)的字符編碼設(shè)定一個(gè)意思。字符編碼設(shè)定的范圍及繼承關(guān)系:系統(tǒng)級(jí)設(shè)定:安裝時(shí)確定了。庫(kù)級(jí)設(shè)定:建庫(kù)時(shí)設(shè)定;表級(jí)設(shè)定:就是這里的charset = 字符編碼名稱字段級(jí)設(shè)定:作為字段屬性出現(xiàn)。他們都只對(duì)“字符類型”的字段有效。每一級(jí)如果沒(méi)有設(shè)定,就會(huì)“繼承使用”其上一級(jí)的設(shè)定。auto_increment = 起始整數(shù);/自增長(zhǎng)類型值的初值,默認(rèn)是1engine = “表的存儲(chǔ)引擎名”;/存儲(chǔ)引擎就是將數(shù)據(jù)存入硬盤(pán)(或其他媒介)的方式方法。通常就幾個(gè)可用,默認(rèn)是InnoDB存儲(chǔ)引擎決定一個(gè)數(shù)據(jù)表的各方面的信息:功能和性能??偟氖纠盒薷谋恚阂话愀攀鐾ǔ#瑒?chuàng)建一個(gè)表,能搞定

13、(做到)的事情,修改表也能做到。大體來(lái)說(shuō),就可以做到:增刪改字段:增:alter table 表名 add column 字段名 字段類型 字段屬性;刪: alter table 表名 drop 字段名改:alter table 表名 change 原字段名 新字段名 新字段類型 新字段屬性;增刪索引:增刪約束:修改表選項(xiàng):修改表的基本形式:alter table 表名 修改語(yǔ)句1,修改語(yǔ)句2, . ;刪除表:drop table if exists 表名;表的其他操作:顯示所有表show tables:顯示表結(jié)構(gòu)desc 表名;顯示表的創(chuàng)建語(yǔ)句: show create table 表名;。

14、從已有表復(fù)制表結(jié)構(gòu):create table if not exists 新表名 like 原表名;從已有表復(fù)制表結(jié)構(gòu):create table if not exists 新表名 select * from 原表名 where 1<>1;(不推薦)視圖單詞:view什么是視圖:視圖可以看作是一個(gè)“臨時(shí)存儲(chǔ)的數(shù)據(jù)所構(gòu)成的表”(非真實(shí)表),其實(shí)本質(zhì)上只是一個(gè)select語(yǔ)句。只是將該select語(yǔ)句(通常比較復(fù)雜)進(jìn)行一個(gè)“包裝”,并設(shè)定了一個(gè)名字,其后就可以通過(guò)該名字并把該名字當(dāng)作一個(gè)表來(lái)使用。如果一個(gè)語(yǔ)句比較復(fù)雜,又在多個(gè)頁(yè)面需要使用它,則可以將它做成一個(gè)視圖,方便使用。又如果,

15、某個(gè)數(shù)據(jù)表中的某些字段不想給別人看(不同公司之間的數(shù)據(jù)業(yè)務(wù)交換的時(shí)候),但另一個(gè)又需要給人看,此時(shí)也可以使用視圖。視圖創(chuàng)建形式:create view 視圖名 (列名1,列名2,.) as 一條復(fù)雜select語(yǔ)句;可以將select語(yǔ)句所取得的列重新命名,但也可以不重新命名,則使用select語(yǔ)句中的給定列名。視圖的使用其實(shí)就是當(dāng)作一個(gè)查詢表來(lái)用(通常只用于select)select * from 視圖名 where 條件 order by .。修改視圖: alter view 視圖名 (列名1,列名2,.) as select語(yǔ)句;刪除視圖: drop view if exists 視圖名

16、;數(shù)據(jù)庫(kù)(數(shù)據(jù)表)的設(shè)計(jì)思想介紹設(shè)計(jì)數(shù)據(jù)庫(kù),其實(shí)就是設(shè)計(jì)表(多個(gè)表)數(shù)據(jù)庫(kù)設(shè)計(jì)3范式(3NF):范式,就是規(guī)范,就是指設(shè)計(jì)數(shù)據(jù)庫(kù)需要(應(yīng)該)遵循的原則。每個(gè)范式,都是用來(lái)規(guī)定某種結(jié)構(gòu)或數(shù)據(jù)要求后一范式都是在前一范式已經(jīng)滿足的情況用來(lái)“加強(qiáng)要求”第一范式(),原子性原子性:存儲(chǔ)的數(shù)據(jù)應(yīng)該具有“不可再分性”。不良做法示例:可見(jiàn),其違反了原則性范式:學(xué)生字段的數(shù)據(jù)存儲(chǔ)了多個(gè)可分的數(shù)據(jù)。修改后為:第二范式()唯一性需要實(shí)現(xiàn)每一行數(shù)據(jù)具有唯一可區(qū)分的特性,并不能有部分依賴關(guān)系。通常,給一個(gè)表加主鍵(也是推薦做法),就可以做到“唯一可區(qū)分”。但主鍵有這樣情況:設(shè)定一個(gè)字段為主鍵:此時(shí),表示該一個(gè)字段的值就

17、可以明確確定一行數(shù)據(jù)。設(shè)定多個(gè)字段為主鍵:表示只有這多個(gè)字段的值都確定后才能確定一行數(shù)據(jù)。此時(shí)也稱為“聯(lián)合主鍵”什么叫依賴:如果確定一個(gè)表中的某個(gè)數(shù)據(jù)(A),則就可以確定該表中的其他另一個(gè)數(shù)據(jù)(B),則我們說(shuō):B依賴于A。實(shí)際上,一個(gè)表只要有主鍵,則其他非主鍵一定是依賴于主鍵的。什么叫“部分依賴”:如果確定一個(gè)表中的某個(gè)數(shù)據(jù)組合(A,B),則就可以確定該表中的其他另一個(gè)數(shù)據(jù)(C),則我們說(shuō):C依賴于(A,B)(此時(shí)A,B通常就是做出主鍵)。但:如果某個(gè)數(shù)據(jù)D,它只依賴于數(shù)據(jù)A,或者說(shuō),A一確定,則D也可以確定,此時(shí)我們就稱為“數(shù)據(jù)D部分依賴于數(shù)據(jù)A可見(jiàn)部分依賴是指某個(gè)非主鍵字段,依賴于聯(lián)合主鍵字段的其中部分字段。不良做法:改良之后:第三范式

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論