數(shù)據(jù)庫(kù) 之 表操作(DDL語(yǔ)句)和索引

1? 概述

表是一種很重要的數(shù)據(jù)庫(kù)對(duì)象,是組成數(shù)據(jù)庫(kù)的基本元素赏殃,由若干個(gè)字段組成敷待。主要用來(lái)存儲(chǔ)數(shù)據(jù)記錄。表的操作仁热,包含創(chuàng)建表榜揖、刪除表勾哩、修改表等。給表中的字段創(chuàng)建索引举哟,將提高查詢的速度思劳。

表的操作涉及DDL: DataDefinationLanguage,數(shù)據(jù)定義語(yǔ)言妨猩,關(guān)鍵字:CREATE, DROP, ALTER

2? 創(chuàng)建表

.CREATE TABLE [IF NOT EXISTS] ‘tbl_name’ (col1 type1修飾符, col2 type2修飾符, ...)

創(chuàng)建表的時(shí)候要指定類型

.字段信息

.col type1

.PRIMARY KEY(col1,...)

.INDEX(col1, ...)

.UNIQUE KEY(col1, ...)

.表選項(xiàng):

.ENGINE [=] engine_name

可以人為指定表支持的引擎

SHOW ENGINES;查看支持的engine類型

.ROW_FORMAT [=]

{DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}

.獲取幫助:mysql>HELP CREATE TABLE;

.查看所有的引擎:SHOW ENGINES;

.查看表:SHOWTABLES [FROM db_name];

.查看表結(jié)構(gòu):DESC[db_name.]tb_name;

desc? user;查看表里的字段有哪些,類型潜叛,默認(rèn)值等

修飾符

.所有類型:

.NULL數(shù)據(jù)列可包含NULL值

.NOT NULL數(shù)據(jù)列不允許包含NULL值

.DEFAULT默認(rèn)值

.PRIMARY KEY主鍵

.UNIQUE KEY唯一鍵

.CHARACTER SET name指定一個(gè)字符集

.數(shù)值型

.AUTO_INCREMENT自動(dòng)遞增,適用于整數(shù)類型(數(shù)值型的)

.UNSIGNED無(wú)符號(hào)壶硅,默認(rèn)整數(shù)是帶負(fù)號(hào)的威兜,加上這個(gè)字段就都是正整數(shù)

創(chuàng)建表示例

create table classlist (name varchar(20) not null, nu int unsigned not null, scorce float(5,2), primarykey (nu) );

創(chuàng)建一張表,score;

CREATE TABLE score (`id` int(3) NOT NULL AUTO_INCREMENT,`name` char(10) NOTNULL,`math` float(4,2) DEFAULT 60.00,`english` float(4,2) NOT NULL,PRIMARY KEY (`id`) );

其中id是自動(dòng)增加的數(shù)值型庐椒,math有個(gè)默認(rèn)值是60.00

mysql中椒舵,要插入默認(rèn)數(shù)值有以下兩個(gè)語(yǔ)法

方法一

MySQL在創(chuàng)建默認(rèn)字段時(shí)使用default關(guān)鍵字,插入值得時(shí)候也是使用default關(guān)鍵字约谈。

insert into score values

(16,"lin",default,90);

這樣新生成id=16的這條記錄中笔宿,math的值是default;

方法二

在插入值得時(shí)候指定非默認(rèn)值字段的名稱,如指定name和english的值棱诱,當(dāng)前id最大值是16泼橘,不指定id的值

insert intoscore(name,english) values ("li",88);

此時(shí),math的值還是默認(rèn)的60.00迈勋,同時(shí)炬灭,由于,沒(méi)有指定id的值粪躬,id是自動(dòng)增加的担败,所以,新生成的記錄中id的數(shù)值自動(dòng)變更為17.

.CREATE TABLE student (id

int UNSIGNED NOT NULL PRIMARY KEY,name VARCHAR(20)NOT NULL,age tinyint UNSIGNED);

.DESC students;

DESC查看students這張表的表結(jié)構(gòu)

.CREATE TABLE students2

(id int UNSIGNED NOT NULL ,name VARCHAR(20)NOT NULL,age tinyint UNSIGNED,PRIMARYKEY(id,name));

PRIMARY KEY(id,name)這個(gè)是復(fù)合主鍵的寫法镰官;這是固定寫法

3? 刪除表

DROP? TABLE [IF EXISTS] tb_name提前;

.查看表創(chuàng)建命令:SHOW CREATE TABLE tbl_name;

.查看表狀態(tài):SHOW? TABLE STATUS LIKE 'tbl_name'\G

刪除表示例

將fenshu這張表刪掉

drop table fenshu;?

4? 修改表

修改表的某些字段或者屬性

.ALTER TABLE 'tbl_name'

字段:

添加字段:add

ADD col1data_type[FIRST|AFTER col_name]

AFTER在某一列后面添加一列

alter table score addchinese float(3,1) not null after name;

如果表里已經(jīng)有記錄了,如果插入的字段屬性變化可能會(huì)對(duì)原來(lái)的表的數(shù)據(jù)有影響泳唠,可以用視圖的方式來(lái)處理

刪除字段:drop

alter table score drop? chinese;

修改字段:

alter(默認(rèn)值), change(字段名), modify(字段屬性)

數(shù)字可定義為int狈网,也可以當(dāng)做字符串存放

索引:

添加索引:add

刪除索引: drop

表選項(xiàng)

修改:

.查看表上的索引:SHOW INDEXES FROM[db_name.]tbl_name;

