MySQL的增刪查改語句用法示例總結(jié)
1.創(chuàng)建列
alter table tablename add colname type not null default '0′;
例:
alter table mmanapp_mmanmedia add appid_id integer not null default 372;
2.刪除列
alter table tablename drop column colname;
例:
alter table mmanapp_mmanmedia drop column appid_id;
3.在已經(jīng)存在的列上創(chuàng)建外鍵關(guān)聯(lián)
ALTER TABLE yourtablename ADD [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, …) REFERENCES tbl_name (index_col_name, …) [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}] [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
例:
ALTER TABLE mmanapp_mmanmedia ADD CONSTRAINT fk_mdappid FOREIGN KEY(appid_id)
4.刪除外鍵關(guān)聯(lián):
ALTER TABLE yourtablename DROP FOREIGN KEY fk_symbol;
例:
ALTER TABLE mmanapp_mmanmedia DROP FOREIGN KEY fk_mdappid
附文檔兩份:
一.mysql對(duì)列和表的相關(guān)操作
增加主鍵
alter table tabelname add new_field_id int(5) unsigned default 0 not null auto_increment ,add primary key (new_field_id);
增加一個(gè)新列
alter table infos add ex tinyint not null default '0′;
刪除列
alter table t2 drop column c;
重命名列/改變列類型
alter table t1 change a b integer; alter table t1 change b b bigint not null; alter table infos change list list tinyint not null default '0′;
重命名表
alter table t1 rename t2;
加索引
mysql> alter table tablename change depno depno int(5) not null; mysql> alter table tablename add index 索引名 (字段名1[,字段名2 …]); mysql> alter table tablename add index emp_name (name);
加主關(guān)鍵字的索引
mysql> alter table tablename add primary key(id);
加唯一限制條件的索引
mysql> alter table tablename add unique emp_name2(cardnumber);
刪除某個(gè)索引
mysql>alter table tablename drop index emp_name;
二.對(duì)表增/刪約束關(guān)系
InnoDB允許你用ALTER TABLE往一個(gè)表中添加一個(gè)新的 外鍵約束:
ALTER TABLE yourtablename
ADD [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, …)
REFERENCES tbl_name (index_col_name, …)
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
記住先創(chuàng)建需要的索引。你也可以用ALTER TABLE往一個(gè)表添加一個(gè)自引用外鍵約束。
InnoDB也支持使用ALTER TABLE來移除 外鍵:
ALTER TABLE yourtablename DROP FOREIGN KEY fk_symbol;
當(dāng)年創(chuàng)建一個(gè)外鍵之時(shí),如果FOREIGN KEY子句包括一個(gè)CONSTRAINT名字,你可以引用那個(gè)名字來移除 外鍵。另外,當(dāng)外鍵被創(chuàng)建之時(shí),fk_symbol值被InnoDB內(nèi)部保證。當(dāng)你想要移除一個(gè)外鍵之時(shí),要找出標(biāo)記,請(qǐng)使用SHOW CREATE TABLE語句。例子如下:
mysql> SHOW CREATE TABLE ibtest11c\G
*************************** 1. row ***************************
Table: ibtest11c
Create Table: CREATE TABLE ibtest11c (
A int(11) NOT NULL auto_increment,
D int(11) NOT NULL default '0′,
B varchar(200) NOT NULL default ”,
C varchar(175) default NULL,
PRIMARY KEY (A,D,B),
KEY B (B,C),
KEY C (C),
CONSTRAINT 0_38775 FOREIGN KEY (A, D)
REFERENCES ibtest11a (A, D)
ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT 0_38776 FOREIGN KEY (B, C)
REFERENCES ibtest11a (B, C)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=INNODB CHARSET=latin1
1 row in set (0.01 sec)
mysql> ALTER TABLE ibtest11c DROP FOREIGN KEY 0_38775;
InnoDB解析程序允許你在FOREIGN KEY … REFERENCES …子句中用`(backticks)把表和列名名字圍起來。InnoDB解析程序也考慮到lower_case_table_names系統(tǒng)變量的設(shè)置。
InnoDB返回一個(gè)表的外鍵定義作為SHOW CREATE TABLE語句輸出的一部分:
SHOW CREATE TABLE tbl_name;
從這個(gè)版本起,mysqldump也將表的正確定義生成到轉(zhuǎn)儲(chǔ)文件中,且并不忘記 外鍵。
你可以如下對(duì)一個(gè)表顯示外鍵約束:
SHOW TABLE STATUS FROM db_name LIKE ‘tbl_name';
外鍵約束被列在輸出的Comment列。
當(dāng)執(zhí)行外鍵檢查之時(shí),InnoDB對(duì)它照看著的子或父記錄設(shè)置共享的行級(jí)鎖。InnoDB立即檢查外鍵約束,檢查不對(duì)事務(wù)提交延遲。
要使得對(duì)有外鍵關(guān)系的表重新載入轉(zhuǎn)儲(chǔ)文件變得更容易,mysqldump自動(dòng)在轉(zhuǎn)儲(chǔ)輸出中包括一個(gè)語句設(shè)置FOREIGN_KEY_CHECKS為0。這避免在轉(zhuǎn)儲(chǔ)被重新裝載之時(shí),與不得不被以特別順序重新裝載的表相關(guān)的問題。也可以手動(dòng)設(shè)置這個(gè)變量:
mysql> SET FOREIGN_KEY_CHECKS = 0; mysql> SOURCE dump_file_name; mysql> SET FOREIGN_KEY_CHECKS = 1;
如果轉(zhuǎn)儲(chǔ)文件包含對(duì)外鍵是不正確順序的表,這就以任何順序?qū)朐摫怼_@樣也加快導(dǎo)入操作。設(shè)置FOREIGN_KEY_CHECKS為0,對(duì)于在LOAD DATA和ALTER TABLE操作中忽略外鍵限制也是非常有用的。
InnoDB不允許你刪除一個(gè)被FOREIGN KEY表約束 引用的表,除非你做設(shè)置SET FOREIGN_KEY_CHECKS=0。當(dāng)你移除一個(gè)表的時(shí)候,在它的創(chuàng)建語句里定義的約束也被移除。
如果你重新創(chuàng)建一個(gè)被移除的表,它必須有一個(gè)遵從于也引用它的外鍵約束的定義。它必須有正確的列名和類型,并且如前所述,它必須對(duì)被 引用的鍵有索引。如果這些不被滿足,MySQL返回錯(cuò)誤號(hào)1005 并在錯(cuò)誤信息字符串中指向errno 150。
相關(guān)文章
mysql設(shè)置遠(yuǎn)程訪問數(shù)據(jù)庫的多種方法
最近有一同學(xué)問我MySQL無法遠(yuǎn)程訪問怎么呢,但能使用localhost來進(jìn)行方法,下面腳本之家來給各位介紹一下解決辦法,需要的朋友可以參考下2013-10-10
MySQL?數(shù)據(jù)庫的對(duì)庫的操作及其數(shù)據(jù)類型
這篇文章主要介紹了MySQL?數(shù)據(jù)庫的對(duì)庫的操作及其數(shù)據(jù)類型,下面文字圍繞數(shù)據(jù)庫的對(duì)庫的操作及其數(shù)據(jù)類型的相關(guān)資料展開詳細(xì)介紹,需要的小伙伴可以參考一下,希望對(duì)你有所幫助2021-12-12
Mysql數(shù)據(jù)庫事務(wù)的臟讀幻讀及不可重復(fù)讀詳解
這篇文章主要為大家介紹了Mysql數(shù)據(jù)庫事務(wù)的臟讀幻讀及不可重復(fù)讀詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
關(guān)于InnoDB索引的底層實(shí)現(xiàn)和實(shí)際效果
這篇文章主要介紹了關(guān)于InnoDB索引的底層實(shí)現(xiàn)和實(shí)際效果,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12

