版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、網(wǎng)頁(yè)程式設(shè)計(jì)PHP+MySQLCHAPTER 16 資料庫(kù)的SQL語(yǔ)法林佩蓉2008/05/122022/10/151網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲網(wǎng)頁(yè)程式設(shè)計(jì)PHP+MySQLCHAPTER 16 資料庫(kù)什麼是SQLSQL (Structure Query Language):幾乎所有的資料庫(kù)廠商都使用SQL為其標(biāo)準(zhǔn)的資料查詢語(yǔ)言。因此絕大部份電子商務(wù)的交易行為都會(huì)使用SQL語(yǔ)言所撰寫(xiě)程式碼來(lái)存取或查詢資料庫(kù)內(nèi)所存放之資料。上週所提到的phpMyAdmin可以利用圖形介面點(diǎn)選,並且自動(dòng)產(chǎn)生SQL語(yǔ)法,但是寫(xiě)程式控制資料庫(kù)的過(guò)程仍須瞭解SQL結(jié)構(gòu)。SQL常用的語(yǔ)法不外乎查詢、新增、修改、刪除,教材所
2、提到的語(yǔ)法並不複雜,且已足夠提供基本資料庫(kù)控制使用。請(qǐng)先連到此網(wǎng)址建立p16-5資料表 (test)2022/10/152網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲什麼是SQLSQL (Structure Query Lan2022/10/153網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲2022/10/113網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.1 哪裡用得到SQL語(yǔ)法在程式中,我們只要會(huì)用到資料庫(kù)存取的地方,一定要用SQL語(yǔ)法!通常會(huì)把SQL語(yǔ)法寫(xiě)在程式裡,再配合PHP的MySQL函數(shù)去進(jìn)行資料庫(kù)存取動(dòng)作。在phpMyAdmin中的SQL欄位中,也可以直接下SQL語(yǔ)法命令來(lái)管理MySQL,簡(jiǎn)單又好用。在windows的命令提示字元或M
3、S-DOS模式,或是Unix-like的終端機(jī)下,利用mysql指令進(jìn)入MySQL的操作介面亦可控制資料庫(kù),但一般使用者較少用。把SQL語(yǔ)法存成純文字檔案,利用phpMyAdmin中的匯入功能,把檔案匯入,此方法的優(yōu)點(diǎn)是,如果下次要處理類似的資料庫(kù)管理動(dòng)作,只要拿舊檔小改一下就可以再匯入使用了。2022/10/154網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.1 哪裡用得到SQL語(yǔ)法在程式中,我們只要會(huì)用到資料庫(kù)16.2 和資料庫(kù)相關(guān)的SQL語(yǔ)法以下為常見(jiàn)的SQL語(yǔ)法:show databases;顯示所有資料庫(kù)。create database資料庫(kù)名稱;開(kāi)一個(gè)新的資料庫(kù)drop資料庫(kù)名稱;刪除整個(gè)指定的資
4、料庫(kù),包含架構(gòu)、資料use資料庫(kù)名稱;選取某個(gè)資料庫(kù)show tables from資料庫(kù)名稱查看某資料庫(kù)底下所有的資料表有哪些。2022/10/155網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.2 和資料庫(kù)相關(guān)的SQL語(yǔ)法以下為常見(jiàn)的SQL語(yǔ)法:216.3 和資料表相關(guān)的SQL語(yǔ)法資料庫(kù)的指令較簡(jiǎn)單,資料表的管理指令比較複雜些,常見(jiàn)的指令如下:create table資料表名稱;建立資料表 (P16-5)create table資料表名稱 (欄位名稱1資料類型 欄位設(shè)定選項(xiàng),欄位名稱2資料類型 欄位設(shè)定選項(xiàng), 索引 欄位);drop table資料表名稱;刪掉整個(gè)資料表alter table資料表名稱 修
5、改內(nèi)容;修改資料表欄位optimize table資料表名稱;重新整理資料表內(nèi)容,常異動(dòng)的table作整理describe資料表名稱;顯示資料表的欄位設(shè)定show columns from資料表名稱;顯示某資料表的欄位設(shè)定show index from資料表名稱;顯示某資料表的索引欄位設(shè)定show tables;顯示目前作用中的資料表2022/10/156網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.3 和資料表相關(guān)的SQL語(yǔ)法資料庫(kù)的指令較簡(jiǎn)單,資料表16.3.1.1 欄位設(shè)定欄位名稱資料類型欄位設(shè)定選項(xiàng)num tinyint unsigned not null auto_increment primary
6、 key ,num就是欄位名稱必須根據(jù)您程式的需求來(lái)設(shè)定欄位tinyint (P15-4)則是資料類型看您的欄位值適合用什麼格式來(lái)存放not null auto_increment primary key則是欄位設(shè)定選項(xiàng),不見(jiàn)得每個(gè)欄位都有需要。欄位名稱和資料類型必須存在,設(shè)定選項(xiàng)視情況而定。本行SQL語(yǔ)法說(shuō)明詳見(jiàn)P16-102022/10/157網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.3.1.1 欄位設(shè)定欄位名稱資料類型欄位設(shè)定選項(xiàng)2常見(jiàn)的設(shè)定選項(xiàng)null (預(yù)設(shè))、not null無(wú)值設(shè)定,null是一種狀態(tài),就是沒(méi)有值的狀態(tài)!not null就是不允許欄位沒(méi)有值!所以通常會(huì)配合default預(yù)設(shè)值
7、來(lái)運(yùn)作。被設(shè)成索引的欄位是不允許null的!default 預(yù)設(shè)內(nèi)容設(shè)定欄位的預(yù)設(shè)值,也就是在新增資料時(shí),若沒(méi)有給欄位一個(gè)值,就會(huì)以預(yù)設(shè)值自動(dòng)填入。沒(méi)有給欄位一個(gè)值指的是在新增或替換時(shí),根本沒(méi)有指定該欄位,若是在新增時(shí)有指定該欄,但存到該欄位的是空字串的話,如此算是有給值的,就不算是給預(yù)設(shè)值。auto_increment自動(dòng)編號(hào)(加流水號(hào)),一個(gè)資料表只能有一個(gè)欄位使用auto_increment,而且此欄位必須是整數(shù)數(shù)值類型資料,而且這個(gè)欄位也必須設(shè)成索引!每次新一筆資料時(shí),此欄位就自動(dòng)加一。2022/10/158網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲常見(jiàn)的設(shè)定選項(xiàng)null (預(yù)設(shè))、not null20
8、22/16.3.1.2 資料庫(kù)索引沒(méi)有索引的資料表運(yùn)作起來(lái)效率可能會(huì)差了上百倍,就像書(shū)沒(méi)有目錄或是字典少了字母索引一樣,所以通常設(shè)好欄位後,我們會(huì)指定某一欄當(dāng)作是資料庫(kù)索引,用來(lái)加速讀取效率。通常會(huì)在建立資料表的時(shí)候順便指定索引欄,或是事後再利用create index的SQL語(yǔ)法來(lái)建立。2022/10/159網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.3.1.2 資料庫(kù)索引沒(méi)有索引的資料表運(yùn)作起來(lái)效率可能資料庫(kù)索引primary key (欄位名稱)主鍵索引,一個(gè)資料表也只能有一個(gè),因此,通常都設(shè)給有auto_increment的欄位,也就是流水號(hào)欄位。key 索引名稱 (欄位名稱一,欄位名稱二,.)ke
9、y和index相同,一個(gè)表可以有多個(gè)!若某個(gè)欄位常被用來(lái)當(dāng)作搜尋的關(guān)鍵,則可以設(shè)成key或index,也可以利用兩個(gè)以上的欄位來(lái)組成一個(gè)新的索引的!例如:key somebody (name, birthday); somebody是新建的索引,由name和birthday這兩個(gè)欄位的值所組成2022/10/1510網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲資料庫(kù)索引primary key (欄位名稱)2022/10資料庫(kù)索引unique 索引名稱 (欄位名稱一,欄位名稱二,.)不重複索引或唯一索引,也就是說(shuō)該欄位中的值是不能重複的,一個(gè)表可以有多個(gè)unique索引!可以利用兩個(gè)以上的欄位來(lái)組成一個(gè)新的uniq
10、ue索引。例如:學(xué)年和班級(jí)就可以組成一個(gè)unique索引,像是96學(xué)年度1年1班。一個(gè)表可以有多個(gè)unique索引,primary key也是不重複索引,但它只能設(shè)一個(gè)。例如:身份證或?qū)W號(hào)欄位等就可以成unique索引。2022/10/1511網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲資料庫(kù)索引unique 索引名稱 (欄位名稱一,欄位特殊字符這個(gè)符號(hào)通常在左邊數(shù)字鍵1的左邊,也就是和符號(hào)是同一個(gè)按鍵。在SQL語(yǔ)法中,若是有用到一些保留字一樣的字或者特殊字符,為了避免MySQL誤認(rèn)導(dǎo)致執(zhí)行錯(cuò)誤,因此需要用來(lái)括起來(lái)!例如SELECT * from select where select.id 100; SELEC
11、T : SQL的查詢語(yǔ)法select : 資料表名稱 為了怕混淆,所以把select包起來(lái),SQL就可以正常執(zhí)行 如果資料表或欄位沒(méi)有用到這一類的保留字,就不用加了請(qǐng)?jiān)趖est資料表多增加一個(gè)欄位”select”,並設(shè)值為1 ,再試著將筆記錄用SQL語(yǔ)法列出來(lái)。2022/10/1512網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲特殊字符這個(gè)符號(hào)通常在左邊數(shù)字鍵1的左邊,也就是和16.3.2 其他和建立資料表相關(guān)的語(yǔ)法create table if not exists資料表名稱 (.)在建立資料表的時(shí)候,檢查該表不存在才建立。CREATE TEMPORARY TABLE資料表名稱 (.)建立暫存資料表的用法,這種
12、資料表隨著使用者結(jié)束連線後,自己就會(huì)消失。在撰寫(xiě)SQL語(yǔ)法的時(shí)候要注意,括號(hào)中的每一行最後,都要有個(gè)”,”逗號(hào)隔開(kāi),但是最後一行不需要逗號(hào),否則會(huì)有錯(cuò)誤訊息喔!2022/10/1513網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.3.2 其他和建立資料表相關(guān)的語(yǔ)法create tab16.4 欄位資料存取的SQL語(yǔ)法資料存取、修改方法是最重要的,若要寫(xiě)一個(gè)結(jié)合MySQL資料庫(kù)的PHP程式,就要先搞懂怎麼用SQL語(yǔ)法讀取、寫(xiě)入、更改資料!為了方便各位按照教材SQL指令輸入,請(qǐng)先依P16-19的ALTER語(yǔ)法 先修改table名稱: ALTER TABLE test RENAME AS practice;插入:i
13、nsert into資料表名稱 欄位values(欄位值); insert into practice (name, sex, birthday, salary) values (“tad”,”男”,”1973/06/16”,35000); 因?yàn)閚um欄位會(huì)自動(dòng)新增流水號(hào),所以新增時(shí)不需要為此欄位輸入值。也可用省略的寫(xiě)法,但是要確定各個(gè)值有照欄位順序排列,但是懶人的寫(xiě)法是很容易出錯(cuò)的! insert into practice values(“ “,”tad”,”男”,”1973/06/16”,35000);注意: 以下SQL指令複製到phpMyAdmin須重新鍵入半形的 ”2022/10/1
14、514網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.4 欄位資料存取的SQL語(yǔ)法資料存取、修改方法是最重要2022/10/1515網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲2022/10/1115網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.4.1.2 一次新增數(shù)筆資料insert into practice (name,sex,birthday ,salary) values(apple,男,1973/06/10,25000),(tim,男,1972/01/10,50000),(hui,女,1980/03/07,35000);以上這一行,就可以一口氣輸入三筆資料!2022/10/1516網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.4.1.2 一次新增數(shù)筆
15、資料insert into p16.4.1.3 有空才寫(xiě)入insert LOW_PRIORITY into practice (name,sex,birthday ,salary) values(tad,男,1973/06/16,35000);若您是希望讓MySQL插入的動(dòng)作一定要等到?jīng)]有人在使用資料庫(kù)時(shí),MySQL才執(zhí)行插入動(dòng)作,那您可以在INSERT的後面加上:LOW_PRIORITY。例如:2022/10/1517網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.4.1.3 有空才寫(xiě)入insert LOW_PRIOR16.4.1.4 到一定的量再寫(xiě)入insert DELAYED into practice
16、(name,sex,birthday ,salary) values(tad,男,1973/06/16,35000);DELAYED則是會(huì)先把您的插入指令做一個(gè)預(yù)約動(dòng)作,等到這些指令的數(shù)目達(dá)到某一個(gè)量,MySQL才一口氣做完所有的插入動(dòng)作,這樣子的話,是有助於MySQL的效率改善的。若是您的資料庫(kù)並不是非常操的話,那這兩個(gè)關(guān)鍵字應(yīng)該是蠻少被用到的!2022/10/1518網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.4.1.4 到一定的量再寫(xiě)入insert DELAYE16.4.1.5 以前面的欄位值為值insert into practice (num,name,sex,birthday ,salary)
17、VALUES(5,alice,女,1976/12/01,30000+num*1000);請(qǐng)?jiān)囍鴪?zhí)行此行SQL指令後面的欄位值可以用前面欄位的值來(lái)做運(yùn)算產(chǎn)生喔!salary欄位的值,是以該筆資料的num乘以1000再加上30000來(lái)計(jì)算,此例的salary值應(yīng)該是35000。insert into practice (num, name,sex,birthday ,salary) VALUES(“alice”,“女”,“1976/12/01”,30000+num*1000); 不能這樣寫(xiě)喔! 因?yàn)閚um沒(méi)有值,所以計(jì)算式無(wú)效。2022/10/1519網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.4.1.5 以前
18、面的欄位值為值insert into 16.4.1.6 關(guān)於replaceREPLACE的用法和INSERT用法是一樣的,差別只在於,若是有規(guī)定欄位值不能重複的欄位(UNIQUE),REPLACE會(huì)直接用新資料把舊資料覆蓋掉! 而INSERT則是新增一筆。replace into 資料表名稱 (欄位1,欄位2.) values (值1,值2.) replace into practice (num, name, sex, birthday, salary) values (5, “huihui”,”女”,”1980/03/07”,40000);2022/10/1520網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲1
19、6.4.1.6 關(guān)於replaceREPLACE的用法和I16.4.1.6 關(guān)於replace若是像以下的例子,在primary key或unique沒(méi)有和別人重複的值,則以下SQL的replace指令執(zhí)行後的結(jié)果和用insert是一樣的。 replace into practice (num, name, sex, birthday, salary) values ( 7, “phebe”,”女”,”1973/03/10”,60000);2022/10/1521網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.4.1.6 關(guān)於replace若是像以下的例子,在pr常用的SQL語(yǔ)法結(jié)構(gòu)取代(P16-24):rep
20、lace into資料表名稱 欄位values(欄位值); 查詢(P16-26):select欄位from資料表名稱where查詢條件;加入(P16-23):insert into 資料表名稱 欄位 values (欄位值);更新(P16-33):update資料表名稱set欄位=新值where更新條件;刪除(P16-34):delete from資料表名稱where刪除條件;2022/10/1522網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲常用的SQL語(yǔ)法結(jié)構(gòu)取代(P16-24):replace i16.4.2 讀出資料的SQL語(yǔ)法select指令是最常用到SQL語(yǔ)法,它的變化很多,指令格式上要多注意!SEL
21、ECT 查詢的欄位 FROM 資料表名稱 附加的篩選條件附加的篩選條件有以下幾個(gè)東西可以拿來(lái)篩選資料!注意喔!由上到下就是其語(yǔ)法的先後順序喔!where 篩選條件group by 欄位名稱having group的篩選條件order by unsigned_integer | 欄位名稱 | formula asc | desc ,.limit 起點(diǎn), 筆數(shù)2022/10/1523網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.4.2 讀出資料的SQL語(yǔ)法select指令是最常用到16.4.2.1 SELECT讀出範(fàn)例讀出所有資料:select * from practice;只找部份欄位資料:select na
22、me,salary from practice;加入篩選條件:select name,birthday,salary from practice where sex=男;select name,birthday,salary from practice where sex=男 and salary 30000;2022/10/1524網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.4.2.1 SELECT讀出範(fàn)例讀出所有資料:202216.4.2.1 SELECT讀出範(fàn)例以某欄位為群組:select salary from practice group by salary;group by會(huì)把salary欄位相
23、同的值當(dāng)作一個(gè)群組group by的結(jié)果等於找出欄位的不同值,用distinct關(guān)鍵字指令其實(shí)更單純,不需要用group by:select distinct salary from practice;2022/10/1525網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.4.2.1 SELECT讀出範(fàn)例以某欄位為群組:202MySQL的count( )函數(shù)通??梢岳胏ount ( )函數(shù),了解資料庫(kù)中,某種資料的分佈情況,配合group by更能求出該群的數(shù)目:select salary, count (salary) from practice group by salary2022/10/1526網(wǎng)頁(yè)程
24、式設(shè)計(jì)-日資工二甲MySQL的count( )函數(shù)通??梢岳胏ount ( 16.4.2.5 和 group by 一起用的函數(shù)有幾個(gè)MySQL函數(shù)是可以視情況配合group by使用,如果計(jì)算以下數(shù)值可單獨(dú)使用,若要算出各群組的相關(guān)結(jié)果則可和group by一起配合COUNT(欄位):計(jì)算該欄位值的數(shù)目,COUNT(*)非??欤梢运愠鏊械馁Y料有幾筆 select count(salary) from practice;#6AVG(欄位):計(jì)算該欄位值的平均值 select avg(salary) from practice;#40833.3333SUM(欄位):計(jì)算該欄位值的總和 se
25、lect sum(salary) from practice;#245000MIN(欄位):找出該欄位值的最小值 select min(salary) from practice;#250002022/10/1527網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.4.2.5 和 group by 一起用的函數(shù)有幾個(gè)M16.4.2.5 和 group by 一起用的函數(shù)MAX(欄位):找出該欄位值的最大值 select max(salary) from practice;#60000STD(欄位):計(jì)算該欄位值的標(biāo)準(zhǔn)差 select std(salary) from practice;#11334.5588 ST
26、DDEV(欄位):計(jì)算該欄位值的標(biāo)準(zhǔn)差(為了與Oracle相容的函數(shù)) select stddev(salary) from practice; #11334.5588 . 2022/10/1528網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.4.2.5 和 group by 一起用的函數(shù)MAX(16.4.2.6 用having篩選group by 的結(jié)果select salary, count(salary) as sc from practice group by salary having sc1having通常和 group by 一起使用,他的用法和where很像,都是用來(lái)做值的篩選。唯一的差別是:
27、having是在MySQL傳回結(jié)果後才進(jìn)行篩選。count(salary)用as設(shè)定一個(gè)別名為sc,sc代表篩選出來(lái)的個(gè)數(shù)having sc 1篩選出個(gè)數(shù)在1以上的資料,所以得到的只有35000這個(gè)值,也就是只有35000這個(gè)值才有2筆以上的記錄2022/10/1529網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.4.2.6 用having篩選group by 的結(jié)果16.4.2.7 針對(duì)欄位值排序select name,birthday from practice order by birthday;select name,birthday from practice order by birthday d
28、esc;查詢practice資料表中name,birthday欄位的資料,並且以birthday欄位為準(zhǔn)來(lái)排序(order by birthday),若沒(méi)特別指定,排序的方式都是從小到大(asc)來(lái)進(jìn)行排序。從大排到小怎麼辦?很簡(jiǎn)單,加入desc就行了2022/10/1530網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.4.2.7 針對(duì)欄位值排序select name,bi16.4.2.8 限制輸出筆數(shù)select * from practice limit 0,3用limit來(lái)限制列出資料的筆數(shù)是很常見(jiàn)的用法,尤其在做資料分頁(yè)的時(shí)候更是常用!limit後面有兩個(gè)數(shù)字,第一個(gè)數(shù)字代表的是筆數(shù)起點(diǎn),第二個(gè)數(shù)字是
29、列出筆數(shù)!也就是說(shuō)limit 0,3就是從第0筆資料開(kāi)始讀,一次讀3筆的意思!我們眼中的第一筆資料在MySQL中指的是第0筆select * from practice limit 2,32022/10/1531網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.4.2.8 限制輸出筆數(shù)select * from p16.4.2.9 隨機(jī)取出資料select num,name,sex from practice order by rand() limit 0,3;這功能也蠻常用到,例如我們要從資料庫(kù)隨便抽出三個(gè)人來(lái)出公差,那麼我們可以利用order by rand()搭配limit來(lái)達(dá)到隨機(jī)取出三人的目的。rand
30、()是MySQL的函數(shù),order by rand()的意思就是說(shuō),順序隨便亂排,所以每次執(zhí)行秀出來(lái)的結(jié)果順序一定會(huì)不一樣,然後,我們每次只取前三筆資料,如此就達(dá)成了隨機(jī)取三人的目的囉!2022/10/1532網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.4.2.9 隨機(jī)取出資料select num,name16.4.2.10 找出NULL值select * from practice where salary is null要想尋找NULL值方法比較特別,您必須使用IS NULL測(cè)試,而非 where xxx=null。以上都是select 指令基本的用法。2022/10/1533網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲1
31、6.4.2.10 找出NULL值select * from16.3.3 修改資料表的方法資料表建立好之後,難免需要修改,也不可能要使用者直接用phpMyAdmin修改結(jié)構(gòu),我們可以利用php函數(shù)來(lái)執(zhí)行修改資料表結(jié)構(gòu)的語(yǔ)法,因此,學(xué)習(xí)如何修改資料表的結(jié)構(gòu)是很重要的!新增欄位:ALTER TABLE資料表名稱 ADD欄位名稱 資料型態(tài) 欄位設(shè)定選項(xiàng) FIRST | AFTER欄位名稱 ALTER TABLE practice ADD tel varchar(50) AFTER name;說(shuō)明: 在practice資料表中,在name欄位後面新增一個(gè)tel欄位,並設(shè)定其資料型態(tài)為varchar(50
32、),沒(méi)有欄位設(shè)定選項(xiàng)。2022/10/1534網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.3.3 修改資料表的方法資料表建立好之後,難免需要修改16.3.3.2 新增主鍵索引ALTER TABLE資料表名稱 ADD PRIMARY KEY (欄位名稱,.)說(shuō)明: 除非當(dāng)初建立資料表時(shí),沒(méi)有建立primary key,否則此語(yǔ)法是很少用的,若已經(jīng)有primary key就無(wú)法用此語(yǔ)法! 而且設(shè)定primary key 的欄位不可以是空值。ALTER TABLE test ADD primary key (num);#1068 - Multiple primary key defined 2022/10/153
33、5網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.3.3.2 新增主鍵索引ALTER TABLE資料表名16.3.3.3 新增一般索引ALTER TABLE資料表名稱 ADD INDEX 索引名稱 (欄位名稱,.)索引名稱就是替索引取個(gè)名字,可有可無(wú),一般設(shè)定和欄位同名即可ALTER TABLE practice ADD INDEX (name);2022/10/1536網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.3.3.3 新增一般索引ALTER TABLE資料表名16.3.3.4 新增唯一索引ALTER TABLE資料表名稱 ADD UNIQUE 索引名稱 (欄位名稱,.)說(shuō)明:新增UNIQUE(不重複索引或唯一索引),
34、索引名稱一樣可有可無(wú), 一般設(shè)定和欄位同名即可ALTER TABLE practice ADD UNIQUE (tel);2022/10/1537網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.3.3.4 新增唯一索引ALTER TABLE資料表名16.3.3.5 更改欄位預(yù)設(shè)值A(chǔ)LTER TABLE資料表名稱 ALTER COLUMN col_name SET DEFAULT預(yù)設(shè)值 | DROP DEFAULT說(shuō)明:更改欄位預(yù)設(shè)值,COLUMN不加也可以,可以替欄位加入預(yù)設(shè)值(SET DEFAULT預(yù)設(shè)值)或是移除預(yù)設(shè)值(DROP DEFAULT)ALTER TABLE practice ALTER sex
35、SET DEFAULT 女;2022/10/1538網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.3.3.5 更改欄位預(yù)設(shè)值A(chǔ)LTER TABLE資料表16.3.3.6更改欄位名稱、設(shè)定ALTER TABLE資料表名稱 CHANGE COLUMN 舊欄位名稱 新欄位設(shè)定說(shuō)明:更改欄位名稱、設(shè)定(或是以新欄位取代舊欄位), COLUMN不加也可以,這等於是把某個(gè)舊欄位重新以另一個(gè)欄位來(lái)取代的意思說(shuō)明:新欄位設(shè)定,和建立資料表時(shí),欄位的設(shè)定方法一樣,包括”欄位名稱” 、”資料屬性” 、”和欄位設(shè)定選項(xiàng)” 。COLUMN不加一樣可以執(zhí)行ALTER TABLE practice CHANGE COLUMN tel p
36、id varchar(10) UNIQUE;2022/10/1539網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.3.3.6更改欄位名稱、設(shè)定ALTER TABLE資料16.3.3.7 修改欄位設(shè)定ALTER TABLE資料表名稱 MODIFY COLUMN 欄位設(shè)定說(shuō)明: 修改欄位設(shè)定,COLUMN不加也可以,後面的”欄位設(shè)定”和建立資料表時(shí),欄位的定方法是一樣的,包括”欄位名稱” 、”資料屬性”和”欄位定選項(xiàng)” 。ALTER TABLE practice MODIFY pid varchar(10) not null default ;在practice資料表中,把欄位pid修改成varchar(10),
37、並將null的設(shè)定改成not null,順便設(shè)定預(yù)設(shè)值為空字串。2022/10/1540網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.3.3.7 修改欄位設(shè)定ALTER TABLE資料表名16.3.3.8 刪除一個(gè)欄位ALTER TABLE資料表名稱 DROP COLUMN 欄位名稱說(shuō)明: 刪除一個(gè)欄位,COLUMN不加也可以,只要指定好”欄位名稱”給它,它就會(huì)刪指定的欄位。ALTER TABLE practice DROP pid;2022/10/1541網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.3.3.8 刪除一個(gè)欄位ALTER TABLE資料表名16.3.3.9 刪除主鍵索引ALTER TABLE資料表名稱 DRO
38、P PRIMARY KEY說(shuō)明: 因?yàn)閜rimary key只有一個(gè),所以不需要額外指定就知道要?jiǎng)h那一個(gè)了ALTER TABLE practice DROP PRIMARY KEY;知道語(yǔ)法就好,別真的去執(zhí)行??!刪除一般索引:ALTER TABLE資料表名稱 DROP INDEX索引名稱只要指定索引名稱就能刪掉該索引ALTER TABLE practice DROP INDEX name;2022/10/1542網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.3.3.9 刪除主鍵索引ALTER TABLE資料表名16.3.3.11修改資料表名稱ALTER TABLE資料表名稱 RENAME AS 新資料表名稱說(shuō)
39、明:修改資料表名稱,只要指定新資料表名稱,就能把資料表的名稱改成新的名稱,其中AS有沒(méi)有都無(wú)所謂。ALTER TABLE test RENAME as practice;2022/10/1543網(wǎng)頁(yè)程式設(shè)計(jì)-日資工二甲16.3.3.11修改資料表名稱ALTER TABLE資料表16.4.3 修改資料的SQL語(yǔ)法修改某一筆資料內(nèi)容可用update語(yǔ)法update 資料表名稱 set 欄位1=值1,欄位2=值2,. where 篩選條件 limit 筆數(shù)update practice set salary=“52000”, birthday=“1972/03/10” where num=4;改成2022/10/1
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村土地租賃合同:農(nóng)業(yè)觀光園
- 五一全民健身活動(dòng)方案策劃
- 農(nóng)田租賃續(xù)簽合同
- 船舶修理網(wǎng)架施工合同
- 重慶市心理咨詢室租賃合同
- 城市照明聯(lián)合施工合同
- 環(huán)保產(chǎn)品銷售合同評(píng)審模板
- 2024年IT行業(yè)勞務(wù)合同模板3篇
- 2024年機(jī)械產(chǎn)品代銷協(xié)議
- 2024年版工程項(xiàng)目進(jìn)度條款協(xié)議版B版
- 期末模擬卷01(全國(guó)適用)-【中職專用】高二語(yǔ)文上學(xué)期職業(yè)模塊期末模擬卷(解析版)
- 漏洞修復(fù)策略優(yōu)化
- 手術(shù)安全培訓(xùn)
- 司機(jī)聘用協(xié)議書(shū)與司機(jī)聘用合同
- 汽車吊安全教育培訓(xùn)
- 浙江省寧波市慈溪市2023-2024學(xué)年高二上學(xué)期期末考試 物理 含解析
- 2024七年級(jí)數(shù)學(xué)上冊(cè)第4章相交線與平等線項(xiàng)目學(xué)習(xí)2包裝中的智慧習(xí)題課件新版華東師大版
- 2024湖南田漢大劇院事業(yè)單位招聘若干人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 碼頭安全生產(chǎn)知識(shí)培訓(xùn)
- 公司招商部工作流程及管理制度
- 漢語(yǔ)閱讀教程第一冊(cè)第十二課
評(píng)論
0/150
提交評(píng)論