.查看幫助:Help? ALTER TABLE

修改表示例

.ALTER TABLE students

RENAME s1;將表名從students改名為s1;

.ALTER TABLE s1 ADD phone

varchar(11) AFTER name;在name這列后添加一列phone;

.ALTER TABLE s1 MODIFY

phone int;更改字段的屬性,如果要改動(dòng),那么要將該字段的所有的屬性都定義笨腥,因?yàn)楦膭?dòng)字段的其中一個(gè)屬性拓哺,所有的屬性都會(huì)改,如只改變類型脖母,那么其他士鸥,如默認(rèn)值也會(huì)改變;

.ALTER TABLE s1 CHANGE

COLUMN phone mobile char(11);更改字段名;

.ALTER TABLE s1 DROP

COLUMN mobile;刪除mobile這一列;

.Help ALTER TABLE查看幫助

.ALTER TABLE students ADD? gender ENUM('m','f')

gender ENUM('m','f')枚舉值谆级,一旦設(shè)置枚舉值后烤礁,該字段讼积,gender只能設(shè)置為m或者f。

update score set

gender="f" where id=2;注意脚仔,要加上引號(hào)勤众;

insert intoscore(name,gender,english) values ("jake","f",80);

.ALETR TABLE students? CHANGE id sid int UNSIGNED NOT NULL PRIMARY KEY;

更改字段id名為sid,并設(shè)置相關(guān)的屬性;

.ALTER TABLE students ADD? UNIQUE KEY(name);

將name這一列添加為唯一鍵鲤脏,該列不能有重復(fù)们颜,在一張表中唯一鍵可以設(shè)置多列,但是主鍵只能是一列

.ALTER TABLE students ADD? INDEX(age);

主鍵和唯一鍵默認(rèn)會(huì)創(chuàng)建索引

.DESC students;

查看表的結(jié)構(gòu)

.SHOW INDEXES FROM? students;

查看表中字段的索引猎醇,其中窥突,主鍵和唯一鍵是默認(rèn)有的,其他的索引是通過(guò)創(chuàng)建生成的

.ALTER TABLE students DROPage;

將表students的列age刪掉硫嘶。

delete? from? ?test6? ?where id=2;

將表test6滿足條件id=2的行刪掉

5? 索引

.索引:索引是特殊數(shù)據(jù)結(jié)構(gòu)波岛,定義在查找時(shí)作為查找條件的字段。索引將表中的一個(gè)或多個(gè)字段中的數(shù)據(jù)復(fù)制一份另存音半,并且這些需要按特定次序排序存儲(chǔ),實(shí)現(xiàn)快速定位數(shù)據(jù)庫(kù)里資源的作用贡蓖,建立主鍵和唯一鍵會(huì)自動(dòng)創(chuàng)建索引

索引提高了查詢性能曹鸠,但是提高不一定是好事,可能會(huì)起到反向的作用斥铺,如索引建立好之后彻桃,臨時(shí)要更改表的結(jié)構(gòu)信息,索引表也要一起更新晾蜘,多了一個(gè)動(dòng)作邻眷,會(huì)影響對(duì)數(shù)據(jù)庫(kù)的修改性能,即索引或?qū)е滦薷男阅芙档吞藿弧_@里需要權(quán)衡肆饶,如果查數(shù)據(jù)多,建立索引是有必要的岖常。

.優(yōu)點(diǎn):提高查詢速度

.缺點(diǎn):占用額外空間驯镊,影響插入速度

.創(chuàng)建索引必須要有索引名稱

.創(chuàng)建索引:

CREATE INDEX index_nameONtbl_name(index_col_name,...);

help CREATE INDEX;查看幫助

.刪除索引:

DROP INDEX index_nameONtbl_name;

.查看索引:

SHOW INDEXES FROM[db_name.]tbl_name;

不同的表里,索引值可以不一樣

索引在運(yùn)維優(yōu)化里有比較明顯的效果竭鞍,提高查詢速度

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末板惑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子偎快,更是在濱河造成了極大的恐慌冯乘,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晒夹,死亡現(xiàn)場(chǎng)離奇詭異裆馒,居然都是意外死亡姊氓,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門领追,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)他膳,“玉大人,你說(shuō)我怎么就攤上這事绒窑∽厮铮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵些膨,是天一觀的道長(zhǎng)蟀俊。 經(jīng)常有香客問(wèn)我,道長(zhǎng)订雾,這世上最難降的妖魔是什么肢预? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮洼哎,結(jié)果婚禮上烫映,老公的妹妹穿的比我還像新娘。我一直安慰自己噩峦,他們只是感情好锭沟,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著识补,像睡著了一般族淮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凭涂,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天祝辣,我揣著相機(jī)與錄音,去河邊找鬼切油。 笑死蝙斜,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的澎胡。 我是一名探鬼主播乍炉,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼滤馍!你這毒婦竟也來(lái)了岛琼?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤巢株,失蹤者是張志新(化名)和其女友劉穎槐瑞,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體阁苞,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡困檩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年祠挫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悼沿。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡等舔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出糟趾,到底是詐尸還是另有隱情慌植,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布义郑,位于F島的核電站蝶柿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏非驮。R本人自食惡果不足惜交汤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望劫笙。 院中可真熱鬧芙扎,春花似錦、人聲如沸填大。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)栋盹。三九已至,卻和暖如春敷矫,著一層夾襖步出監(jiān)牢的瞬間例获,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工曹仗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留榨汤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓怎茫,卻偏偏與公主長(zhǎng)得像收壕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子轨蛤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容