本篇內(nèi)容主要講解“MySQL用命令行方式建庫和表”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“MySQL用命令行方式建庫和表”吧!
成都創(chuàng)新互聯(lián)主營興國網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā)公司,興國h5小程序設(shè)計(jì)搭建,興國網(wǎng)站營銷推廣歡迎興國等地區(qū)企業(yè)咨詢
1.創(chuàng)建
使用create database或create schema命令可以創(chuàng)建數(shù)據(jù)庫。
create database 庫名
create database if not exists 庫名(創(chuàng)建庫并檢驗(yàn)創(chuàng)建的庫是否存在,不存在則建,存在就不建了)
MySQL不允許兩個(gè)數(shù)據(jù)庫使用相同的名字,使用ifnot exists從句可以不顯示錯(cuò)誤信息
顯示所有數(shù)據(jù)庫: showdatabases; www.2cto.com
顯示創(chuàng)建數(shù)據(jù)庫的定義信息: show create dabasese 庫名
2. 創(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ù)庫不會(huì)自動(dòng)成為當(dāng)前數(shù)據(jù)庫,需要用這條USE語句來指定。
注意:在MySQL中,每一條SQL語句都以“;”作為結(jié)束標(biāo)志。
mySQL語法中不區(qū)分大小寫。創(chuàng)建數(shù)據(jù)庫的必須是系統(tǒng)管理員,或者擁有用戶級(jí)別的create權(quán)限。在安裝MySQL的過程中已經(jīng)創(chuàng)建了系統(tǒng)管理員,名為root,假設(shè)密碼為root。
3.創(chuàng)建庫的同時(shí)指定字符集,校對(duì)規(guī)則:
create database mydb character set utf8
collate utf8-general_ci;
character set:指定數(shù)據(jù)庫字符集(Charset),collate:指定字符集的校對(duì)規(guī)則
4.修改數(shù)據(jù)庫,只能改參數(shù)
數(shù)據(jù)庫創(chuàng)建后,如果需要修改數(shù)據(jù)庫的參數(shù),可以使用alter database命令。
語法格式:
alter {database | schema} [db_name]
alter_specification [, alter_specification] ...
其中alter_specification: www.2cto.com
[default] character set charset_name
| [default] collate collation_name
說明:
alter database用于更改數(shù)據(jù)庫的全局特性,這些特性儲(chǔ)存在數(shù)據(jù)庫目錄中的db.opt文件中。用戶必須有對(duì)數(shù)據(jù)庫進(jìn)行修改的權(quán)限,才可以使用 alterdatabase。修改數(shù)據(jù)庫的選項(xiàng)與創(chuàng)建數(shù)據(jù)庫相同,功能不再重復(fù)說明。如果語句中數(shù)據(jù)庫名稱忽略,則修改當(dāng)前(默認(rèn))數(shù)據(jù)庫。
5.刪除數(shù)據(jù)庫
drop database 庫名
drop database if exists 庫名(避免刪除不存在的數(shù)據(jù)庫時(shí)出現(xiàn)的MySQL錯(cuò)誤信息。)
注意:這個(gè)命令必須小心使用,因?yàn)樗鼘h除指定的整個(gè)數(shù)據(jù)庫,該數(shù)據(jù)庫的所有表(包括其中的數(shù)據(jù))也將永久刪除。
6.創(chuàng)建表
創(chuàng)建表就是創(chuàng)建表的結(jié)構(gòu):包含哪些字段(屬性),字段名,字段類型
create table 表名
(字段名1 類型,
字段名2 類型,
。。。。
);
舉例:創(chuàng)建一個(gè)學(xué)生表
use 庫名(確定你的表建在哪個(gè)庫中,把此庫變?yōu)楫?dāng)前數(shù)據(jù)庫);
create table xs
www.2cto.com
(
id int,
name char(10),
sex char(2)
);
Create [temporary] table [if not exists] tbl_name
[ ( [column_definition] , ... | [index_definition] ) ]
[table_option] [select_statement];
說明:
● temporary:該關(guān)鍵字表示用create命令新建的表為臨時(shí)表。不加該關(guān)鍵字創(chuàng)建的表通常稱為持久表,在數(shù)據(jù)庫中持久表一旦創(chuàng)建將一直存在,多個(gè)用戶或者多個(gè)應(yīng)用程序可以同時(shí)使用持久表。有時(shí)候需要臨時(shí)存放數(shù)據(jù),例如,臨時(shí)存儲(chǔ)復(fù)雜的select語句的結(jié)果。此后,可能要重復(fù)地使用這個(gè)結(jié)果,但這個(gè)結(jié)果又不需要永久保存。這時(shí),可以使用臨時(shí)表。用戶可以像操作持久表一樣操作臨時(shí)表。只不過臨時(shí)表的生命周期較短,而且只能對(duì)創(chuàng)建它的用戶可見,當(dāng)斷開與該數(shù)據(jù)庫的連接時(shí),MySQL會(huì)自動(dòng)刪除它們。
● 創(chuàng)建表時(shí)也可使用if not exists語句來判斷創(chuàng)建的表是否已存在,避免出現(xiàn)錯(cuò)誤。
● 要?jiǎng)?chuàng)建的表的表名(tbl_name)必須符合標(biāo)志符規(guī)則,如果有MySQL保留字必須用單引號(hào)括起來。
● column_definition:列定義,包括列名、數(shù)據(jù)類型,可能還有一個(gè)空值聲明和一個(gè)完整性約束。
● index_definition:表索引項(xiàng)定義,主要定義表的索引、主鍵、外鍵等,具體定義將在后面討論。 www.2cto.com
● table_option:用于描述表的選項(xiàng)。
● select_statement:可以在create table語句的末尾添加一個(gè)select語句,在一個(gè)表的基礎(chǔ)上創(chuàng)建表
7.修改表結(jié)構(gòu):增加字段 修改舊字段 刪除字段
alter table 表名
add 字段名 類型(寬度) //增加字段
modify 舊字段 類型 //修改舊字段
drop 字段名 //刪除字段
change 舊字段名 新字段內(nèi)容 //改列名
order by col_name //排序
convert to character set charset_name [字符集名] //將字符集轉(zhuǎn)換為二進(jìn)制
[default]character set charset_name [字符集名] //修改默認(rèn)字符集
舉例:在學(xué)生表中增加birthday字段、修改name字段、修改字段name的名;
alter table xs
add birthday date;
www.2cto.com
modify name varchar(20);
change name sname varchar(20);
8.修改表名
rename table 舊名 to 新名
分類
數(shù)據(jù)類型
說明
數(shù)值類型
bit (M)
tinint [unsigned] [zerofill]
bool,boolean
smallint [unsigned] [zerofill]
int [unsigned] [zerofill]
bigint [unsigned] [zerofill]
float[(M,D)][unsigned][zerofill]
double[(M,D)][unsigned][zerofill]
位類型。M指定位數(shù),默認(rèn)值1,范圍1-64
帶符號(hào)的范圍是-128到127。無符號(hào)0到255。
www.2cto.com
使用0或1表示真或假
2的16次方
2的32次方
2的64次方
M指定顯示長度,d指定小數(shù)位數(shù)
表示比float精度更大的小數(shù)
文本、二進(jìn)制類型
char(size) char(20)
varchar(size) varchar(20)
blob longblob
text(clob) longtext(longclob)
固定長度字符串
可變長度字符串
二進(jìn)制數(shù)據(jù)
大文本
時(shí)間日期
date/datetime/TimeStamp
日期類型(YYYY-MM-DD) (YYYY-MM-DD HH:MM:SS),TimeStamp表示時(shí)間戳,它可用于自動(dòng)記錄insert、update操作的時(shí)間
注意: 在字符數(shù)據(jù)類型和數(shù)值數(shù)據(jù)類型之后,MySQL允許指定一個(gè)數(shù)據(jù)類型選項(xiàng)用來改變數(shù)據(jù)類型的屬性和功能。
對(duì)于字符數(shù)據(jù)類型,MySQL支持兩種數(shù)據(jù)類型選項(xiàng):characterset和collate。如果要區(qū)分字符的大小寫情況,可以在字符類型后面加上bingary。
對(duì)于除bit以外的數(shù)值數(shù)據(jù)類型,MySQL允許添加一個(gè)或多個(gè)數(shù)據(jù)類型選項(xiàng)。unsigned:不允許負(fù)值。zerofill:當(dāng)插入的值長度小于字段設(shè)定的長度時(shí),剩余部分用0填補(bǔ)。
與int有關(guān)的類型與java中的bit、short、int、long分別對(duì)應(yīng)。
varchar、bolb和text類是變長類型。每個(gè)類型的存儲(chǔ)需求取決于列值的實(shí)際長度。
9. 列定義column_definition格式如下:
col_name type [not null | null] [default default_value]
[auto_increment] [unique [key] | [primary] key]
[comment 'string'] [reference_definition]
說明: www.2cto.com
● col_name:表中列的名字。列名必須符合標(biāo)志符規(guī)則,長度不能超過64個(gè)字符,而且在表中要唯一。如果有MySQL保留字必須用單引號(hào)括起來。
● type:列的數(shù)據(jù)類型,有的數(shù)據(jù)類型需要指明長度n,并用括號(hào)括起,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列,并且它必須被索引。
● not null | null:指定該列是否允許為空。如果不指定,則默認(rèn)為null。
● default default_value:為列指定默認(rèn)值,默認(rèn)值必須為一個(gè)常數(shù)。其中,BLOB和TEXT列不能被賦予默認(rèn)值。如果沒有為列指定默認(rèn)值,MySQL自動(dòng)地分配一個(gè)。如果列可以取NULL值,默認(rèn)值就是NULL。如果列被聲明為NOT NULL,默認(rèn)值取決于列類型:
(1)對(duì)于沒有聲明auto_increment屬性的數(shù)字類型,默認(rèn)值是0。對(duì)于一個(gè)auto_increment列,默認(rèn)值是在順序中的下一個(gè)值。
(2)對(duì)于除timestamp以外的日期和時(shí)間類型,默認(rèn)值是該類型適當(dāng)?shù)摹傲恪敝?。?duì)于表中第一個(gè)timestamp列,默認(rèn)值是當(dāng)前的日期和時(shí)間。
(3)對(duì)于除enum的字符串類型,默認(rèn)值是空字符串。對(duì)于enum,默認(rèn)值是第一個(gè)枚舉值。
● unique key | primary key:兩者都表示字段中的值是唯一的。primary key表示設(shè)置為主鍵,一個(gè)表只能定義一個(gè)主鍵,主鍵一定要為notnull。
● comment 'string':對(duì)于列的描述,string是描述的內(nèi)容。
● reference_definition:指定參照的表和列。
10. (1).復(fù)制表 : create table 表名 like 表名1
語法格式:
create [temporary] table[if not exists] tbl_name
[ ( )like old_ name [ ] ]
| [as (select_statement)] ;
說明:
使用LIKE關(guān)鍵字創(chuàng)建一個(gè)與old _name表相同結(jié)構(gòu)的新表,列名、數(shù)據(jù)類型、空指定和索引也將復(fù)制,但是表的內(nèi)容不會(huì)復(fù)制,因此創(chuàng)建的新表是一個(gè)空表。使用as關(guān)鍵字可以復(fù)制表的內(nèi)容,但索引和完整性約束是不會(huì)復(fù)制的。select_statement表示一個(gè)表達(dá)式,例如,可以是一條select語句。
(2).刪除表 : drop table 表名(這個(gè)命令將表的描述、表的完整性約束、索引及和表相關(guān)的權(quán)限等都全部刪除) www.2cto.com
(3).修改表名 : rename子句,語法格式:
rename table old_name to new_name
new_tbl_name是新表名。例如,將表a改名為b:alter table a rename to b ;除了上面的alter table命令,還可以直接用renametable語句來更改表的名字。
● order by子句(以后介紹):用于在創(chuàng)建新表時(shí),讓各行按一定的順序排列。注意,在插入和刪除后,表不會(huì)仍保持此順序。在對(duì)表進(jìn)行了大的改動(dòng)后,通過使用此選項(xiàng),可以提高查詢效率。在有些情況下,如果表按列排序,對(duì)于MySQL來說,排序可能會(huì)更簡單。
● table_options:修改表選項(xiàng),具體定義與create table語句中一樣。
可以在一個(gè)alter table語句里寫入多個(gè)add、alter、drop和chang子句,中間用逗號(hào)分開。這是MySQL相對(duì)于標(biāo)準(zhǔn)SQL的擴(kuò)展。在標(biāo)準(zhǔn)SQL中,每個(gè)alter table語句中每個(gè)子句只允許使用一次。
11.說明:表中大多數(shù)的選項(xiàng)涉及的是表數(shù)據(jù)如何存儲(chǔ)及存儲(chǔ)在何處。多數(shù)情況下,不必指定表選項(xiàng)。engine選項(xiàng)是定義表的存儲(chǔ)引擎,具體在附錄E中介紹。
舉例:
USE mydb1;
CREATE TABLE XS
(
學(xué)號(hào) char(6) NOTNULL primary KEY,
姓名 char(8) NOTNULL ,
專業(yè)名 char(10) NOT NULL ,
性別 tinyint(1) NOT NULL default 1
) engine=InnoDB;
說明:“primary KEY”表示將“學(xué)號(hào)”字段定義為主鍵?!癲efault 1”表示“性別”的默認(rèn)值為1?!癳ngine=InnoDB”表示采用的存儲(chǔ)引擎是InnoDB,InnoDB是MySQL在Windows平臺(tái)默認(rèn)的存儲(chǔ)引擎,所以“engine=InnoDB”可以省略。
12.說明:
● ignore:是MySQL相對(duì)于標(biāo)準(zhǔn)SQL的擴(kuò)展。若在修改后的新表中存在重復(fù)關(guān)鍵字,如果沒有指定ignore,當(dāng)重復(fù)關(guān)鍵字錯(cuò)誤發(fā)生時(shí)操作失敗。如果指定了ignore,則對(duì)于有重復(fù)關(guān)鍵字的行只使用第一行,其他有沖突的行被刪除。
● column_definition:定義列的數(shù)據(jù)類型和屬性,具體內(nèi)容在create table的語法中已做說明。
● first| after col_name:表示在某列的前或后添加,不指定則添加到最后。
注意:若表中該列所存數(shù)據(jù)的數(shù)據(jù)類型與將要修改的列的類型沖突,則發(fā)生錯(cuò)誤。例如,原來char類型的列要修改成int類型,而原來列值中有字符型數(shù)據(jù)“a”,則無法修改。
13. 1). 空值(NULL)概念
空值通常表示未知、不可用或?qū)⒃谝院筇砑拥臄?shù)據(jù)。若一個(gè)列允許為空值,則向表中輸入記錄值時(shí)可不為該列給出具體值;而一個(gè)列若不允許為空值,則在輸入時(shí)必須給出該列的具體值。
注意:表的關(guān)鍵字不允許為空值??罩挡荒芘c數(shù)值數(shù)據(jù)0或字符類型的空字符混為一談。任意兩個(gè)空值都不相等。 www.2cto.com
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ù)類型。定義標(biāo)志屬性時(shí),可指定其種子(即起始)值、增量值,二者的默認(rèn)值均為 1。系統(tǒng)自動(dòng)更新標(biāo)志列值,標(biāo)志列不允許空值。
在下列情況下,MySQL隱含地改變?cè)谝粋€(gè)CREATE TABLE語句給出的一個(gè)列類型(這也可能在ALTER TABLE語句上出現(xiàn))。
14.MySQL隱含地改變列類型:
(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列里面存儲(chǔ)一個(gè)NULL,將它設(shè)為NULL默認(rèn)為當(dāng)前的日期和時(shí)間。
如果想要知道MySQL是否使用了除指定的以外的一種列類型,在創(chuàng)建表之后,使用一個(gè)DESCRIBE語句即可。DESCRIBE語句在3.1.4節(jié)介紹。
15 type定義如下:
說明:在字符數(shù)據(jù)類型和數(shù)值數(shù)據(jù)類型之后,MySQL允許指定一個(gè)數(shù)據(jù)類型選項(xiàng)用來改變數(shù)據(jù)類型的屬性和功能。
對(duì)于字符數(shù)據(jù)類型,MySQL支持兩種數(shù)據(jù)類型選項(xiàng):CHARACTERSET和COLLATE。如果要區(qū)分字符的大小寫情況,可以在字符類型后面加上BINGARY。
對(duì)于除BIT以外的數(shù)值數(shù)據(jù)類型,MySQL允許添加一個(gè)或多個(gè)數(shù)據(jù)類型選項(xiàng)。UNSIGNED:不允許負(fù)值。ZEROFILL:當(dāng)插入的值長度小于字段設(shè)定的長度時(shí),剩余部分用0填補(bǔ)。
spatial_type是空間類型數(shù)據(jù)。
16. 表選項(xiàng)table_option定義如下:
{engine | type} = engine_name //存儲(chǔ)引擎
| auto_increment = value //初始值
| auto_increment = value //表的平均行長度
| [default] charcter set charset_name [collatecollation_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)鍵字的更新
|row_format={DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} //定義各行應(yīng)如何儲(chǔ)存 www.2cto.com
| union = (tbl_name[,tbl_name]...) //表示哪個(gè)表應(yīng)該合并
| insert_method = { NO | FIRST | LAST}//是否執(zhí)行INSERT語句
|data directory = 'absolute path todirectory' //數(shù)據(jù)文件的路徑
| index directory = 'absolute path todirectory’ //索引的路徑
到此,相信大家對(duì)“MySQL用命令行方式建庫和表”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
文章名稱:MySQL用命令行方式建庫和表
當(dāng)前鏈接:http://www.rwnh.cn/article20/pcoijo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、小程序開發(fā)、營銷型網(wǎng)站建設(shè)、面包屑導(dǎo)航、搜索引擎優(yōu)化、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)