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