MySql經(jīng)典重點(diǎn)筆記教案_第1頁
MySql經(jīng)典重點(diǎn)筆記教案_第2頁
MySql經(jīng)典重點(diǎn)筆記教案_第3頁
MySql經(jīng)典重點(diǎn)筆記教案_第4頁
MySql經(jīng)典重點(diǎn)筆記教案_第5頁
已閱讀5頁,還剩111頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論