版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
好久沒有整理東西,感覺自己越來越懶,正好近期有個(gè)MYSQL的項(xiàng)目(一個(gè)ORACLE
的應(yīng)用遷移到MYSQL),以前沒有接觸過MYSQL,但是也知道MYSQL數(shù)據(jù)庫目前廣
泛的應(yīng)用在各種個(gè)人、商務(wù)系統(tǒng)中,各種技術(shù)都比較成熟。把自己學(xué)習(xí)的一些過
程總結(jié)一下,該文章設(shè)計(jì)到的內(nèi)容都沒有做太詳細(xì)的闡述,只是一個(gè)簡單的入門
手冊,如果想看更多內(nèi)容可以參看MYSQL的聯(lián)機(jī)手冊。
一zhouwf0726
2007-06-5
第一章MYSQL安裝
MYSQL命令規(guī)則介紹:
MySQL的命名機(jī)制使用由3個(gè)數(shù)字和一個(gè)后綴組成的版本號。例如,像
mysql-5.0.27-beta的版本號這樣解釋:
第1個(gè)數(shù)字(5)是主版本號,描述了文件格式。所有版本5的發(fā)行都有相同的文
件格式。
第2個(gè)數(shù)字(0)是發(fā)行級別。主版本號和發(fā)行級別組合便構(gòu)成了發(fā)行序列號。
第3個(gè)數(shù)字(9)是在此發(fā)行系列的版本號,隨每個(gè)新分發(fā)版遞增。通常你需要已
經(jīng)選擇的發(fā)行(release)的最新版本(版本)。
MYSQL安裝:
先下載安裝包(MySQLAB編譯的MySQL二進(jìn)制版本):
mysql-5.0.27-win32.zip
mysql-noinstall-6.0.0-alpha-\vin32.zip
下載了2個(gè)版本:一個(gè)5.0.27安裝版;一個(gè)6.0.0非安裝版。本人測試用的為
5.0.27安裝版,安裝過程不再贅述。各個(gè)操作系統(tǒng)平臺的安裝可以看MYSQL聯(lián)
機(jī)文檔。
安裝后文件布局:
在Windows中,MySQL5.1的默認(rèn)安裝目錄是C:\ProgramFiles\MySQL\MySQL
Server5.1。(一些Windows用戶寧愿安裝到原來的默認(rèn)安裝目錄C:\mysqlo
然而,子目錄布局仍然相同)。安裝目錄包括以下子目錄:
0^目錄內(nèi)容
bin客戶端程序和mysqld服務(wù)器
data日志文件,數(shù)據(jù)庫
Docs文檔
examples示例程序和腳本
include包含(頭)文件
lib庫
scripts實(shí)用工具腳本
share錯(cuò)誤消息文件
第二章登錄及一些基本操作
本章的主要目的是讓我們對MYSQL的基礎(chǔ)框架有個(gè)大概的了解。
1連接與斷開MYSQL服務(wù)器
安裝完畢登陸MYSQL(有過一些其他數(shù)據(jù)庫基礎(chǔ)的人都應(yīng)該很容易使用這幾步):
我們可以利用如下參數(shù)查看MYSQL命令的幫助:
C:\ProgramFiles\MySQL\MySQLServer5.O\bin>mysql-help
聯(lián)接MYSQL服務(wù)器:
C:\ProgramFi1es\MySQL\MySQLServer5.O\bin>mysql-hlocalhost-uroot
WelcometotheMySQLmonitor.Commandsendwith;or\g.
YourMySQLconnectionidis22toserverversion:5.0.27-community-nt
Type'help;'or'\h'forhelp.Type'\c'toclearthebuffer.
mysql>SHOWDATABASES;
++
|Database
4F
|information_schema|
Imysql
|root
3rowsinset(0.08sec)
安裝完畢,都會有這幾個(gè)默認(rèn)的數(shù)據(jù)庫。
注意到目前沒有連接到任何數(shù)據(jù)庫。
mysql>SELECTDATABASE();
++
Idatabase()
++
INULL|
++
1rowinset(0.78sec)
mysql>QUIT
Bye
我們也可以在連接MYSQL服務(wù)器的時(shí)候指定想要連接的數(shù)據(jù)庫,如下:
C:\ProgramFiles\MySQL\MySQLServer5.0\bin>mysql--user=root-pmysql
Enterpassword:******
WelcometotheMySQLmonitor.Commandsendwith;or\g.
YourMySQLconnectionidis7toserverversion:5.0.27-community-nt
Type'help;'or'\h'forhelp.Type'\c'toclearthebuffer.
mysql>selectdatabase();
++
Idatabase()
++
ImysqlI
++
1rowinset(0.00sec)
INFORMATION_SCHEMA數(shù)據(jù)庫
我們在介紹MYSQL基本操作的同時(shí)順便把INFORMATION_SCHEM數(shù)據(jù)庫做個(gè)簡單介紹:
類似其他數(shù)據(jù)庫的數(shù)據(jù)字典,各個(gè)字典含義不做詳述,以下摘自MYSQL聯(lián)機(jī)文檔:
INFORMATION_SCHEMA提供了訪問數(shù)據(jù)庫元數(shù)據(jù)的方式。
元數(shù)據(jù)是關(guān)于數(shù)據(jù)的數(shù)據(jù),如數(shù)據(jù)庫名或表名,列的數(shù)據(jù)類型,或訪問權(quán)限等。
有些時(shí)候用于表述該信息的其他術(shù)語包括“數(shù)據(jù)詞典”和
“系統(tǒng)目錄"。INFORMATION_SCHEMA是信息數(shù)據(jù)庫,其中保存著關(guān)于MySQL服務(wù)
器所維護(hù)的所有其他數(shù)據(jù)庫的信息。在INFORMATION_SCHEMA
中,有數(shù)個(gè)只讀表。它們實(shí)際上是視圖,而不是基本袤,因此,你將無法看到與
之相關(guān)的任何文件。
2使用數(shù)據(jù)庫
mysql>USEINFORMATION_SCHEMA;
Databasechanged
mysql>SELECTDATABASE();
4F
|database()
4h
information_schema|
1rowinset(0.00sec)
mysql>SELECTVERSION(),CURRENT_DATE,CURDATEO,N0W(),USER();
「八---i
|VERSION()|CURRENTDATE|CURDATEO|NOW()
IUSERO
I____________________________________
,++?
I5.0.27-community-nt|2007-05-24|2007-05-24|2007-05-2417:01:16
|root@l
ocalhost|
1rowinset(0.01sec)
mysql>SHOWVARIABLESLIKEJversion;
+++
IVariable_name|Value
+++
Iversion|5.0.27-community-nt|
+++
1rowinset(0.13sec)
3MYSQL的SHOW命令
前邊的例子中我們已經(jīng)用過了MYSQL的SHOW命令:
mysql>SHOWDATABASES;
SHOW命令可用于獲取關(guān)于INFORMATION_SCHEMA本身結(jié)構(gòu)的信息。
一些SHOW語句允許使用FROM、WHERE字句,這樣,在指定需要顯示的行時(shí),可
更為靈活。下邊給出部分例子:
mysql>SHOWTABLESFROMMYSQL;
|Tables_in_mysql
++
Icolumns_priv
Idb
Ifunc
Ihelp_category
|help_keyword
Ihelp_relation
Ihelp_topic
|host
Iproc
|procs_priv
Itables_priv
|time_zone
time_zone_leap_second
|time_zone_name
time_zone_transition
|time_zone_transition_type|
Iuser
++
17rowsinset(0.00sec)
mysql>SHOWTABLES;
+4
ITables_in_information_schema
+4
|CHARACTER_SETS|
|COLLATIONS|
ICOLLATION_CHARACTER_SET_APPLICABILITY|
ICOLUMNS
|COLUMN_PRIVILEGES
KEY_COLUMN_USAGE
ROUTINES
SCHEMATA
SCHEMA_PRIVILEGES
STATISTICS
TABLES
TABLE_CONSTRAINTS
TABLE_PRIVILEGES
TRIGGERS
USER_PRIVILEGES
VIEWS
16rowsinset(0.00sec)
SHOWTABLES命令顯示了當(dāng)前用數(shù)據(jù)庫中的數(shù)據(jù)庫對象列表,而從TABLES視圖
的查詢我們將得到所有數(shù)據(jù)庫下的對象列表。這個(gè)例子就是給出了一個(gè)查詢
MYSQL的表相關(guān)的系統(tǒng)視圖,類似ORACLE中的(DBA_TABLES、USER_TABLES)和
SYBASE中的SYSOBJECTSo
mysql>SELECTTABLE_NAME,TABLE_TYPE,ENGINEFROMTABLES;
+4卜T卜+
table_nametable_typeengine
++4+
|CHARACTER_SETS|SYSTEMVIEWMEMORY|
|COLLATIONSSYSTEMVIEWMEMORY|
COLLATION_CHARACTER?SET_APPLICABILITYSYSTEMVIEWMEMORY
COLUMNSSYSTEMVIEWMylSAM
COLUMN_PRIVILEGESSYSTEMVIEWMEMORY
KEY_COLUMN_USAGESYSTEMVIEWMEMORY|
ROUTINESSYSTEMVIEWMylSAM
SCHEMATASYSTEMVIEWMEMORY
SCHEMA_PRIVILEGESSYSTEMVIEWMEMORY
STATISTICSSYSTEMVIEWMEMORY|
TABLESSYSTEMVIEWMEMORY
TABLE_CONSTRAINTSSYSTEMVIEWMEMORY|
TABLE_PRIVILEGESSYSTEMVIEWMEMORY|
TRIGGERSSYSTEMVIEWMylSAM|
USER-PRIVILEGESSYSTEMVIEWMEMORY|
|VIEWSSYSTEMVIEWMylSAM
columnsprivBASETABLEMylSAM
1dbBASETABLEMylSAM|
|funcBASETABLEMylSAM
help_categoryBASETABLEMylSAM
help_keyword|BASETABLE|MylSAM
help_relationBASETABLEMylSAM
help_topicBASETABLEMylSAM
hostBASETABLEMylSAM
procBASETABLEMylSAM
procs_privBASETABLEMylSAM
tables_privBASETABLEMylSAM
time_zoneBASETABLEMylSAM
time_zone_leap_secondBASETABLEMylSAM
time_zone_nameBASETABLEMylSAM
time_zone_transitionBASETABLEMylSAM
time_zone_transition_typeBASETABLEMylSAM
userBASETABLEMylSAM
+4—
33rowsinset(0.03sec)
mysql>SHOWCOLUMNSFROMTABLES;
411111H
|FieldTypeNullKeyDefaultExtra|
?
|TABLE_CATALOGvarchar(512)YESNULL1
TABLE_SCHEMAvarchar(64)NO1
TABLE_NAMEvarchar(64)NO1
TABLE_TYPEvarchar(64)NO11
ENGINEvarchar(64)YESNULL1
VERSIONbigint(21)YESNULL1
ROW_FORMATvarchar(10)YESNULL1
TABLE_ROWSbigint(21)YESNULL1
AVG_ROW_LENGTHbigint(21)|YESNULL1
DATA_LENGTHbigint(21)|YESNULL1
MAX_DATA_LENGTHbigint(21)|YESNULL1
INDEX_LENGTHbigint(21)|YESNULL1
DATA_FREEbigint(21)|YESNULL1
AUTO_INCREMENTbigint(21)|YESNULL1
CREATE_TIMEdatetimeYESNULL1
UPDATE_TIMEdatetimeYESNULL1
CHECK_TIMEdatetime|YESNULL1
TABLE_COLLATIONvarchar(64)YESNULL1
CHECKSUMbigint(21)YESNULL1
CREATE,OPTIONSvarchar(255)YESNULLI1
TABLE_COMMENTvarchar(80)NO1
+卜+H卜H卜T卜+
21rowsinset(0.06sec)
mysql>SHOWCHARACTERSET;
++
Charset|DescriptionDefaultcollationMaxlen
1,L11
11?1
——十
1big5|Big5TraditionalChinesebig5_chinese_ci2
1
|dec8|DECWestEuropeandec8_swedish_ci1
1
|cp850|DOSWestEuropeancp850_general_ci1
1
1hp8|HPWestEuropeanhp8_english_ci1
1
|koi8r|KOI8-RRelcomRussiankoi8r_general_ci1
1
|latinl|cpl252WestEuropeanlatinl_swedish_ci1
1
latin2ISO8859-2CentralEuropean|latin2_general_ci1
1
|swe7|7bitSwedishswe7_swedish_ci1
1
|ascii|USASCIIascii_general_ci1
1
1ujis|EUC-JPJapaneseujis_japanese_ci3
1
1sjis|Shift-JISJapanesesjis_japanese_ci2
1
Ihebrew|ISO8859-8Hebrewhebrew_general_ci1
1
|tis620|TIS620Thaitis620_thai_ci1
1
|euckr|EUC-KRKoreaneuckr_korean_ci2
1
|koi8u|K0I8-UUkrainiankoi8u_general_ci1
1
|gb2312|GB2312SimplifiedChinesegb2312_chinese_ci2
1
|greek|ISO8859-7Greekgreek_general_ci1
1
|cpl250|WindowsCentralEuropeancpl250_general_ci1
1
1gbk|GBKSimplifiedChinesegbk_chinese_ci12
1
|latin5|ISO8859-9Turkish1atin5_turkish_ci11
1
|armscii8|ARMSCII-8Armenianarmscii8_general_ci11
1
Iutf8|UTF-8Unicodeutf8_general_ci13
1
Iucs2|UCS-2Unicodeucs2_general_ci12
1
Icp866|DOSRussiancp866_general_ci11
1
keybcs2|DOSKamenickyCzech-Slovakkeybcs2_general_ci11
1
|macce|MacCentralEuropeanmacce_general_ci11
1
|macroman|MacWestEuropeanmacroman_general_ci11
1
|cp852|DOSCentralEuropeancp852_general_ci11
1
|latin7ISO8859-13Balticlatin7_general_ci11
1
Icpl251|WindowsCyrilliccpl251_general_ci11
1
Icpl256|WindowsArabiccpl256_general_ci11
1
|cpl257|WindowsBalticcpl257_general_ci11
1
|binary|Binarypseudocharsetbinary11
1
geostd8|GE0STD8Georgiangeostd8_general_ci11
1
Icp932SJISforWindowsJapanese|cp932_japanese_ci12
1
|eucjpmsUJISforWindowsJapaneseeucjpms_japanese_ci13
1
11j1.1
——十
36rowsinset(0.00sec)
mysql>SHOWCHARACTERSETlike'big5';
1
|CharsetDescription1DefaultcollationMaxlen
mysql>SHOWGRANTSFORROOT;
IGrantsforroot@%
|GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP,RELOAD,SHUTDOWN,
PROCESS,
FILE,REFERENCES,INDEX,ALTER,SHOWDATABASES,SUPER,CREATETEMPORARY
TABLES,
LOCKTABLES,EXECUTE,REPLICATIONSLAVE,REPLICATIONCLIENTON*.*TO
'root'%
'IDENTIFIEDBYPASSWORD'*DA28842831B3C4OF4BC1D3C76CF9AD8CBFDAE1CB,
WITHGRANT
OPTION|
+
1rowinset(0.00sec)
我們也可以通過查詢系統(tǒng)表來獲得用戶的權(quán)限:
mysql>SELECT*FROMUSER_PRIVILEGES;
下邊給出了MYSQL的權(quán)限列表功參考:
PrivilegeMeaning
ALL
Setsal1simpleprivilegesexceptGRANTOPTION
[PRIVILEGES]
ALTEREnablesuseofALTERTABLE
ALTERROUTINEEnablesstoredroutinestobealteredordropped
CREATEEnablesuseofCREATETABLE
CREATEROUTINEEnablescreationofstoredroutines
CREATE
TEMPORARYEnablesuseofCREATETEMPORARYTABLE
TABLES
EnablesuseofCREATEUSER,DROPUSER,RENAMEUSER,andREVOKEALL
CREATEUSER
PRIVILEGES.
CREATEVIEWEnablesuseofCREATEVIEW
DELETEEnablesuseofDELETE
DROPEnablesuseofDROPTABLE
EXECUTEEnablestheusertorunstoredroutines
FILEEnablesuseofSELECT...INTOOUTFILEandLOADDATAINFILE
INDEXEnablesuseofCREATEINDEXandDROPINDEX
INSERTEnablesuseofINSERT
EnablesuseofLOCKTABLESontablesforwhichyouhavetheSELECT
LOCKTABLES
privilege
PROCESSEnablesuseofSHOWFULLPROCESSLIST
REFERENCESNotimplemented
RELOADEnablesuseofFLUSH
REPLICATION
Enablestheusertoaskwhereslaveormasterserversare
CLIENT
REPLICATIONNeededforreplicationslaves(toreadbinarylogeventsfromthe
SLAVEmaster)
SELECTEnablesuseofSELECT
SHOWDATABASESSHOWDATABASESshowsal1databases
SHOWVIEWEnablesuseofSHOWCREATEVIEW
SHUTDOWNEnablesuseofmysqladminshutdown
EnablesuseofCHANGEMASTER,KILL,PURGEMASTERLOGS,andSETGLOBAL
SUPERstatements,themysqladmindebugcommand;allowsyoutoconnect(once)
evenifmax_connectionsisreached
UPDATEEnablesuseofUPDATE
USAGESynonymfor“noprivileges”
GRANTOPTIONEnablesprivilegestobegranted
關(guān)于SHOW命令我們就簡單介紹這么幾個(gè),如果想知道更多的SHOW命令可以得到
的信息內(nèi)容可以執(zhí)行如下命令來獲取幫助或者參看MYSQL的聯(lián)機(jī)文檔第23章:
INFORMATIONSCHEMA信息數(shù)據(jù)庫。
mysql>HELPSHOW
Name:"SHOW'
Description:
SHOWhasmanyformsthatprovideinformationaboutdatabases,tables,
columns,orstatusinformationabouttheserver.Thissectiondescribes
thosefollowing:
SHOW[FULL]COLUMNSFROMtbl_name[FROMdb_name][LIKE'pattern)]
SHOWCREATEDATABASEdbname
SHOWCREATEFUNCTIONfuncname
SHOWCREATEPROCEDUREprocname
SHOWCREATETABLEtbl_name
SHOWDATABASES[LIKE'pattern']
SHOWENGINEengine_name{LOGS|STATUS}
SHOW[STORAGE]ENGINES
SHOWERRORS[LIMIT[offset,]row_count]
SHOWFUNCTIONSTATUS[LIKE'pattern)]
SHOWGRANTSFORuser
SHOWINDEXFROMtblname[FROMdbname]
SHOWINNODBSTATUS
SHOWPROCEDURESTATUS[LIKE'pattern']
SHOW[BDB]LOGS
SHOWMUTEXSTATUS
SHOWPRIVILEGES
SHOW[FULL]PROCESSLIST
SHOW[GLOBAL|SESSION]STATUS[LIKE'pattern']
SHOWTABLESTATUS[FROMdb_name][LIKE'pattern']
SHOW[OPEN]TABLES[FROMdb_name][LIKE'pattern]
SHOWTRIGGERS
SHOW[GLOBAL|SESSION]VARIABLES[LIKE'pattern']
SHOWWARNINGS[LIMIT[offset,]row_count]
TheSHOWstatementalsohasformsthatprovideinformationabout
replicationmasterandslaveserversandaredescribedin[HELPPURGE
MASTERLOGS]:
SHOWBINARYLOGS
SHOWBINLOGEVENTS
SHOWMASTERSTATUS
SHOWSLAVEHOSTS
SHOWSLAVESTATUS
IfthesyntaxforagivenSHOWstatementincludesaLIKE'pattern,
part,'pattern'isastringthatcancontaintheSQL%'and
wildcardcharacters.Thepatternisusefulforrestrictingstatement
outputtomatchingvalues.
SeveralSHOWstatementsalsoacceptaWHEREclausethatprovidesmore
flexibilityinspecifyingwhichrowstodisplay.See
/doc/refman/5.0/en/extended-show.html.
4創(chuàng)建用戶數(shù)據(jù)庫
mysql>CREATEDATABASEMYTEST;
QueryOK,1rowaffected(0.00sec)
如果想改變MYSQL數(shù)據(jù)文件的默認(rèn)路徑,我們可以關(guān)閉MYSQL實(shí)例,修改配置文
件”f"或"my.ini”(WINDOWS系統(tǒng))中的datadir對應(yīng)的參數(shù)值,然后
把MYSQL默認(rèn)安裝的datadir下的內(nèi)容拷貝到新的數(shù)據(jù)文件路徑下,啟動(dòng)MYSQL
實(shí)例這樣我們再次創(chuàng)建數(shù)據(jù)庫的時(shí)候數(shù)據(jù)文件就放在新的路徑下了。
mysql>SHOWDATABASES;
++
IDatabase
++
Iinformation_schemaI
Imysql
Imytest
Iroot
+
4rowsinset(0.01sec)
mysql>USEMYTEST;
Databasechanged
mysql>SELECTDATABASE();
++
|DATABASE()|
++
|mytest
++
1rowinset(0.00sec)
mysql>SHOWTABLES;
Emptyset(0.01sec)
5創(chuàng)建數(shù)據(jù)庫用戶
可以用兩種方式創(chuàng)建MySQL賬戶:
1、直接操作MySQL授權(quán)表user(不推薦)
mysql>INSERTINTOmysql.userVALUES('localhost'zhouwf',PASSWORD
('zhouwf'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
2、CREATEUSER
mysql>createusertest_cridentifiedby'test_cr';
QueryOK,0rowsaffected(0.23sec)
3、直接使用GRANT語句
我們可以不用第二步的CREATE語法來執(zhí)行,而直接GRANT就可以創(chuàng)建用戶。
mysql>GRANTALLPRIVILEGESON*.*TO'TEST*@LOCALHOST,IDENTIFIEDBY
'TEST'WITHGRANTOPTION;
QueryOK,0rowsaffected(0.06sec)
mysql>GRANTALLPRIVILEGESON*?*TO'TEST'?'%'IDENTIFIEDBY'TEST'
WITHGRANTOPTION;
QueryOK,0rowsaffected(0.00sec)
mysql>GRANTSELECT,INSERT,UPDATE,DELETEONMYSQL.*TO
TEST_NORMAL@'LOCALHOST'IDENTIFIEDBY'TEST_NORMAL';
QueryOK,0rowsaffected(0.00sec)
mysql>GRANTSELECT,INSERT,UPDATE,DELETEONMYSQL.*TOTEST_NORMAL@'%'
IDENTIFIEDBY'TEST_NORMAL,;
QueryOK,0rowsaffected(0.02sec)
mysql>SELECTUSERFROMMYSQL.USER;
++
|USER|
++
|TEST|
|TEST_NORMAL|
Iroot
ITEST|
ITEST_NORMAL|
Iroot
6rowsinset(0.00sec)
注意:其中兩個(gè)賬戶有相同的用戶名TEST和密碼TEST。兩個(gè)賬戶均為超級用戶
賬戶,具有完全的權(quán)限可以做任何事情。一個(gè)賬戶
('TEST'localhost')只用于從本機(jī)連接時(shí)。另一個(gè)賬戶CTEST'%*)可用于從
其它主機(jī)連接。請注意TEST的兩個(gè)賬戶必須能
從任何主機(jī)以TEST連接。沒有l(wèi)ocalhost賬戶,當(dāng)TEST從本機(jī)連接時(shí),
mysql_install_db創(chuàng)建的localhost的匿名用戶賬戶將占先。
結(jié)果是,TEST將被視為匿名用戶。原因是匿名用戶賬戶的Host列值比'TEST'%
賬戶更具體,這樣在user表排序順序中排在前面。
C:\ProgramFiles\MySQL\MySQLServer5.0\bin>mysql-uTEST-pmytest
Enterpassword:****
WelcometotheMySQLmonitor.Commandsendwith;or\g.
YourMySQLconnectionidis14toserverversion:5.0.27-community-nt
Type'help;'or'\h'forhelp.Type'\c'toclearthebuffer.
注意:用戶名和密碼區(qū)分大小寫。
mysql>SELECTDATABASE();
++
IDATABASE()|
HF
|mytest
++
1rowinset(0.00sec)
mysql>SELECTUSER();
++
|USER()
++
|TEST@localhost|
++
1rowinset(0.00sec)
6創(chuàng)建數(shù)據(jù)庫對象
1創(chuàng)建表
在測試MYSQL創(chuàng)建的時(shí)候還遇到了一些小問題,這里整理出來供大家參考:
mysql>CREATETABLETEST(IDINTAUTO.INCREMENTNOTNULLPRIMARYKEY,
->MCVARCHAR(60),DTDATEDEFAULTNOW());
ERROR1067(42000):Invaliddefaultvaluefor'DT'
注意:AUTO_INCREMENT為MYSQL的自增類型。我們可以利用如下函數(shù)查詢最后
一個(gè)序列號面值:
mysql>SELECTLAST_INSERT_ID();
|LAST_INSERT_ID()|
++
I3|
++
1rowinset(0.06sec)
本來想在創(chuàng)建表的時(shí)候給DT字段一個(gè)DEFAULT值(當(dāng)前時(shí)間),但是出現(xiàn)錯(cuò)誤,
嘗試了幾個(gè)MYSQL的函數(shù)(如CURDATE。等)都是如此,查閱了一下資料得出結(jié)論:
MYSQL的DEFAULT值只能是常量,如果想實(shí)現(xiàn)上述功能只有表中第一個(gè)TIMESTAMP
類型字段可以做到??梢允褂盟詣?dòng)地用當(dāng)前的日期和時(shí)間標(biāo)記INSERT或
UPDATE的操作。如果你有多個(gè)TIMESTAMP歹!J,只有第一個(gè)自動(dòng)更新。自動(dòng)更新
第一個(gè)TIMESTAMP列在下列任何條件下發(fā)生:
A、列沒有明確地在一個(gè)INSERT或LOADDATAINFILE語句中指定。
B、列沒有明確地在一個(gè)UPDATE語句中指定且一些另外的列改變值。(注意
一個(gè)UPDATE設(shè)置一個(gè)列為它已經(jīng)有的值,這將不引起TIMESTAMP列被更新,
因?yàn)槿绻阍O(shè)置一個(gè)列為它當(dāng)前的值,MySQL為了效率而忽略更改。)
C、明確地設(shè)定TIMESTAMP列為NULL或NOW。。
格式:TIMESTAMP:(M)]
MySQL可以以YYYYMMDDHHMMSS、YYMMDDHHMMSS.YYYYMMDD.YYMMDD格式來顯
示TIMESTAMP值,這主要取決于M值,它們分別為14(缺省值)\12\8\6。
mysql>CREATETABLETEST(IDINTAUTOINCREMENTNOTNULLPRIMARYKEY,
->MCVARCHAR(60),DTTIMESTAMP);
QueryOK,0rowsaffected(1.08sec)
mysql>SHOWCOLUMNSFROMTEST;
++++++
--+
IField|Type|Null|Key|Default|Extra|
++++++
ID|int(11)|NO|PRI|NULL|auto_increment
1MCvarchar(60)YESNULL|
1DTtimestampNOCURRENT/IMESTAMP|
++++++.
--+
3rowsinset(0.17sec)
mysql>insertintotest(me)valuesZhangSan5);
QueryOK,1rowaffected(0.13sec)
mysql>select*fromtest;
++++
IID|MC|DT|
++++
I1IZhangSan|2007-05-2509:54:59|
++++
1rowinset(0.06sec)
注意:為表TEST新增加TIMESTAMP類型字段,我們發(fā)現(xiàn)不是表的第一個(gè)
TIMESTAMP類型的字段的DEFAULT值不是系統(tǒng)時(shí)間。
mysql>ALTERTABLETESTADDRQTIMESTAMP;
QueryOK,1rowaffected(0.70sec)
Records:1Duplicates:0Warnings:0
mysql>SHOWCOLUMNSFROMTEST;
14_-L4.4.
IIII1
十
Field|TypeNullKeyDefaultExtra
1.
4.4._1_j_
十?1111
+
1ID|int(ll)|NO|PRI|NULL|
auto_increment
|MC|varchar(60)IYES||NULL
1
|DTtimestamp|NO||CURRENT/IMESTAMP
1
1RQtimestampNO0000-00-0000:00:00
1
j-
■41.-1U-J1_十
十
4rowsinset(0.19sec)
mysql>INSERTINTOTEST(MC)VALUESCLiSiJ);
QueryOK,1rowaffected(0.05sec)
mysql>SELECT*FROMTEST;
+——-+-+-++
1ID|MC|DT1RQ1
4._
11ZhangSan|2007-05-2509:54:59|0000-00-0000:00:001
12LiSi2007-05-2510:02:47oooo-oo-oo00:00:00
+——-+-+-+
2rowsinset(0.01sec)
mysql>INSERTINTOTEST(MC,RQ)VALUESCLiSi1,N0W());
QueryOK,1rowaffected(0.11sec)
mysql>SELECT*FROMTEST;
+1-++-+
|ID|MC|DT1RQI
1
1
|1ZhangSan|2007-05-2509:54:59|0000-00-0000:00:001
2|LiSi2007-05-2510:02:470000-00-0000:00:00
3LiSi2007-05-2510:03:292007-05-2510:03:29
3rowsinset(0.00sec)
注意:執(zhí)行UPDATE操作,表中第一個(gè)TIMESTAMP字段自動(dòng)修改為系統(tǒng)時(shí)間。
mysql>UPDATETESTSETMC='WangWu'WHEREID=3;
QueryOK,1rowaffected(0.13sec)
Rowsmatched:1Changed:1Warnings:0
mysql>SELECT*FROMTEST;
卜H卜T卜十
IDMCDTRQ1
1ZhangSan2007-05-2509:54:59|0000-00-0000:00:00|
2LiSi2007-05-2510:02:470000-00-0000:00:00
3WangWu2007-05-2510:04:012007-05-2510:03:29
1rowsinset(0.00sec)
創(chuàng)建臨時(shí)表
MYSQL臨時(shí)表是SESSION級別的,并且程序退出臨表自動(dòng)刪除。
mysql>CREATETEMPORARYTABLETEMP(IDVARCHAR(20),MCVARCHAR(60));
QueryOK,0rowsaffected(0.08sec)
mysql>insertintotempvalues('111','ll1111');
QueryOK,1rowaffected(0.08sec)
mysql>select*fromtemp;
|ID|MC|
+++
Iin|linn|
1rowinset(0.00sec)
2創(chuàng)建索引
MYSQL索引類型:
1、普通索引
這是最基本的索引類型,而且它沒有唯一性之類的限制。普通索引可以通過以下
幾種方式創(chuàng)建:
創(chuàng)建索引,例如CREATEINDEX〈索引的名字>ONtablename(列的列表);
修改表,例如ALTERTABLEtablenameADDINDEX[索引的名字](列的列表);
創(chuàng)建表的時(shí)候指定索引,例如CREATETABLEtablename(INDEX[索引
的名字](列的列表));
2、唯一性索引
這種索引和前面的“普通索引”基本相同,但有一個(gè)區(qū)別:索引列的所有值都只
能出現(xiàn)一次,即必須唯一。唯一性索引可以用以下幾種
方式創(chuàng)建:
創(chuàng)建索引,例如CREATEUNIQUEINDEX<索引的名字〉ONtablename(列的列表);
修改表,例如ALTERTABLEtablenameADDUNIQUE[索引的名字](列的列表);
創(chuàng)建表的時(shí)候指定索引,例如CREATETABLEtablename(UNIQUE[索
引的名字](列的列表));
3、主鍵
主鍵是一種唯一性索引,但它必須指定為“PRIMARYKEY"。如果你曾經(jīng)用過
AUTO_INCREMENT類型的列,你可能已經(jīng)熟悉主鍵之類的概念了。
主鍵一般在創(chuàng)建表的時(shí)候指定,例如“CREATETABLEtablenamePRIMARY
KEY(列的列表));”。但是,我們也可以通過修改表
的方式力U入主鍵,例如"ALTERTABLEtablenameADDPRIMARYKEY(歹U的歹ij表);
每個(gè)表只能有一個(gè)主鍵。
4、全文索引
MySQL從3.23.23版開始支持全文索引和全文檢索。在MySQL中,全文索引的索
引類型為FULLTEXTo全文索引可以在VARCHAR或者TEXT類型
的列上創(chuàng)建。它可以通過CREATETABLE命令創(chuàng)建,也可以通過ALTERTABLE或
CREATEINDEX命令創(chuàng)建。對于大規(guī)模的數(shù)據(jù)集,通過ALTER
TABLE(或者CREATEINDEX)命令創(chuàng)建全文索引要比把記錄插入帶有全文索引的
空表更快。本文下面的討論不再涉及全文索引,如要了解
更多信息,請參見MySQLdocumentation,,
創(chuàng)建MYSQL索引
mysql>createprocedurep_test()
->begin
->declarecounterint;
->setcounter=1000;
->whilecounter>=1do
->insertintotest(id,me)values(counter,'test");
->setcounter=counter-1;
->endwhile;
->end;//
QueryOK,0rowsaffected(0.98sec)
mysql>callp_test();
->//一
QueryOK,1rowaffected(34.48sec)
mysql>showcolumnsfromtest
+H卜T卜4-—F1
|FieldTypeNull|KeyDefaultExtra
+H卜卜4—卜」i
1IDint(11)NO01
1MCvarchar(60)YES|NULL1
1DTtimestampNO0000-00-0000:00:001
1RQtimestampNO0000-00-0000:00:001
+H卜T卜4T卜T卜+
4rowsinset(0.08sec)
mysql>select*fromtestwhereid=500;
++++-+
|ID|MC|DT|RQI
一++++
Itest|0000-00-0000:00:00|0000-00-0000:00:00|
一++++
1rowinset(0.01sec)
mysql>createindexidx_testontest(id);
QueryOK,1000rowsaffected(0.81sec)
Records:1000Duplicates:0Warnings:0
mysql>showcolumnsf
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 食品生產(chǎn)落料處理制度
- 商品生產(chǎn)臺賬制度
- 定期安全生產(chǎn)檢查制度
- 生產(chǎn)巡檢記錄管理制度
- 糕點(diǎn)生產(chǎn)質(zhì)量管理制度
- 機(jī)務(wù)安全生產(chǎn)基本制度
- 2026北京第二外國語學(xué)院第一批非事業(yè)編制人員招聘5人參考考試試題附答案解析
- 安全生產(chǎn)管理人制度
- 蔬菜平行生產(chǎn)管理制度
- 企業(yè)生產(chǎn)車間門管理制度
- 2025 年度VC PE 市場數(shù)據(jù)報(bào)告 投中嘉川
- 2026中國電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會成熟人才招聘備考題庫及答案詳解(考點(diǎn)梳理)
- 2025年專利管理與保護(hù)操作手冊
- 2025云南山海遊旅游集團(tuán)有限公司招聘10人考試備考題庫及答案解析
- 2025年網(wǎng)約車司機(jī)收入分成合同
- 2026年海南財(cái)金銀河私募基金管理有限公司招聘備考題庫參考答案詳解
- 2026年GRE數(shù)學(xué)部分測試及答案
- 浙江省寧波市鎮(zhèn)海中學(xué)2026屆高二上數(shù)學(xué)期末教學(xué)質(zhì)量檢測模擬試題含解析
- (2025年)電力交易員練習(xí)試題附答案
- 2026年咨詢工程師現(xiàn)代咨詢方法與實(shí)務(wù)模擬測試含答案
- 甘肅省酒泉市2025-2026學(xué)年高一上學(xué)期期末語文試題(解析版)
評論
0/150
提交評論