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

下載本文檔

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

文檔簡介

1、昨日回顧2數(shù)據(jù)類型4概覽4整數(shù)類型4范圍5通用設(shè)定形式5小數(shù)類型6時間日期類型6字符串類型6最基本最重要的2個:62個二進制文本:62個大文本類型:62個有關(guān)“選項”的文本存儲形式:7表定義語句8創(chuàng)建表:8基本形式8字段屬性設(shè)置8索引設(shè)置9約束設(shè)置9表選項10修改表:11一般概述11修改表的基本形式:12刪除表:12表的其他操作:12視圖12什么是視圖:13視圖創(chuàng)建形式:13視圖的使用13修改視圖:13刪除視圖:14數(shù)據(jù)庫(數(shù)據(jù)表)的設(shè)計思想介紹14數(shù)據(jù)庫設(shè)計3范式(3NF):14第一范式(),原子性14第二范式()唯一性15第三范式(3NF):獨立性,消除傳遞依賴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個燈泡)一個燈泡只能表達2個意思(2個數(shù)字)2個燈泡可以表達4個意思3個燈泡可以表達8個意思。8個燈泡(1個字節(jié))可以表達256個數(shù)字。默認情況下,這些整數(shù)類型都是可正可負的,那么:tinyInt就只能存儲: -128-127這些數(shù)范圍通用設(shè)定形式定義一個字段的時候的類型的寫法。比如:create table tab1 (f1 數(shù)據(jù)類型 );數(shù)據(jù)類型: 類型名(長度n) unsigned zerofill長度n: 表示的意思是

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

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

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

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

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

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

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

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

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

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

13、(做到)的事情,修改表也能做到。大體來說,就可以做到:增刪改字段:增:alter table 表名 add column 字段名 字段類型 字段屬性;刪: alter table 表名 drop 字段名改:alter table 表名 change 原字段名 新字段名 新字段類型 新字段屬性;增刪索引:增刪約束:修改表選項:修改表的基本形式:alter table 表名 修改語句1,修改語句2, . ;刪除表:drop table if exists 表名;表的其他操作:顯示所有表show tables:顯示表結(jié)構(gòu)desc 表名;顯示表的創(chuàng)建語句: 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什么是視圖:視圖可以看作是一個“臨時存儲的數(shù)據(jù)所構(gòu)成的表”(非真實表),其實本質(zhì)上只是一個select語句。只是將該select語句(通常比較復(fù)雜)進行一個“包裝”,并設(shè)定了一個名字,其后就可以通過該名字并把該名字當(dāng)作一個表來使用。如果一個語句比較復(fù)雜,又在多個頁面需要使用它,則可以將它做成一個視圖,方便使用。又如果,

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

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

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

溫馨提示

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

評論

0/150

提交評論