掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流
在現(xiàn)代軟件開(kāi)發(fā)中,數(shù)據(jù)庫(kù)扮演著極其重要的角色。無(wú)論是網(wǎng)站應(yīng)用、移動(dòng)應(yīng)用還是桌面應(yīng)用,都需要用到數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)應(yīng)用程序所需的各種數(shù)據(jù)。而數(shù)據(jù)庫(kù)的本質(zhì)就是一個(gè)數(shù)據(jù)倉(cāng)庫(kù),它可以幫助我們存儲(chǔ)、管理、查詢(xún)數(shù)據(jù)。在數(shù)據(jù)庫(kù)中,最基本的存儲(chǔ)單元就是表。因此,在開(kāi)始使用數(shù)據(jù)庫(kù)時(shí),之一步就是建立數(shù)據(jù)庫(kù)表。本文將會(huì)介紹數(shù)據(jù)庫(kù)表的創(chuàng)建,以及應(yīng)該如何編寫(xiě)表的創(chuàng)建代碼。

創(chuàng)新互聯(lián)主要從事網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)昌邑,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):18982081108
數(shù)據(jù)庫(kù)表的創(chuàng)建
在數(shù)據(jù)庫(kù)中創(chuàng)建表的過(guò)程非常簡(jiǎn)單,只需要執(zhí)行一條SQL語(yǔ)句即可。在MySQL中,創(chuàng)建表的基本語(yǔ)法如下:
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
…..
);
其中,CREATE TABLE是定義創(chuàng)建表的關(guān)鍵字。table_name是你給表起的名稱(chēng),后面緊跟的是表的字段定義,包括字段名稱(chēng)和數(shù)據(jù)類(lèi)型。
例如,我們需要?jiǎng)?chuàng)建一個(gè)”user”表,表中包含”user_id”、”username”、”password”三個(gè)字段,其中”user_id”是int型,”username”和”password”是varchar(50)型。則可以執(zhí)行以下SQL語(yǔ)句:
CREATE TABLE user(
user_id int,
username varchar(50),
password varchar(50)
);
執(zhí)行以上語(yǔ)句后,MySQL將會(huì)創(chuàng)建一個(gè)名為”user”的表,并定義了三個(gè)字段: “user_id”、”username”和”password”。
應(yīng)該如何編寫(xiě)表的創(chuàng)建代碼?
在軟件開(kāi)發(fā)中,不同的開(kāi)發(fā)人員往往有自己的編程風(fēng)格和習(xí)慣,而這些習(xí)慣往往能夠影響到代碼質(zhì)量和可維護(hù)性。下面我們來(lái)談一談,在編寫(xiě)數(shù)據(jù)庫(kù)表的創(chuàng)建代碼時(shí),應(yīng)該注意哪些問(wèn)題。
1. 字段位置
在定義字段時(shí),應(yīng)該根據(jù)實(shí)際需求,在設(shè)計(jì)表時(shí)把最常用的字段放在最前面,放在后面的是不經(jīng)常使用的字段。在后續(xù)的查詢(xún)操作中,這樣可以提高查詢(xún)效率,縮短查詢(xún)時(shí)間。
2. 命名規(guī)范
在命名字段時(shí),應(yīng)該盡量貼近實(shí)際含義,避免使用縮寫(xiě)或者與其他字段重名。建議使用下劃線(xiàn)命名法,比如”user_id”、”user_name”等。
3. 數(shù)據(jù)類(lèi)型和長(zhǎng)度
在定義字段時(shí),應(yīng)該根據(jù)實(shí)際情況選擇合適的數(shù)據(jù)類(lèi)型和長(zhǎng)度。比如,如果需要存儲(chǔ)日期時(shí)間,應(yīng)該使用datetime類(lèi)型;如果需要存儲(chǔ)長(zhǎng)文本,應(yīng)該使用text類(lèi)型。同時(shí),為了節(jié)約存儲(chǔ)空間和提高查詢(xún)效率,應(yīng)該盡可能縮短字段的長(zhǎng)度,例如在存儲(chǔ)郵件地址時(shí),如果不需要存儲(chǔ)郵件地址的富文本格式,可以使用varchar(50),而不是text類(lèi)型。
4. 主鍵和自增列
在設(shè)計(jì)表結(jié)構(gòu)時(shí),應(yīng)該注意為表添加主鍵和自增列。主鍵是一種非常重要的約束,在表中保證數(shù)據(jù)的唯一性。自增列是一種自動(dòng)增加的列,可以在插入數(shù)據(jù)時(shí)自動(dòng)為該列賦值,便于維護(hù)。
5. 索引和統(tǒng)計(jì)信息
在表設(shè)計(jì)完成后,應(yīng)該根據(jù)實(shí)際查詢(xún)需求為表添加索引和統(tǒng)計(jì)信息。索引是一種數(shù)據(jù)結(jié)構(gòu),可以加快查詢(xún)速度。在數(shù)據(jù)庫(kù)中,經(jīng)常使用二叉樹(shù)、B樹(shù)等數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)表索引。統(tǒng)計(jì)信息可以幫助數(shù)據(jù)庫(kù)優(yōu)化器選擇合適的執(zhí)行計(jì)劃,提高查詢(xún)效率。
在軟件開(kāi)發(fā)中,數(shù)據(jù)庫(kù)扮演著非常重要的角色。對(duì)于初學(xué)者來(lái)說(shuō),在編寫(xiě)數(shù)據(jù)庫(kù)表的創(chuàng)建代碼時(shí),需要注意一些基本原則,比如命名規(guī)范、數(shù)據(jù)類(lèi)型和長(zhǎng)度、主鍵和自增列等。同時(shí),在數(shù)據(jù)庫(kù)的日常維護(hù)過(guò)程中,需要注意為表添加索引和統(tǒng)計(jì)信息。只有按照標(biāo)準(zhǔn)化的流程進(jìn)行開(kāi)發(fā),才能獲得更好的開(kāi)發(fā)效率和更高質(zhì)量的代碼。
相關(guān)問(wèn)題拓展閱讀:
方法一:SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)
create database stuDB
on primary — 默認(rèn)就屬于primary文件組,可省
(
/*–數(shù)據(jù)文件悄亮的具體描述–*/
name=’stuDB_data’, — 主數(shù)據(jù)文件的邏輯名稱(chēng)
filename=’D:\stuDB_data.mdf’, — 主數(shù)據(jù)文件的物理名稱(chēng)
size=5mb, –主數(shù)據(jù)文件的初始消伍大小
maxsize=100mb, — 主數(shù)據(jù)文件增長(zhǎng)的更大值
filegrowth=15%–主數(shù)據(jù)文件的增長(zhǎng)率
)
log on
(
/*–日志文件的具體描述,各參數(shù)含義同上–*/
name=’stuDB_log’,
filename=’D:\stuDB_log.ldf’,
size=2mb,
filegrowth=1mb
)
方法二:phpMyAdmin創(chuàng)建數(shù)據(jù)庫(kù)
一、雙擊打開(kāi)服務(wù)器
二、啟動(dòng)服務(wù)器
三、啟橋?qū)掽c(diǎn)擊MySQL管理器
四、進(jìn)入phpMyAdmin,登錄,點(diǎn)擊數(shù)據(jù)庫(kù),輸入數(shù)據(jù)庫(kù)名,點(diǎn)擊創(chuàng)建(如下圖紅箭頭)
五、數(shù)據(jù)庫(kù)就創(chuàng)建完了
1.定義基本表語(yǔ)句
語(yǔ)法:
USE 數(shù)據(jù)庫(kù)名 CREATE TABLE 表名 (列名 類(lèi)型(大小) DEFAULT’默認(rèn)值’,
列名 類(lèi)型(大小) DEFAULT’默認(rèn)值’,
2.定義完整性約束
語(yǔ)法:
USE 數(shù)據(jù)庫(kù)名 CREATE TABLE 表名 (列名 類(lèi)型(大小) DEFAULT’默認(rèn)值’ CONSTRAINT 約束名 約束定義,
列名 類(lèi)型(大小) DEFAULT’默認(rèn)值’ CONSTRAINT 約束名 約束定義,
列名 類(lèi)型(大小) DEFAULT’默認(rèn)值’ CONSTRAINT 約束名 約束定義,
約束定義
(笑茄昌1)NULL | NOT NULL 用于定義列的空值約束。(定義列) (下面的藍(lán)色部份是單選其中之一)
語(yǔ)法:CONSTRAINT 約束名 NULL | NOT NULL
例:下面的 SQL 語(yǔ)句強(qiáng)制 “Id_P” 列和 “LastName” 列不接受 NULL 值:
(3)PRIMARY KEY 約束唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每條記錄。(即可以定義列也可能定義表)
語(yǔ)法:CONSTRAINT 約束名 PRIMARY KEY (列名, 列名, … …);
說(shuō)明:用于定義基本表的主鍵。與UNIQUE約束類(lèi)似,PRIMARY KEY 約納掘束也是通過(guò)建立唯一索引來(lái)保證基本表在主鍵列(某一個(gè)列或多個(gè)列的組合)上取值的唯一性。然而它們之間也存在著很大差別:在一個(gè)基本表中只能定義一個(gè) PRIMARY KEY 約束,卻能定義多個(gè)UNIQUE約束。如果為基本表的某一個(gè)列或多個(gè)列的組合指定了 PRIMARY KEY 約束,那么其中在任何一個(gè)列都不能出現(xiàn)空值;而 UNIQUE 約束允許出現(xiàn)空值。
下面的 SQL 在 “Persons” 表創(chuàng)建時(shí)在 “Id_P” 列創(chuàng)建 PRIMARY KEY 約束:
(2)UNIQUE 約束唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每條記錄。(即可以定義列也可能定義表)
語(yǔ)法:CONSTRAINT 約束名 UNIQUE (列名, 列名, … …);
說(shuō)明:用于指定基本表在某一個(gè)列或多個(gè)列的組合上取值必須唯一。定義了UNIQUE約束的那些列稱(chēng)為唯一鍵。如果為基本表的革一列或多個(gè)列的組合指定了UNIQUE約束,則系統(tǒng)將為這些列建立唯一索引,從而保證在表中的任意兩行記錄在指定的列或列組合上不能取同樣的值。
注意:
a. UNIQUE 約束唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每條記錄。
b. UNIQUE 和 PRIMARY KEY 約束均為列或列提供了唯一性的保證。
c. PRIMARY KEY 擁有自動(dòng)定義的 UNIQUE 約束。
d.請(qǐng)注意,每個(gè)表可以有多個(gè) UNIQUE 約束,但是每個(gè)表只能有一個(gè) PRIMARY KEY 約束。
(4)FOREIGN KEY 外鍵 (即可以定義列也可能定義表)
語(yǔ)法:CONSTRAINT 約束名 FOREIGN KEY (列名, 列名, … …) REFERENCES (列名, 列名, … …) ;
說(shuō)明:指定某一個(gè)列或多個(gè)列的組合作為外部鍵,并在外部鍵和它所引用的主鍵或唯一鍵之間建立聯(lián)系。在這種聯(lián)系中,包含外部鍵的基本表稱(chēng)為從表,包含外部鍵引碰扒用的主鍵或唯一鍵的表稱(chēng)為主表。一旦為一列或列的組合定義了 FOREIGN KEY 約束,系統(tǒng)將保證從表在外部鍵上的取值要么是主表中某一個(gè)主鍵值或唯一鍵值,要么取空值。
下面的 SQL 在 “Orders” 表創(chuàng)建時(shí)為 “Id_P” 列創(chuàng)建 FOREIGN KEY:
用SQL語(yǔ)句創(chuàng)建表—-1
數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)存儲(chǔ)在表中。數(shù)據(jù)表包括行和列。列決定了表中數(shù)據(jù)的類(lèi)型。行包含了實(shí)際的數(shù)據(jù)。
例如,數(shù)據(jù)庫(kù)pubs中的表authors有九個(gè)字段。其中的一個(gè)字段名為為au_lname,這個(gè)字段被用來(lái)存儲(chǔ)作者的名字信息。每次向這個(gè)表中添加新作者時(shí),作者名字就被添加到這個(gè)字段,產(chǎn)生一條新記錄。
通過(guò)定義字段,你可以創(chuàng)建一個(gè)新表。每個(gè)字段有一個(gè)名字和一個(gè)特定的數(shù)據(jù)類(lèi)型(數(shù)據(jù)類(lèi)型在后面的“字段類(lèi)型”一節(jié)中講述),例如字段au_lname存儲(chǔ)的是字符型數(shù)據(jù)。一個(gè)字段也可以存儲(chǔ)其它類(lèi)型的數(shù)據(jù)。
使用SQL Sever,創(chuàng)建一個(gè)新表的方法是很多的。你可以可執(zhí)行一個(gè)SQL語(yǔ)句或使用SQL事務(wù)管理器(SQL Enterprise Manager)來(lái)創(chuàng)建一個(gè)新表。在下一節(jié)里,你將學(xué)會(huì)如何用SQL語(yǔ)句來(lái)創(chuàng)建一個(gè)新表。
一、用CREATE語(yǔ)句創(chuàng)建表
注意:如果你還沒(méi)有建立自己的數(shù)據(jù)庫(kù),現(xiàn)在就跳回到第三章創(chuàng)建這個(gè)庫(kù)。你絕不能向master,tempdb或任何其他任何系統(tǒng)數(shù)據(jù)庫(kù)中添加數(shù)據(jù)。
從SQL Sever程序組(在任務(wù)欄中)中啟動(dòng)ISQL/w程序。出現(xiàn)查詢(xún)窗口后,從窗口頂部的下拉列表中選擇你在第三章所創(chuàng)建的數(shù)據(jù)庫(kù)。下一步,在查詢(xún)窗口中鍵入下面的SQL語(yǔ)句,單擊執(zhí)行查詢(xún)按鈕,執(zhí)行這個(gè)語(yǔ)句:
CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate DATETIME)
如果一切正常,你會(huì)在結(jié)果窗口中看到如下的文字(如果出現(xiàn)異常,請(qǐng)參閱第三章):
This command dit not return data ,and it did not return any rows
二、字段類(lèi)型
不同的字段類(lèi)型用來(lái)存放不同類(lèi)型的數(shù)據(jù)。創(chuàng)建和使用表時(shí),你更應(yīng)該理解五種常用的字段類(lèi)型:字符型,文本型,數(shù)值型,邏輯性和日期型。
(1)字符型數(shù)據(jù)
字符型數(shù)據(jù)非常有用。當(dāng)你需要存儲(chǔ)短的字符串信息時(shí),你總是要用到字符型數(shù)據(jù)。例如,你可以把從HTML form的文本框中搜集到的信息放在字符型字段中。
要建立一個(gè)字段用來(lái)存放可變長(zhǎng)度的字符串信息,你可以使用表達(dá)式 VARCHAR。考慮你前面創(chuàng)建的表guestbook:
CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate DATETIME)
在 這個(gè)例子中,字段visitor的數(shù)據(jù)類(lèi)型為VARCHAR。注意跟在數(shù)據(jù)類(lèi)型后面的括號(hào)中的數(shù)字。這個(gè)數(shù)字指定了這個(gè)字段所允許存放的字符串的更大長(zhǎng) 度。在這個(gè)例子中,字段visitor能存放的字符串最長(zhǎng)為四十個(gè)字符。如果名字太長(zhǎng),字符串會(huì)被截?cái)?,只保留四十個(gè)字符。
VARCHAR類(lèi)型可以存儲(chǔ)的字符串最長(zhǎng)為255個(gè)字符。要存儲(chǔ)更長(zhǎng)的字符串?dāng)?shù)據(jù),可以使用文本型數(shù)據(jù)(下一節(jié)中講述)。
另一種字符型數(shù)據(jù)用來(lái)存儲(chǔ)固定長(zhǎng)度的字符數(shù)據(jù)。下面是一個(gè)使用這種數(shù)據(jù)類(lèi)型的例子:
CREATE TABLE guestbook (visitor CHAR(40),comments TEXT,entrydate DATETIME)
在這個(gè)例子中,字段visitor被用來(lái)存儲(chǔ)四十個(gè)字符的固定長(zhǎng)度字符串。表達(dá)式CHAR指定了這個(gè)字段應(yīng)該是固定長(zhǎng)度的字符串。
VARCHAR型和CHAR型數(shù)據(jù)的這個(gè)姿野差別是細(xì)微的,但是非常重要。假如你向一個(gè)長(zhǎng)度為四十個(gè)字符的VARCHAR型字段中輸入數(shù)據(jù)Bill Gates。當(dāng)你以后從這個(gè)字段中取出此數(shù)據(jù)時(shí),你取出的數(shù)據(jù)其長(zhǎng)度為十個(gè)字符——字符串Bill Gates的長(zhǎng)度。
現(xiàn)在假如你把字符串輸入一個(gè)長(zhǎng)度為四十個(gè)字符的CHAR型字段中,那么當(dāng)你取出數(shù)據(jù)時(shí),所取出的數(shù)據(jù)長(zhǎng)度將是四十個(gè)字符。字符串的后面會(huì)被附加多余的空格。
當(dāng)你建立自己的站點(diǎn)時(shí),你會(huì)發(fā)現(xiàn)使用VARCHAR型字段要比跡銷(xiāo)喊CHAR型字段方便的多。使用VARCHAR型字段時(shí),你不需要為剪掉你數(shù)據(jù)中多余的空格而操心。
VARCHAR型字段的另一個(gè)突出的好處是它可以比CHAR型字段占用更少的內(nèi)存和硬盤(pán)空間。當(dāng)你的數(shù)據(jù)庫(kù)很大時(shí),這種內(nèi)存和磁盤(pán)空間的節(jié)省會(huì)變得非常重要。
(2)文本型數(shù)據(jù)
字符型數(shù)據(jù)限制了字符串的長(zhǎng)度不能超過(guò)255個(gè)字符。而使用文本型數(shù)據(jù),你可以存放超過(guò)二十億個(gè)字符的字符串。當(dāng)你需要存儲(chǔ)大串的字符時(shí),斗搏應(yīng)該使用文本型數(shù)據(jù)。
這里有一個(gè)使用文本型數(shù)據(jù)的例子:
CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate DATETIME)
在這個(gè)例子中,字段comments被用來(lái)存放訪(fǎng)問(wèn)者對(duì)你站點(diǎn)的意見(jiàn)。注意文本型數(shù)據(jù)沒(méi)有長(zhǎng)度,而上一節(jié)中所講的字符型數(shù)據(jù)是有長(zhǎng)度的。一個(gè)文本型字段中的數(shù)據(jù)通常要么為空,要么很大。
當(dāng)你從HTML form的多行文本編輯框(TEXTAREA)中收集數(shù)據(jù)時(shí),你應(yīng)該把收集的信息存儲(chǔ)于文本型字段中。但是,無(wú)論何時(shí),只要你能避免使用文本型字段,你就應(yīng)該不適用它。文本型字段既大且慢,濫用文本型字段會(huì)使服務(wù)器速度變慢。文本型字段還會(huì)吃掉大量的磁盤(pán)空間。
警告:
一旦你向文本型字段中輸入了任何數(shù)據(jù)(甚至是空值),就會(huì)有2K的空間被自動(dòng)分配給該數(shù)據(jù)。除非刪除該記錄,否則你無(wú)法收回這部分存儲(chǔ)空間。
(3)數(shù)值型數(shù)據(jù)
SQL Sever支持許多種不同的數(shù)值型數(shù)據(jù)。你可以存儲(chǔ)整數(shù)、小數(shù)、和錢(qián)數(shù)。
通常,當(dāng)你需要在表中的存放數(shù)字時(shí),你要使用整型(INT)數(shù)據(jù)。INT型數(shù)據(jù)的表數(shù)范圍是從-2,147,483,647到2,147,483,647的整數(shù)。下面是一個(gè)如何使用INT型數(shù)據(jù)的例子:
CREATE TABLE visitlog (visitor VARCHAR(40),numvisits INT)
這個(gè)表可以用來(lái)記錄你站點(diǎn)被訪(fǎng)問(wèn)的次數(shù)。只要沒(méi)有人訪(fǎng)問(wèn)你的站點(diǎn)超過(guò)2,147,483,647次,nubvisits字段就可以存儲(chǔ)訪(fǎng)問(wèn)次數(shù)。
為了節(jié)省內(nèi)存空間,你可以使用ALLINT型數(shù)據(jù)。ALLINT 型數(shù)據(jù)可以存儲(chǔ)從-32768到32768的整數(shù)。這種數(shù)據(jù)類(lèi)型的使用方法與INT型完全相同。
最后,如果你實(shí)在需要節(jié)省空間,你可以使用TINYINT型數(shù)據(jù)。同樣,這種類(lèi)型的使用方法也與INT型相同,不同的是這種類(lèi)型的字段只能存儲(chǔ)從0到255的整數(shù)。TINYINT型字段不能用來(lái)存儲(chǔ)負(fù)數(shù)。
通 常,為了節(jié)省空間,應(yīng)該盡可能的使用最小的整型數(shù)據(jù)。一個(gè)TINYINT型數(shù)據(jù)只占用一個(gè)字節(jié);一個(gè)INT型數(shù)據(jù)占用四個(gè)字節(jié)。這看起來(lái)似乎差別不大,但 是在比較大的表中,字節(jié)數(shù)的增長(zhǎng)是很快的。另一方面,一旦你已經(jīng)創(chuàng)建了一個(gè)字段,要修改它是很困難的。因此,為安全起見(jiàn),你應(yīng)該預(yù)測(cè)以下,一個(gè)字段所需要 存儲(chǔ)的數(shù)值更大有可能是多大,然后選擇適當(dāng)?shù)臄?shù)據(jù)類(lèi)型。
為 了能對(duì)字段所存放的數(shù)據(jù)有更多的控制,你可以使用NUMERIC型數(shù)據(jù)來(lái)同時(shí)表示一個(gè)數(shù)的整數(shù)部分和小數(shù)部分。NUMERIC型數(shù)據(jù)使你能表示非常大的數(shù) ——比INT型數(shù)據(jù)要大得多。一個(gè)NUMERIC型字段可以存儲(chǔ)從-10^38到10^38范圍內(nèi)的數(shù)。NUMERIC型數(shù)據(jù)還使你能表示有小數(shù)部分的 數(shù)。例如,你可以在NUMERIC型字段中存儲(chǔ)小數(shù)3.14。
當(dāng)定義一個(gè)NUMERIC型字段時(shí),你需要同時(shí)指定整數(shù)部分的大小和小數(shù)部分的大小。這里有一個(gè)使用這種數(shù)據(jù)類(lèi)型的例子:
CREATE TABLE numeric_data (bignumber NUMERIC(28,0), fraction NUMERIC (5,4) )
當(dāng)這個(gè)語(yǔ)句執(zhí)行時(shí),將創(chuàng)建一個(gè)名為numeric_data的包含兩個(gè)字段的表。字段bignumber可以存儲(chǔ)直到28位的整數(shù)。字段fraction可以存儲(chǔ)有五位整數(shù)部分和四位小數(shù)部分的小數(shù)。
一個(gè)NUMERIC型數(shù)據(jù)的整數(shù)部分更大只能有28位,小數(shù)部分的位數(shù)必須小于或等于整數(shù)部分的位數(shù),小數(shù)部分可以是零。
你 可以使用INT型或NUMERIC型數(shù)據(jù)來(lái)存儲(chǔ)錢(qián)數(shù)。但是,專(zhuān)門(mén)有另外兩種數(shù)據(jù)類(lèi)型用于此目的。如果你希望你的網(wǎng)點(diǎn)能掙很多錢(qián),你可以使用MONEY型數(shù) 據(jù)。如果你的野心不大,你可以使用ALLMONEY型數(shù)據(jù)。MONEY型數(shù)據(jù)可以存儲(chǔ)從-922,337,203,685,477.5808到 922,337,203,685,477.5807的錢(qián)數(shù)。如果你需要存儲(chǔ)比這還大的金額,你可以使用NUMERIC型數(shù)據(jù)。
ALLMONEY型數(shù)據(jù)只能存儲(chǔ)從-214,748.3648到214,748.3647 的錢(qián)數(shù)。同樣,如果可以的話(huà),你應(yīng)該用ALLMONEY型來(lái)代替MONEY型數(shù)據(jù),以節(jié)省空間。下面的例子顯示了如何使用這兩種表示錢(qián)的數(shù)據(jù)類(lèi)型:
CREATE TABLE products (product VARCHAR(40),price MONEY,
Discount_price ALLMONEY)
這個(gè)表可以用來(lái)存儲(chǔ)商品的折扣和普通售價(jià)。字段price 的數(shù)據(jù)類(lèi)型是MONEY,字段discount_price的數(shù)據(jù)類(lèi)型是ALLMONEY。
(4)存儲(chǔ)邏輯值
如果你使用復(fù)選框(CHECKBOX)從網(wǎng)頁(yè)中搜集信息,你可以把此信息存儲(chǔ)在BIT型字段中。BIT型字段只能取兩個(gè)值:0或1。這里有一個(gè)如何使用這種字段的例子:
CREATE TABLE opinion (visitor VARCHAR(40),good BIT)
這個(gè)表可以用來(lái)存放對(duì)你的網(wǎng)站進(jìn)行民意調(diào)查所得的信息。訪(fǎng)問(wèn)者可以投票表示他們是否喜歡你的網(wǎng)站。如果他們投YES,就在BIT型字段中存入1。反之,如果他們投NO,就在字段中存入0(在下一章里,你將學(xué)會(huì)如何計(jì)算投票)。
當(dāng)心,在你創(chuàng)建好一個(gè)表之后,你不能向表中添加BIT型字段。如果你打算在一個(gè)表中包含BIT型字段,你必須在創(chuàng)建表時(shí)完成。
(5)存儲(chǔ)日期和時(shí)間
當(dāng)你建立一個(gè)網(wǎng)站時(shí),你也許需要記錄在一段時(shí)間內(nèi)的訪(fǎng)問(wèn)者數(shù)量。為了能夠存儲(chǔ)日期和時(shí)間,你需要使用DATETIME型數(shù)據(jù),如下例所示:
CREATE TABL visitorlog(arrivaltime DATETIME ,departuretime DATETIME)
這個(gè)表可以用來(lái)記錄訪(fǎng)問(wèn)者進(jìn)入和離開(kāi)你網(wǎng)站的時(shí)間和日期。一個(gè)DATETIME型的字段可以存儲(chǔ)的日期范圍是從1753年1月1日之一毫秒到9999年12月31日最后一毫秒。
如 果你不需要覆蓋這么大范圍的日期和時(shí)間,你可以使用ALLDATETIME型數(shù)據(jù)。它與DATETIME型數(shù)據(jù)同樣使用,只不過(guò)它能表示的日期和時(shí)間 范圍比DATETIME型數(shù)據(jù)小,而且不如DATETIME型數(shù)據(jù)精確。一個(gè)ALLDATETIME型的字段能夠存儲(chǔ)從1900年1月1日到2023 年6月6日的日期,它只能精確到秒。
DATETIME型字段在你輸入日期和時(shí)間之前并不包含實(shí)際的數(shù)據(jù),認(rèn)識(shí)這一點(diǎn)是重要的。在下一章,你將學(xué)習(xí)怎樣使用大量的SQL函數(shù)來(lái)讀取和操作日期和時(shí)間(參見(jiàn)下面的“缺省值”一節(jié))。你也可以在VBScript和cript 中使用日期和時(shí)間函數(shù)來(lái)向一個(gè)DATETIME型字段中輸入日期和時(shí)間。
用SQL語(yǔ)句創(chuàng)建表—-2
三、字段屬性
上一節(jié)介紹了如何建立包含不同類(lèi)型字段的表。在這一節(jié)中,你將學(xué)會(huì)如何使用字段的三個(gè)屬性。這些屬性允許你控制空值,缺省值和標(biāo)識(shí)值。
(1)允許和禁止空值
大多數(shù)字段可以接受空值(NULL)。當(dāng)一個(gè)字段接受了空值后,如果你不改變它,它將一直保持空值??罩担∟ULL)和零是不同的,嚴(yán)格的說(shuō),空值表示沒(méi)有任何值。
為了允許一個(gè)字段接受空值,你要在字段定義的后面使用表達(dá)式NULL。例如,下面的表中兩個(gè)字段都允許接受空值:
CREATE TABLE empty (empty1 CHAR (40) NULL,empty2 INT NULL)
注意:
BIT型數(shù)據(jù)不能是空值。一個(gè)這種類(lèi)型的字段必須取0或者1。
有時(shí)你需要禁止一個(gè)字段使用空值。例如,假設(shè)有一個(gè)表存儲(chǔ)著信用卡號(hào)碼和信用卡有效日期,你不會(huì)希望有人輸入一個(gè)信用卡號(hào)碼但不輸入有效日期。為了強(qiáng)制兩個(gè)字段都輸入數(shù)據(jù),你可以用下面的方法建立這個(gè)表:
CREATE TABLE creditcards (creditcard_number CHAR(20) NOT NULL,
Creditcard_expire DATETIME NOT NULL)
注意字段定義的后面跟有表達(dá)式NOT NULL。通過(guò)包含表達(dá)式NOT NULL,你可以禁止任何人只在一個(gè)字段中插入數(shù)據(jù),而不輸入另一個(gè)字段的數(shù)據(jù)。
你將會(huì)發(fā)現(xiàn),在你建設(shè)自己的網(wǎng)站過(guò)程中,這種禁止空值的能力是非常有用的。如果你指定一個(gè)字段不能接受空值,那么當(dāng)你試圖輸入一個(gè)空值時(shí),會(huì)有錯(cuò)誤警告。這些錯(cuò)誤警告可以為程序調(diào)試提供有價(jià)值的線(xiàn)索。
(2)缺省值
假設(shè)有一個(gè)存儲(chǔ)地址信息的表,這個(gè)表的字段包括街道、城市、州、郵政編碼和國(guó)家。如果你預(yù)計(jì)地址的大部分是在美國(guó),你可以把這個(gè)值作為country字段的缺省值。
為了在創(chuàng)建一個(gè)表時(shí)指定缺省值,你可以使用表達(dá)式DEFAULT。請(qǐng)看下面這個(gè)在創(chuàng)建表時(shí)使用缺省值的例子:
CREATE TABLE addresses (street VARCHAR(60) NULL,
city VARCHAR(40) NULL,
state VARCHAR(20) NULL
zip VARCHAR(20) NULL,
country VARCHAR(30) DEFAULT ‘USA’)
在這個(gè)例子中,字段country的缺省值被指定為美國(guó)。注意單引號(hào)的使用,引號(hào)指明這是字符型數(shù)據(jù)。為了給非字符型的字段指定缺省值,不要把該值擴(kuò)在引號(hào)中:
CREATE TABLE orders(price MONEY DEFAULT $38.00,
quantity INT DEFAULT 50,
entrydate DATETIME DEFAULT GETDATE())
在這個(gè)CREATE TABLE語(yǔ)句中,每個(gè)字段都指定了一個(gè)缺省值。注意DATETIME型字段entrydate所指定的缺省值,該缺省值是函數(shù)Getdate()的返回值,該函數(shù)返回當(dāng)前的日期和時(shí)間。
(3)標(biāo)識(shí)字段
每個(gè)表可以有一個(gè)也只能有一個(gè)標(biāo)識(shí)字段。一個(gè)標(biāo)識(shí)字段是唯一標(biāo)識(shí)表中每條記錄的特殊字段。例如,數(shù)據(jù)庫(kù)pubs中的表jobs包含了一個(gè)唯一標(biāo)識(shí)每個(gè)工作標(biāo)識(shí)字段:
job_id job_desc
…………………………………………………………….
1 New Hire Job not specified
2 Chief Executive officer
3 Bushness Operations Manager
4 Chief Financial Officier
5 Publisher
字段job_id為每個(gè)工作提供了唯一的一個(gè)數(shù)字。如果你決定增加一個(gè)新工作,新增記錄的job_id字段會(huì)被自動(dòng)賦給一個(gè)新的唯一值。
為了建立一個(gè)標(biāo)識(shí)字段,你只需在字段定義后面加上表達(dá)式IDENTITY即可。你只能把NUMERIC型或INT型字段設(shè)為標(biāo)識(shí)字段,這里有一個(gè)例子:
CREATE TABLE visitorID (theID NUBERIC(18) IDENTITY,name VARCHAR(40))
這個(gè)語(yǔ)句所創(chuàng)建的表包含一個(gè)名為theid的標(biāo)識(shí)字段。每當(dāng)一個(gè)新的訪(fǎng)問(wèn)者名字添加到這個(gè)表中時(shí),這個(gè)字段就被自動(dòng)賦給一個(gè)新值。你可以用這個(gè)表為你的站點(diǎn)的每一個(gè)用戶(hù)提供唯一標(biāo)識(shí)。
技巧:
建立一個(gè)標(biāo)示字段時(shí),注意使用足夠大的數(shù)據(jù)類(lèi)型。例如你使用TINYINT型數(shù)據(jù),那么你只能向表中添加255個(gè)記錄。如果你預(yù)計(jì)一個(gè)表可能會(huì)變得很大,你應(yīng)該使用NUMERIC型數(shù)據(jù)。
標(biāo) 識(shí)字段的存在會(huì)使你想嘗試許多不可能的事情。例如,你也許想利用標(biāo)識(shí)字段來(lái)對(duì)記錄進(jìn)行基于它們?cè)诒碇形恢玫倪\(yùn)算。你應(yīng)該拋棄這種意圖。每個(gè)記錄的標(biāo)識(shí)字段 的值是互不相同的,但是,這并不禁止一個(gè)標(biāo)識(shí)字段的標(biāo)識(shí)數(shù)字之間存在間隔。例如,你永遠(yuǎn)不要試圖利用一個(gè)表的標(biāo)識(shí)字段來(lái)取出表中的前十個(gè)記錄。這種操作會(huì) 導(dǎo)致失敗,比如說(shuō)6號(hào)記錄和7號(hào)記錄根本不存在。
四、刪除和修改表
要?jiǎng)h除一個(gè)表,你可以使用SQL語(yǔ)句DROP TABLE。例如,又從數(shù)據(jù)庫(kù)中徹底刪除表mytable,你要使用如下的語(yǔ)句:
DROP TABLE mytable
警告:
使用DROP TABLE命令時(shí)一定要小心。一旦一個(gè)表被刪除之后,你將無(wú)法恢復(fù)它。
當(dāng)你建設(shè)一個(gè)站點(diǎn)時(shí),你很可能需要向數(shù)據(jù)庫(kù)中輸入測(cè)試數(shù)據(jù)。而當(dāng)你準(zhǔn)備向世界提供你的網(wǎng)點(diǎn)時(shí),你會(huì)想清空表中的這些測(cè)試信息。如果你想清除表中的所有數(shù)據(jù)但不刪除這個(gè)表,你可以使用TRUNCATE TABLE語(yǔ)句。例如,下面的這個(gè)SQL語(yǔ)句從表mytable中刪除所有數(shù)據(jù):
TRUNCATE TABLE mytable
雖然你不能刪除和修改已經(jīng)存在的字段,但你可以增加新字段。最容易的實(shí)現(xiàn)方法是使用SQL事務(wù)管理器中的Manager Tables窗口。你也可以使用SQL語(yǔ)句ALTER TABLE。下面是一個(gè)如何使用這種語(yǔ)句的例子:
ALTER TABLE mytable ADD mynewcolumn INT NULL
這個(gè)語(yǔ)句向表mytable中增加了一個(gè)新字段mynewcolumn。當(dāng)你增加新字段時(shí),你必須允許它接受空值,因?yàn)楸碇性瓉?lái)可能已經(jīng)有了許多記錄。
參考文獻(xiàn):
百度百科-sql
一、系別表(Department表),SQL語(yǔ)句如下:
CREATE TABLE `department` (
`depNo` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘系別編號(hào)’,
`depName` varchar(100) DEFAULT NULL COMMENT ‘系名稱(chēng)’,
`depMan` varchar(50) DEFAULT NULL COMMENT ‘系主任’,
PRIMARY KEY (`depNo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
二、教師信息表(Teacher),SQL語(yǔ)句如下:
CREATE TABLE `teacher表` (
`tNo` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘教師編號(hào)’,
`tName` varchar(50) DEFAULT NULL COMMENT ‘姓名’,
`tSex` varchar(10) DEFAULT NULL COMMENT ‘性別’,
`tBirthDate` int(11) DEFAULT NULL COMMENT ‘出生日期’,
`tSalary` decimal(9,2) DEFAULT NULL COMMENT ‘工資’兆汪,
`tHairDate` int(11) DEFAULT NULL COMMENT ‘聘用日期’,
`depNo` int(11) DEFAULT NULL COMMENT ‘系別編號(hào)’,
PRIMARY KEY (`tNo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
擴(kuò)展資料:
CREATE TABLE 語(yǔ)句用于創(chuàng)建數(shù)據(jù)庫(kù)中的表。CREATE TABLE 語(yǔ)法如下:
CREATE TABLE 表名稱(chēng)
(
列名稱(chēng)1 數(shù)據(jù)類(lèi)型,
列名稱(chēng)2 數(shù)據(jù)類(lèi)型,
列名稱(chēng)3 數(shù)據(jù)類(lèi)型,
….
)
數(shù)據(jù)類(lèi)型(data_type)規(guī)定了列族租仔可容納何種數(shù)據(jù)類(lèi)型。常用的數(shù)據(jù)類(lèi)型如下:
(1)integer(size),int(size),allint(size),tinyint(size),僅容納整數(shù)。在括號(hào)內(nèi)規(guī)定數(shù)字的更大位數(shù)。
(2)decimal(size,d),numeric(size,d),容納帶有小數(shù)的數(shù)字?!眘ize” 規(guī)定數(shù)字的更大位數(shù)?!眃”型巖 規(guī)定小數(shù)點(diǎn)右側(cè)的更大位數(shù)。
(3)char(size),容納固定長(zhǎng)度的字符串(可容納字母、數(shù)字以及特殊字符)。在括號(hào)中規(guī)定字符串的長(zhǎng)度。
(4)varchar(size),容納可變長(zhǎng)度的字符串(可容納字母、數(shù)字以及特殊的字符)。在括號(hào)中規(guī)定字符串的更大長(zhǎng)度。
(5)date(yyyymmdd) ,容納日期。
CREATE TABLE 語(yǔ)句用于創(chuàng)建數(shù)據(jù)庫(kù)中的表。
具體用法為:
CREATE TABLE 表名稱(chēng)
(
列名稱(chēng)1 數(shù)據(jù)類(lèi)型,
列名稱(chēng)2 數(shù)據(jù)類(lèi)型,
列名稱(chēng)3 數(shù)據(jù)類(lèi)型,
….
)
擴(kuò)展資料
:
創(chuàng)建表數(shù)據(jù)類(lèi)型:
integer(size) int(size) allint(size) tinyint(size):僅容納整數(shù)。
decimal(size,d) numeric(size,d):容納帶有小數(shù)的數(shù)字。
char(size):容納固定長(zhǎng)度的櫻罩字符串
varchar(size):容納可變長(zhǎng)粗者度的巖頌薯字符串
date(yyyymmdd):容納日期。
參考資料
:
百度百科-SQL CREATE TABLE
關(guān)于數(shù)據(jù)庫(kù)創(chuàng)建表的代碼的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開(kāi)通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)。專(zhuān)業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流