mysql數(shù)據(jù)庫(kù)實(shí)用教程第二章鄭阿奇主.ppt
《mysql數(shù)據(jù)庫(kù)實(shí)用教程第二章鄭阿奇主.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《mysql數(shù)據(jù)庫(kù)實(shí)用教程第二章鄭阿奇主.ppt(36頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第2章 數(shù)據(jù)庫(kù)和表,2.1 命令行方式創(chuàng)建數(shù)據(jù)庫(kù)和表,2.2 界面創(chuàng)建數(shù)據(jù)庫(kù)和表,2.3 有關(guān)表結(jié)構(gòu),2.1 命令行方式創(chuàng)建數(shù)據(jù)庫(kù)和表,2.1.1 創(chuàng)建數(shù)據(jù)庫(kù) 1. 創(chuàng)建數(shù)據(jù)庫(kù) 使用CREATE DATABASE或CREATE SCHEMA命令可以創(chuàng)建數(shù)據(jù)庫(kù)。 語(yǔ)法格式: CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification [, create_specification] .] 其中create_specification: [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name,說(shuō)明:語(yǔ)句中“[ ]”內(nèi)為可選項(xiàng)。 ● db_name:數(shù)據(jù)庫(kù)名。在文件系統(tǒng)中,MySQL的數(shù)據(jù)存儲(chǔ)區(qū)將以目錄方式表示MySQL數(shù)據(jù)庫(kù)。因此,命令中的數(shù)據(jù)庫(kù)名字必須符合操作系統(tǒng)文件夾命名規(guī)則。值得注意的是:在MySQL中是不區(qū)分大小寫(xiě)的。 ● IF NOT EXISTS:在建數(shù)據(jù)庫(kù)前進(jìn)行判斷,只有該數(shù)據(jù)庫(kù)目前尚不存在時(shí)才執(zhí)行CREATE DATABASE操作。用此選項(xiàng)可以避免出現(xiàn)數(shù)據(jù)庫(kù)已經(jīng)存在而再新建的錯(cuò)誤。 ● DEFAULT:指定默認(rèn)值。 ● CHARACTER SET:指定數(shù)據(jù)庫(kù)字符集(Charset),charset_name為字符集名稱(chēng)。,2.1 命令行方式創(chuàng)建數(shù)據(jù)庫(kù)和表,2.1.1 創(chuàng)建數(shù)據(jù)庫(kù),● COLLATE:指定字符集的校對(duì)規(guī)則,collation_name為校對(duì)規(guī)則名稱(chēng)(字符集和校對(duì)規(guī)則的概念見(jiàn)附錄D)。 【例2.1】 創(chuàng)建一個(gè)名為test1的數(shù)據(jù)庫(kù)。 MySQL不允許兩個(gè)數(shù)據(jù)庫(kù)使用相同的名字,使用IF NOT EXISTS從句可以不顯示錯(cuò)誤信息,例如: 為了表達(dá)問(wèn)題簡(jiǎn)單,在以后的示例中單獨(dú)描述命令而不需要界面結(jié)果時(shí),在命令前省略“mysql”提示符。,2.1.1 創(chuàng)建數(shù)據(jù)庫(kù),創(chuàng)建了數(shù)據(jù)庫(kù)之后使用USE命令可指定當(dāng)前數(shù)據(jù)庫(kù)。 語(yǔ)法格式: USE db_name; 說(shuō)明:這個(gè)語(yǔ)句也可以用來(lái)從一個(gè)數(shù)據(jù)庫(kù)“跳轉(zhuǎn)”到另一個(gè)數(shù)據(jù)庫(kù),在用CREATE DATABASE語(yǔ)句創(chuàng)建了數(shù)據(jù)庫(kù)之后,該數(shù)據(jù)庫(kù)不會(huì)自動(dòng)成為當(dāng)前數(shù)據(jù)庫(kù),需要用這條USE語(yǔ)句來(lái)指定。 注意:在MySQL中,每一條SQL語(yǔ)句都以“;”作為結(jié)束標(biāo)志。,2. 修改數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù)創(chuàng)建后,如果需要修改數(shù)據(jù)庫(kù)的參數(shù),可以使用ALTER DATABASE命令。 語(yǔ)法格式: ALTER {DATABASE | SCHEMA} [db_name] alter_specification [, alter_specification] . 其中alter_specification: [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name,2.1.1 創(chuàng)建數(shù)據(jù)庫(kù),說(shuō)明: ALTER DATABASE用于更改數(shù)據(jù)庫(kù)的全局特性,這些特性?xún)?chǔ)存在數(shù)據(jù)庫(kù)目錄中的db.opt文件中。用戶(hù)必須有對(duì)數(shù)據(jù)庫(kù)進(jìn)行修改的權(quán)限,才可以使用 ALTER DATABASE。修改數(shù)據(jù)庫(kù)的選項(xiàng)與創(chuàng)建數(shù)據(jù)庫(kù)相同,功能不再重復(fù)說(shuō)明。如果語(yǔ)句中數(shù)據(jù)庫(kù)名稱(chēng)忽略,則修改當(dāng)前(默認(rèn))數(shù)據(jù)庫(kù)。,2.1.1 創(chuàng)建數(shù)據(jù)庫(kù),【例2.2】 修改數(shù)據(jù)庫(kù)mydata(假設(shè)mydata已經(jīng)創(chuàng)建)的默認(rèn)字符集和校對(duì)規(guī)則。 ALTER DATABASE mydata DEFAULT CHARACTER SET gb2312 DEFAULT COLLATE gb2312_chinese_ci; 3. 刪除數(shù)據(jù)庫(kù) 已經(jīng)創(chuàng)建的數(shù)據(jù)庫(kù)需要?jiǎng)h除,使用DROP DATABASE命令。 語(yǔ)法格式: DROP DATABASE [IF EXISTS] db_name 其中,db_name是要?jiǎng)h除的數(shù)據(jù)庫(kù)名??梢允褂肐F EXISTS子句以避免刪除不存在的數(shù)據(jù)庫(kù)時(shí)出現(xiàn)的MySQL錯(cuò)誤信息。示例如下:,2.1.1 創(chuàng)建數(shù)據(jù)庫(kù),注意:這個(gè)命令必須小心使用,因?yàn)樗鼘h除指定的整個(gè)數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)的所有表(包括其中的數(shù)據(jù))也將永久刪除。,2.1.1 創(chuàng)建數(shù)據(jù)庫(kù),2.1.2 創(chuàng)建表,創(chuàng)建表使用CREATE TABLE命令。 語(yǔ)法格式: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [ ( [column_definition] , . | [index_definition] ) ] [table_option] [select_statement];,2.1.2 創(chuàng)建表,說(shuō)明: ● TEMPORARY:該關(guān)鍵字表示用CREATE命令新建的表為臨時(shí)表。不加該關(guān)鍵字創(chuàng)建的表通常稱(chēng)為持久表,在數(shù)據(jù)庫(kù)中持久表一旦創(chuàng)建將一直存在,多個(gè)用戶(hù)或者多個(gè)應(yīng)用程序可以同時(shí)使用持久表。有時(shí)候需要臨時(shí)存放數(shù)據(jù),例如,臨時(shí)存儲(chǔ)復(fù)雜的SELECT語(yǔ)句的結(jié)果。此后,可能要重復(fù)地使用這個(gè)結(jié)果,但這個(gè)結(jié)果又不需要永久保存。這時(shí),可以使用臨時(shí)表。用戶(hù)可以像操作持久表一樣操作臨時(shí)表。只不過(guò)臨時(shí)表的生命周期較短,而且只能對(duì)創(chuàng)建它的用戶(hù)可見(jiàn),當(dāng)斷開(kāi)與該數(shù)據(jù)庫(kù)的連接時(shí),MySQL會(huì)自動(dòng)刪除它們。,2.1.2 創(chuàng)建表,● IF NOT EXISTS:在建表前加上一個(gè)判斷,只有該表目前尚不存在時(shí)才執(zhí)行CREATE TABLE操作。用此選項(xiàng)可以避免出現(xiàn)表已經(jīng)存在無(wú)法再新建的錯(cuò)誤。 ● table_name:要?jiǎng)?chuàng)建的表的表名。該表名必須符合標(biāo)志符規(guī)則,如果有MySQL保留字必須用單引號(hào)括起來(lái)。 ● column_definition:列定義,包括列名、數(shù)據(jù)類(lèi)型,可能還有一個(gè)空值聲明和一個(gè)完整性約束。 ● index_definition:表索引項(xiàng)定義,主要定義表的索引、主鍵、外鍵等,具體定義將在第5章中討論。,2.1.2 創(chuàng)建表,● table_option:用于描述表的選項(xiàng)。 ● select_statement:可以在CREATE TABLE語(yǔ)句的末尾添加一個(gè)SELECT語(yǔ)句,在一個(gè)表的基礎(chǔ)上創(chuàng)建表。 列定義column_definition格式如下: col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT string] [reference_definition],2.1.2 創(chuàng)建表,說(shuō)明: ● col_name:表中列的名字。列名必須符合標(biāo)志符規(guī)則,長(zhǎng)度不能超過(guò)64個(gè)字符,而且在表中要唯一。如果有MySQL保留字必須用單引號(hào)括起來(lái)。 ● type:列的數(shù)據(jù)類(lèi)型,有的數(shù)據(jù)類(lèi)型需要指明長(zhǎng)度n,并用括號(hào)括起,MySQL支持的數(shù)據(jù)類(lèi)型在附錄C中介紹。 ● AUTO_INCREMENT:設(shè)置自增屬性,只有整型列才能設(shè)置此屬性。當(dāng)插入NULL值或0到一個(gè)AUTO_INCREMENT列中時(shí),列被設(shè)置為value+1,在這里value是此前表中該列的最大值。AUTO_INCREMENT順序從1開(kāi)始。每個(gè)表只能有一個(gè)AUTO_INCREMENT列,并且它必須被索引。,2.1.2 創(chuàng)建表,● NOT NULL | NULL:指定該列是否允許為空。如果不指定,則默認(rèn)為NULL。 ● DEFAULT default_value:為列指定默認(rèn)值,默認(rèn)值必須為一個(gè)常數(shù)。其中,BLOB和TEXT列不能被賦予默認(rèn)值。如果沒(méi)有為列指定默認(rèn)值,MySQL自動(dòng)地分配一個(gè)。如果列可以取NULL值,默認(rèn)值就是NULL。如果列被聲明為NOT NULL,默認(rèn)值取決于列類(lèi)型: (1)對(duì)于沒(méi)有聲明AUTO_INCREMENT屬性的數(shù)字類(lèi)型,默認(rèn)值是0。對(duì)于一個(gè)AUTO_INCREMENT列,默認(rèn)值是在順序中的下一個(gè)值。,2.1.2 創(chuàng)建表,(2)對(duì)于除TIMESTAMP以外的日期和時(shí)間類(lèi)型,默認(rèn)值是該類(lèi)型適當(dāng)?shù)摹傲恪敝?。?duì)于表中第一個(gè)TIMESTAMP列,默認(rèn)值是當(dāng)前的日期和時(shí)間。 (3)對(duì)于除ENUM的字符串類(lèi)型,默認(rèn)值是空字符串。對(duì)于ENUM,默認(rèn)值是第一個(gè)枚舉值。 ● UNIQUE KEY | PRIMARY KEY:PRIMARY KEY和UNIQUE KEY都表示字段中的值是唯一的。PRIMARY KEY表示設(shè)置為主鍵,一個(gè)表只能定義一個(gè)主鍵,主鍵一定要為NOT NULL。 ● COMMENT string:對(duì)于列的描述,string是描述的內(nèi)容。 ● reference_definition:指定參照的表和列,具體定義在第5章參照完整性中介紹。 type定義如下:,2.1.2 創(chuàng)建表,說(shuō)明:以上是各種數(shù)據(jù)類(lèi)型的定義格式,值得注意的是,在字符數(shù)據(jù)類(lèi)型和數(shù)值數(shù)據(jù)類(lèi)型之后,MySQL允許指定一個(gè)數(shù)據(jù)類(lèi)型選項(xiàng)用來(lái)改變數(shù)據(jù)類(lèi)型的屬性和功能。 對(duì)于字符數(shù)據(jù)類(lèi)型,MySQL支持兩種數(shù)據(jù)類(lèi)型選項(xiàng):CHARACTER SET和COLLATE。如果要區(qū)分字符的大小寫(xiě)情況,可以在字符類(lèi)型后面加上BINGARY。 對(duì)于除BIT以外的數(shù)值數(shù)據(jù)類(lèi)型,MySQL允許添加一個(gè)或多個(gè)數(shù)據(jù)類(lèi)型選項(xiàng)。UNSIGNED:不允許負(fù)值。ZEROFILL:當(dāng)插入的值長(zhǎng)度小于字段設(shè)定的長(zhǎng)度時(shí),剩余部分用0填補(bǔ)。 spatial_type是空間類(lèi)型數(shù)據(jù),本書(shū)不討論。 表選項(xiàng)table_option定義如下:,2.1.2 創(chuàng)建表,{ENGINE | TYPE} = engine_name /*存儲(chǔ)引擎*/ | AUTO_INCREMENT = value /*初始值*/ | AVG_ROW_LENGTH = value /*表的平均行長(zhǎng)度*/ | [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name] /*默認(rèn)字符集和校對(duì)*/ | CHECKSUM = {0 | 1} /*設(shè)置為1表示求校驗(yàn)和*/ | COMMENT = string /*注釋*/ | CONNECTION = connect_string /*連接字符串*/ | MAX_ROWS = value /*行的最大數(shù)*/ | MIN_ROWS = value /*列的最小數(shù)*/ | PACK_KEYS = {0 | 1 | DEFAULT} | PASSWORD = string /*對(duì).frm文件加密*/ | DELAY_KEY_WRITE = {0 | 1}/*對(duì)關(guān)鍵字的更新*/,2.1.2 創(chuàng)建表,| ROW_FORMAT = {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} /*定義各行應(yīng)如何儲(chǔ)存*/ | UNION = (tbl_name[,tbl_name].) /*表示哪個(gè)表應(yīng)該合并*/ | INSERT_METHOD = { NO | FIRST | LAST } /*是否執(zhí)行INSERT語(yǔ)句*/ | DATA DIRECTORY = absolute path to directory /*數(shù)據(jù)文件的路徑*/ | INDEX DIRECTORY = absolute path to directory /*索引的路徑*/,2.1.2 創(chuàng)建表,說(shuō)明:表中大多數(shù)的選項(xiàng)涉及的是表數(shù)據(jù)如何存儲(chǔ)及存儲(chǔ)在何處。多數(shù)情況下,不必指定表選項(xiàng)。ENGINE選項(xiàng)是定義表的存儲(chǔ)引擎,具體在附錄E中介紹。 【例2.3】 設(shè)已經(jīng)創(chuàng)建了數(shù)據(jù)庫(kù)XSCJ,在該數(shù)據(jù)庫(kù)中創(chuàng)建學(xué)生情況表XS。 USE XSCJ CREATE TABLE XS ( 學(xué)號(hào) char(6) NOT NULL PRIMARY KEY, 姓名 char(8) NOT NULL , 專(zhuān)業(yè)名 char(10) NOT NULL , 性別 tinyint(1) NOT NULL DEFAULT 1 , 出生日期 date NOT NULL , 總學(xué)分 tinyint NULL , 照片 blob NULL, 備注 text NULL ) ENGINE=InnoDB;,2.1.2 創(chuàng)建表,在上面的例子里,每個(gè)字段都包含附加約束或修飾符,這些可以用來(lái)增加對(duì)所輸入數(shù)據(jù)的約束。“PRIMARY KEY”表示將“學(xué)號(hào)”字段定義為主鍵?!癉EFAULT 1”表示“性別”的默認(rèn)值為1?!癊NGINE=InnoDB”表示采用的存儲(chǔ)引擎是InnoDB,InnoDB是MySQL在Windows平臺(tái)默認(rèn)的存儲(chǔ)引擎,所以“ENGINE=InnoDB”可以省略。,2.1.2 創(chuàng)建表,2. 修改表 ALTER TABLE用于更改原有表的結(jié)構(gòu)。例如,可以增加或刪減列,創(chuàng)建或取消索引,更改原有列的類(lèi)型,重新命名列或表,還可以更改表的評(píng)注和表的類(lèi)型。 語(yǔ)法格式: ALTER [IGNORE] TABLE tbl_name alter_specification [, alter_specification] . alter_specification: ADD [COLUMN] column_definition [FIRST | AFTER col_name ] /*添加列*/ | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} /*修改默認(rèn)值*/ | CHANGE [COLUMN] old_col_name column_definition /*對(duì)列重命名*/ [FIRST|AFTER col_name] | MODIFY [COLUMN] column_definition [FIRST | AFTER col_name] /*修改列類(lèi)型*/ | DROP [COLUMN] col_name /*刪除列*/ | RENAME [TO] new_tbl_name /*重命名該表*/ | ORDER BY col_name /*排序*/ | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] /*將字符集轉(zhuǎn)換為 二進(jìn)制*/ | [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name] /*修改默認(rèn)字符集*/ | table_options | 列或表中索引項(xiàng)的增、刪、改(見(jiàn)第5章索引部分),2.1.2 創(chuàng)建表,說(shuō)明: ● tb1_name:表名。 ● col_name:指定的列名。 ● IGNORE:是MySQL相對(duì)于標(biāo)準(zhǔn)SQL的擴(kuò)展。若在修改后的新表中存在重復(fù)關(guān)鍵字,如果沒(méi)有指定IGNORE,當(dāng)重復(fù)關(guān)鍵字錯(cuò)誤發(fā)生時(shí)操作失敗。如果指定了IGNORE,則對(duì)于有重復(fù)關(guān)鍵字的行只使用第一行,其他有沖突的行被刪除。 ● column_definition:定義列的數(shù)據(jù)類(lèi)型和屬性,具體內(nèi)容在CREATE TABLE的語(yǔ)法中已做說(shuō)明。 ● ADD[COLUMN]子句:向表中增加新列。例如,在表t1中增加新的一列a: ALTER TABLE t1 ADD COLUMN a TINYINT NULL ; ● FIRST | AFTER col_name:表示在某列的前或后添加,不指定則添加到最后。 ● ALTER [COLUMN]子句:修改表中指定列的默認(rèn)值。 ● CHANGE [COLUMN]子句:修改列的名稱(chēng)。重命名時(shí),需給定舊的和新的列名稱(chēng)和列當(dāng)前的類(lèi)型,old_col_name表示舊的列名。column_definition中定義新的列名和當(dāng)前數(shù)據(jù)類(lèi)型。例如,要把一個(gè)INTEGER列的名稱(chēng)從a變更到b: ALTER TABLE t1 CHANGE a b INTEGER; ● MODIFY [COLUMN]子句:修改指定列的類(lèi)型。例如,要把一個(gè)列的數(shù)據(jù)類(lèi)型改為BIGINT: ALTER TABLE t1 MODIFY b BIGINT NOT NULL;,2.1.2 創(chuàng)建表,注意,若表中該列所存數(shù)據(jù)的數(shù)據(jù)類(lèi)型與將要修改的列的類(lèi)型沖突,則發(fā)生錯(cuò)誤。例如,原來(lái)CHAR類(lèi)型的列要修改成INT類(lèi)型,而原來(lái)列值中有字符型數(shù)據(jù)“a”,則無(wú)法修改。 ● DROP子句:從表中刪除列或約束。 ● RENAME子句:修改該表的表名,new_tbl_name是新表名。例如,將表a改名為b: ALTER TABLE a RENAME TO b ; ● ORDER BY子句:用于在創(chuàng)建新表時(shí),讓各行按一定的順序排列。注意,在插入和刪除后,表不會(huì)仍保持此順序。在對(duì)表進(jìn)行了大的改動(dòng)后,通過(guò)使用此選項(xiàng),可以提高查詢(xún)效率。在有些情況下,如果表按列排序,對(duì)于MySQL來(lái)說(shuō),排序可能會(huì)更簡(jiǎn)單。ORDER BY子句會(huì)在第4章中具體介紹。 ● table_options:修改表選項(xiàng),具體定義與CREATE TABLE語(yǔ)句中一樣。 可以在一個(gè)ALTER TABLE語(yǔ)句里寫(xiě)入多個(gè)ADD、ALTER、DROP和CHANGE子句,中間用逗號(hào)分開(kāi)。這是MySQL相對(duì)于標(biāo)準(zhǔn)SQL的擴(kuò)展。在標(biāo)準(zhǔn)SQL中,每個(gè)ALTER TABLE語(yǔ)句中每個(gè)子句只允許使用一次。 【例2.4】 假設(shè)已經(jīng)在數(shù)據(jù)庫(kù)XSCJ中創(chuàng)建了表XS,表中存在“姓名”列。在表XS中增加“獎(jiǎng)學(xué)金等級(jí)”列并將表中的“姓名”列刪除。 USE XSCJ ALTER TABLE XS ADD 獎(jiǎng)學(xué)金等級(jí) tinyint NULL , DROP COLUMN 姓名 ;,2.1.2 創(chuàng)建表,3. 修改表名 除了上面的ALTER TABLE命令,還可以直接用RENAME TABLE語(yǔ)句來(lái)更改表的名字。 語(yǔ)法格式: RENAME TABLE tbl_name TO new_tbl_name [ , tbl_name2 TO new_tbl_name2] . 說(shuō)明: ● tbl_name:修改之前的表名。 ● new_tbl_name:修改之后的表名。 【例2.5】 假設(shè)數(shù)據(jù)庫(kù)XSCJ中已經(jīng)存在table1表和table2表,將table1表重命名為student,table2表重命名為course。 USE XSCJ RENAME TABLE table1 TO student, table2 TO course;,2.1.2 創(chuàng)建表,4. 復(fù)制表 語(yǔ)法格式: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [ ( ) LIKE old_tbl_name [ ] ] | [AS (select_statement)] ; 說(shuō)明: 使用LIKE關(guān)鍵字創(chuàng)建一個(gè)與old_table_name表相同結(jié)構(gòu)的新表,列名、數(shù)據(jù)類(lèi)型、空指定和索引也將復(fù)制,但是表的內(nèi)容不會(huì)復(fù)制,因此創(chuàng)建的新表是一個(gè)空表。使用AS關(guān)鍵字可以復(fù)制表的內(nèi)容,但索引和完整性約束是不會(huì)復(fù)制的。select_statement表示一個(gè)表達(dá)式,例如,可以是一條SELECT語(yǔ)句。 【例2.6】 假設(shè)數(shù)據(jù)庫(kù)XSCJ中有一個(gè)表test,創(chuàng)建test表的一個(gè)名為test_copy1的拷貝。 CREATE TABLE test_copy1 LIKE test; 【例2.7】 創(chuàng)建表test的一個(gè)名為test_copy2的拷貝,并且復(fù)制其內(nèi)容。 CREATE TABLE test_copy2 AS (SELECT * FROM test);,2.1.2 創(chuàng)建表,5. 刪除表 需要?jiǎng)h除一個(gè)表時(shí)可以使用DROP TABLE語(yǔ)句。 語(yǔ)法格式: DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] . 其中, tb1_name:要被刪除的表名。 IF EXISTS:避免要?jiǎng)h除的表不存在時(shí)出現(xiàn)錯(cuò)誤信息。 這個(gè)命令將表的描述、表的完整性約束、索引及和表相關(guān)的權(quán)限等都全部刪除。 【例2.8】 刪除表test。 USE XSCJ DROP TABLE IF EXISTS test ;,2.2 界面創(chuàng)建數(shù)據(jù)庫(kù)和表,2.2.1 創(chuàng)建數(shù)據(jù)庫(kù) 創(chuàng)建數(shù)據(jù)庫(kù)的必須是系統(tǒng)管理員,或者擁有用戶(hù)級(jí)別的CREATE權(quán)限。在安裝MySQL的過(guò)程中已經(jīng)創(chuàng)建了系統(tǒng)管理員,名為root,假設(shè)密碼為123456。 【例2.9】 創(chuàng)建一個(gè)學(xué)生成績(jī)數(shù)據(jù)庫(kù)XSCJ(假設(shè)在這之前已經(jīng)將XSCJ數(shù)據(jù)庫(kù)刪除)。 創(chuàng)建XSCJ數(shù)據(jù)庫(kù)步驟如下: (1)“開(kāi)始”→“程序”→“MySQL”→“MySQLAdministrator”,如圖2.1所示,Server host為“l(fā)ocalhost”,Username為“root”,輸入密碼,單擊“OK”按鈕。,,圖2.1 登錄MySQL Administrator,2.2.1 創(chuàng)建數(shù)據(jù)庫(kù),(2)在MySQL Administrator窗口中展開(kāi)“Catalogs”選項(xiàng)欄,出現(xiàn)如圖2.2所示的數(shù)據(jù)庫(kù)列表,在任意一個(gè)數(shù)據(jù)庫(kù)名上右擊鼠標(biāo),選擇“Create New Schema”子選項(xiàng)。,,圖2.2 選擇創(chuàng)建數(shù)據(jù)庫(kù)選項(xiàng),2.2.1 創(chuàng)建數(shù)據(jù)庫(kù),(3)出現(xiàn)如圖2.3所示的界面,輸入需要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)名XSCJ,單擊“OK”按鈕。這樣數(shù)據(jù)庫(kù)XSCJ就創(chuàng)建成功了。,,圖2.3 輸入數(shù)據(jù)庫(kù)名,2.2.2 創(chuàng)建、刪除和修改表,● 在數(shù)據(jù)庫(kù)中創(chuàng)建表,步驟如下: (1)在MySQL Administrator窗口中展開(kāi)Catalogs選項(xiàng)欄,鼠標(biāo)單擊指定數(shù)據(jù)庫(kù),在右方的快捷選單上選擇“Create New Table”子菜單,或者直接單擊“Create Table”按鈕。 (2)在彈出的“MySQL Table Editor”窗口中填寫(xiě)表名(這里以KC表為例),在“Columns and Indices”子選框中填寫(xiě)表的各列及數(shù)據(jù)類(lèi)型,如圖2.4所示,單擊“Apply Changes”按鈕。在彈出的“Confirm Table Editor”對(duì)話(huà)框中單擊“Execute”按鈕,即可成功創(chuàng)建表KC。 說(shuō)明:創(chuàng)建完KC表之后,使用相同的方法創(chuàng)建附錄A中的其他兩個(gè)表,這里不再重復(fù)說(shuō)明。,2.2.2 創(chuàng)建、刪除和修改,,圖2.4 創(chuàng)建表的各列及數(shù)據(jù)類(lèi)型,2.2.2 創(chuàng)建、刪除和修改,● 如果要在數(shù)據(jù)庫(kù)中刪除表,步驟如下: (1)MySQL Administrator窗口中展開(kāi)“Catalogs”欄,選擇數(shù)據(jù)庫(kù)(如XSCJ),在右方的快捷選單上右擊KC表,選擇“Drop Table”子菜單,如圖2.5所示。 (2)在彈出對(duì)話(huà)框中單擊“Drop Table(s)”按鈕,即刪除了表KC,這里不做刪除。,圖2.5 刪除表,2.2.2 創(chuàng)建、刪除和修改,● 在數(shù)據(jù)庫(kù)中修改表,步驟如下: (1)在MySQL Administrator窗口中展開(kāi)Catalogs,選擇數(shù)據(jù)庫(kù)(如XSCJ),在右方的快捷選單上右擊KC表,選擇“Edit Table”子菜單,圖略。 (2)在彈出的“MySQL Table Editor”窗口中即可修改表的結(jié)構(gòu),修改完后單擊 “Apply Changes”按鈕。在彈出的“Confirm Table Editor”對(duì)話(huà)框中單擊“Execute”按鈕,即可修改表XS1。 注意:由于MySQL Administrator管理工具還存在一些問(wèn)題,當(dāng)列的屬性為NOT NULL時(shí),修改列名可能會(huì)出錯(cuò)。,2.3 有關(guān)表結(jié)構(gòu),2.3.1 空值和列的identity(標(biāo)志)屬性 下面著重對(duì)空值和列的identity(標(biāo)志)屬性進(jìn)行說(shuō)明。 1. 空值(NULL)概念 空值通常表示未知、不可用或?qū)⒃谝院筇砑拥臄?shù)據(jù)。若一個(gè)列允許為空值,則向表中 輸入記錄值時(shí)可不為該列給出具體值;而一個(gè)列若不允許為空值,則在輸入時(shí)必須給出該列的具體值。 注意:表的關(guān)鍵字不允許為空值??罩挡荒芘c數(shù)值數(shù)據(jù)0或字符類(lèi)型的空字符混為一談。任意兩個(gè)空值都不相等。 2. 列的IDENTITY(標(biāo)志)屬性 對(duì)任何表都可創(chuàng)建包含系統(tǒng)所生成序號(hào)值的一個(gè)標(biāo)志列,該序號(hào)值唯一標(biāo)志表中的一列,可以作為鍵值。每個(gè)表只能有一個(gè)列設(shè)置為標(biāo)志屬性,該列只能是decimal、int、numeric、smallint、bigint 或 tinyint 數(shù)據(jù)類(lèi)型。定義標(biāo)志屬性時(shí),可指定其種子(即起始)值、增量值,二者的默認(rèn)值均為 1。系統(tǒng)自動(dòng)更新標(biāo)志列值,標(biāo)志列不允許空值。,2.3.2 MySQL隱含地改變列類(lèi)型,在下列情況下,MySQL隱含地改變?cè)谝粋€(gè)CREATE TABLE語(yǔ)句給出的一個(gè)列類(lèi)型(這也可能在ALTER TABLE語(yǔ)句上出現(xiàn))。 (1)長(zhǎng)度小于4的varchar被改變?yōu)閏har。 (2)如果在一個(gè)表中的任何列有可變長(zhǎng)度,結(jié)果使整個(gè)行是變長(zhǎng)的。因此,如果一張表包含任何變長(zhǎng)的列(varchar、text或Blob),所有大于3個(gè)字符的char列被改變?yōu)関archar列。這在任何方面都不影響用戶(hù)如何使用列。在MySQL中這種改變可以節(jié)省空間并且使表操作更快捷。 (3)timestamp的顯示尺寸必須是偶數(shù)且在2~14的范圍內(nèi)。如果指定0顯示尺寸或比 14大,尺寸被強(qiáng)制為14。從1~13范圍內(nèi)的奇數(shù)值尺寸被強(qiáng)制為下一個(gè)更大的偶數(shù)。 (4)不能在一個(gè)timestamp列里面存儲(chǔ)一個(gè)NULL,將它設(shè)為NULL默認(rèn)為當(dāng)前的日期和時(shí)間。 如果想要知道MySQL是否使用了除指定的以外的一種列類(lèi)型,在創(chuàng)建表之后,使用一個(gè)DESCRIBE語(yǔ)句即可。DESCRIBE語(yǔ)句在3.1.4節(jié)介紹。,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- mysql 數(shù)據(jù)庫(kù) 實(shí)用教程 第二 章鄭阿奇主
鏈接地址:http://zhongcaozhi.com.cn/p-2585810.html