標籤:
今天是我們學習資料的相關的知識第二天。
一、資料庫的欄位類型 1.縱覽
在mysql中,資料的主要類型主要分三種:
數字型,字元型,時間型
資料類型的主要作用就是在開創一個資料表的時候來設定欄位的類型。
數字型:
1.整數型:tinyint,smallint,mediumint,int,bigint
2.浮點型:浮點 float,double
定點 decimal
字元型:
set,enum,blob,text,varchar,char
時間型:
year, timestam,time,date,datetime
2.數值型
整數類型的欄位設定
主要有:tinyint,smallint,mediumint,bigint
整數類型所佔的空間:
int:佔四個位元組,即32位
tinyint:佔一個位元組,即8位,最多能儲存256個數字
bigint:佔8個位元組,64位
1.整數類型欄位的設定形式:
類型名[M][unsigned][zerofill]
說明:
1.m表示設定該整數的顯示長度,即輸出的時候,如果m為6,可能顯示為000123.
2.unsigned用於設定該整數位無符號數,其實就是沒有負數。
3.zerofill用於設定是否填充‘0’到一個數位左邊,此時,需要與m配合使用
4.如果設定了zerofill,則自動也就表示同時具備了unsigned修飾。
2.小數類型
float,double,decimal
float:單精確度浮點型,其精度大約只有6--7位有效數字
double:雙精確度浮點型,其精度大約有15位有效數字。
decimal:定點小數類型,整數部分最長可以有65位,小數最多可以有30位,一般設定格式為:decimal(總位元,小數位元)
3.字串型
mysql中的字串,應該使用“單引號”引起來。
字串類型主要有:char,varchar,enum,set,text,binary,varbinary,blob
varchar類型:變長字串,使用是我們必須設定長度,最大長度是65535個,字元編碼不同,也有可能會更少,這裡的儲存限制,其實都是來源一個表格的一行的資料儲存最大容量限制:65535.
char類型:定長字串;使用時通常需要設定其長度,如果不設定,預設為1,最大理論長度為255個,定長字串都是適合儲存資料都是可以明確固釘長度的字元,比如手機號,中國郵編等,實際儲存時,如果少於設定長度,但是都會補滿填空。
enum類型:單選項字串資料型別。比較適合儲存表單介面中的單選項,在設定的時候需要給定固定 的幾個選項,然後儲存的時候值儲存一個值:
enum(“選項1”,“選項2”,“選項3”......)
實際內部對應的是數字值:1,2,3,4,5,6......最多65535項;
寫入形式也可以選用字串本身,也可以用對應的數組;
set類型:多選項字串資料型別。它適合儲存表單介面的多選項,用法與enum相同:
set(“選項1”,“選項2”,“選項3”......)
這些字串選擇對應的數字下標是:1,2,4,8,16.....最多64個選項。
寫入形式可以用該選項字串並用逗號隔開,也可以用對應數位和。
text類型:長文本字元類型,其中儲存的資料不佔表格中的資料容量限制。可以儲存65535個字元,其他同類型的有:smalltext,tinytext,longtext.
4.時間日期型
時間類型的設定有以下幾類:
datetime類型:時間日期類型
date:日期類型
time:時間類型
year:年份類型
timestamp:時間戳記,相當於now()
常用時間類型的在我們自己給定的資料下,需要使用單引號引起來,跟字串一樣。
二、表的定義語句 1.建立表
建立表格的文法有:
create table 【if not exists】 表名 (欄位列表 【,索引或約束列表】) 【表選項列表】;
或:
create table 【if not exists】 表名 (欄位1, 欄位2, .... 【,索引1, 索引2, ....,約束1,約束2,.... 】) 【表選項1, 表選項2,.... 】
欄位的設定形式:
欄位名 類型 【欄位屬性1 欄位屬性2】
欄位類型我們已經在上一節講過了,今天我們主要講一下欄位的屬性;
auto_increment:只用於整數類型,讓該欄位的值自動成長,通常是一個表的第一個欄位,並且是當做主鍵 primary key;
primary key:用於設定該欄位為主鍵,此時欄位的值就可以唯一確定一行資料;
unique key:設定該欄位是唯一的,不能重複
not null:用於設定該欄位不可為空,如果不設定預設可以為空白;
default :用於設定該欄位的預設值;
comment ‘欄位說明’;
索引
什麼是索引: 索引就是系統內部自動維護的隱藏資料表,它的作用就是可以極大 的加快資料的尋找。
所謂的建立索引,其實就是制定的一個表的某個或者某些欄位作為“索引資料欄位”就可以了,形式為:
普通索引: key(欄位名)
就是一個索引而已,就是可以加快尋找速度
唯一索引: unique key(欄位名)
是一個索引,而且還可以設定其欄位的值不能重複;
主鍵索引: primary key(欄位名)
是一個索引,而且還具有區分該表中的任何一行資料的作用,主鍵不可為空。
全文索引: fulltext(欄位名)
外鍵索引: foreign(欄位名)references 其他表(對應其他表中的欄位名)
索引建立的方法:
外鍵索引:
形式:foreign key(欄位名) references 其他表(欄位)
外鍵的定義:就是指設定某個表的某個欄位,它的資料的值,必須是另一個表中的某一個欄位;
·
約束:
約束的定義:就是要求資料需要滿足什麼條件的一種規定
主要有以下幾種約束:
主鍵約束:primary key(欄位名)
使該欄位的值可以用於唯一確定一行資料,其實就是主鍵的意思;
唯一約束:unique key(欄位名)
使該欄位的值具有唯一性,可以更好的區分;
外鍵約束:foreign key(欄位名) references 表名(欄位名)
使該設定欄位的值,必須在其定的對應表中的欄位中已經有的值;
非空約束:not null
設定一個欄位時寫的那個notnull屬性
預設約束:default 值
就是設定欄位上的那個屬性
檢查約束: check (某種判斷語句)
其實,主鍵約束,唯一約束,外鍵約束,和索引沒有差別就是同一件事的不同角度的說法。
選項列表
選項列表就是 在建立一個表的時候,對該表的整體設定:
charset = 要使用的字元編碼;
engine = 要使用的儲存引擎;
auto_increment= 設定當前表的自增長欄位的初始值,預設為1;
comment = ‘解說文字’
說明:
1,設定的字元編碼是為了跟資料庫設定的不一樣。如果一樣,就不需要設定了:因為其會自動使用資料庫層級的設定;
2,engine(儲存引擎)在代碼層面,就是一個名詞:InnoDB, MyIsam, BDB, archive, Memory。預設是InnoDB。
什麼叫做儲存引擎?
儲存引擎是將資料存放區到硬碟的“機制”。其實,也就幾種機制(如上名字所述);不同的儲存引擎,其實主要是從2個大的層面來設計儲存機制:
1,儘可能快的速度;
2,儘可能多的功能;
選擇不同的儲存引擎,就是上述效能和功能的“權衡”。
大體如下:
2.修改表
幾點說明:
修改表指修改表的格式;
建立表能做到的事修改表幾乎都能做到————比較不推薦修改表
可以對欄位進行操作也可以對索引進行操作
表的選項,通常是修改 即使不謝任何錶選項,他們都是預設值。
修改表的語句比較多這裡不進行詳解一下是比較常見的幾個:
添加欄位:alter table 表名 add [column] 新欄位名 欄位類型 [欄位屬性列表];
修改欄位(並可改名):alter table 表名 change [column] 舊欄位名 新欄位名 新欄位類型 [新欄位屬性列表];
刪除欄位:alter table 表名 drop [column] 欄位名;
添加普通索引:alter table 表名 add key [索引名] (欄位名1[,欄位名2,...]);
添加唯一索引(約束):alter table 表名 add unique key (欄位名1[,欄位名2,...]);
添加主鍵索引(約束):alter table 表名 add primary key (欄位名1[,欄位名2,...]);
3.刪除表
drop table if exists 表名;
4.其他相關的語句
顯示當前資料庫中的所有表: show tables;
顯示某表的結構: desc 表名; 或:describe 表名;
顯示某表的建立語句:show create table 表名;
重新命名表:rename table 舊錶名 to 新表名;
從已有表複製表結構:create table [if not exists] 新表名 like 原表名;
三、視圖的定義 1.什麼是視圖
就是一個select語句,我們給其中一個名字(視圖名),以後,要使用(執行)該select語句就方便了:用該視圖就可以了
2.視圖的建立
create view 視圖名【(欄位1,欄位2,欄位3.....)】 as select
距離:create view v as
select id,fl,name,age,email from 表1 where id>7 and id<100
基本上就可以當做一個表來用了:
3.刪除視圖
drop view 【if exists】 視圖名;
php學習day10---資料庫基礎2