SELECT
做網(wǎng)站、成都網(wǎng)站制作,成都做網(wǎng)站公司-創(chuàng)新互聯(lián)已向上1000+企業(yè)提供了,網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷等服務(wù)!設(shè)計(jì)與技術(shù)結(jié)合,多年網(wǎng)站推廣經(jīng)驗(yàn),合理的價(jià)格為您打造企業(yè)品質(zhì)網(wǎng)站。
t.TABLE_NAME,
t.CONSTRAINT_TYPE,
c.COLUMN_NAME,
c.ORDINAL_POSITION
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS t,
INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS c
WHERE
t.TABLE_NAME = c.TABLE_NAME
AND t.TABLE_SCHEMA = 'test'
AND t.CONSTRAINT_TYPE = 'PRIMARY KEY';
測(cè)試執(zhí)行結(jié)果如下:
mysql SELECT
- t.TABLE_NAME,
- t.CONSTRAINT_TYPE,
- c.COLUMN_NAME,
- c.ORDINAL_POSITION
- FROM
- INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS t,
- INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS c
- WHERE
- t.TABLE_NAME = c.TABLE_NAME
- AND t.TABLE_SCHEMA = 'test'
- AND t.CONSTRAINT_TYPE = 'PRIMARY KEY'
- LIMIT 3;
+------------+-----------------+-------------+------------------+
| TABLE_NAME | CONSTRAINT_TYPE | COLUMN_NAME | ORDINAL_POSITION |
+------------+-----------------+-------------+------------------+
| mr_dept | PRIMARY KEY | dept_id | 1 |
| order | PRIMARY KEY | id | 1 |
| tab | PRIMARY KEY | id | 1 |
+------------+-----------------+-------------+------------------+
3 rows in set (0.06 sec)
工具/原料
電腦??MySQL
方法/步驟
設(shè)置主鍵:
1、通過終端進(jìn)入到mysql命令行工具。
2、通過use關(guān)鍵字進(jìn)行到目標(biāo)數(shù)據(jù)庫(kù)里。
3、如原表已有主鍵,先把原來(lái)的主鍵刪除掉,通過DROPPRIMARYKEY命令:ALTERTABLE`jingyan`DROPPRIMARYKEY;。
4、主鍵已經(jīng)沒有了。
5、通過命令:ADDPRIMARYKEY來(lái)添加ALTERTABLE`jingyan`ADDPRIMARYKEY(`id`)。
6、輸入后按下回車鍵即可看到queryok執(zhí)行成功的字符。
7、回到數(shù)據(jù)庫(kù)的可視化工具,即可顯示現(xiàn)在的表在id列上添加了主鍵了。
設(shè)置外鍵:
1、創(chuàng)建好主從表。
2、選擇主表,點(diǎn)擊設(shè)計(jì)表,進(jìn)入到表設(shè)計(jì)界面。
3、點(diǎn)擊外鍵,進(jìn)入到外鍵設(shè)置界面。
4、先設(shè)置外鍵名稱和選擇主表的外鍵字段。
5、然后在設(shè)置外鍵字段對(duì)應(yīng)從表的數(shù)據(jù)庫(kù)、表名和字。
6、點(diǎn)擊保存就完成外鍵設(shè)置了。
1. SELECT MAX(id) FROM tablename;
2. LAST_INSERT_ID() 函數(shù)
LAST_INSERT_ID 是與table無(wú)關(guān)的,與你最近一個(gè)插入數(shù)據(jù)的表有關(guān)。如果向表a插入數(shù)據(jù)后,再向表b插入數(shù)據(jù),LAST_INSERT_ID會(huì)改變。
在多用戶交替插入數(shù)據(jù)的情況下MAX(id)顯然不能用。這時(shí)就該使用LAST_INSERT_ID了,因?yàn)長(zhǎng)AST_INSERT_ID是基于Connection的,只要每個(gè)線程都使用獨(dú)立的 Connection對(duì)象,LAST_INSERT_ID函數(shù)將返回該Connection對(duì)AUTO_INCREMENT列最新的insert or update 操作生成的第一個(gè)record的ID。這個(gè)值不能被其它客戶端(Connection)影響,保證了你能夠找回自己的 ID 而不用擔(dān)心其它客戶端的活動(dòng),而且不需要加鎖。
使用單條INSERT語(yǔ)句插入多條記錄, LAST_INSERT_ID返回的是列表中插入的第一條記錄的id。
3. SELECT @@IDENTITY;
@@identity 是表示的是最近一次向具有identity屬性(即自增列)的表插入數(shù)據(jù)時(shí)對(duì)應(yīng)的自增列的值,是系統(tǒng)定義的全局變量。一般系統(tǒng)定義的全局變量都是以@@開頭,用戶自定義變量以@開頭。
比如有個(gè)表A,它的自增列是id,當(dāng)向A表插入一行數(shù)據(jù)后,如果插入數(shù)據(jù)后自增列的值自動(dòng)增加至101,則通過select @@identity得到的值就是101。它也是基于connection的,每個(gè)線程獨(dú)立使用的。使用@@identity的前提是在進(jìn)行insert操作后,執(zhí)行select @@identity的時(shí)候連接沒有關(guān)閉,否則得到的將是NULL值。
4. SHOW TABLE STATUS where name ="tablename";
得出的結(jié)果里邊對(duì)應(yīng)表名記錄中有個(gè)Auto_increment字段,里邊有下一個(gè)自增ID的數(shù)值。根據(jù)表自增列設(shè)置的自增量,以這個(gè)值減去自增量,就是當(dāng)前該表數(shù)據(jù)記錄的最大自增ID。
它也是基于connection的,每個(gè)線程獨(dú)立使用的。
哈哈,樓主遇到我算是你有福氣了,我專門為你編寫了一個(gè)函數(shù),來(lái)獲取表的主鍵名()(可能還有更簡(jiǎn)單的方法,但我不知道)。
請(qǐng)看如下代碼:
?php
function get_primary($host,$user,$password,$tb) //定義函數(shù),參數(shù)分別為主機(jī)名、用戶名、密碼、表名(還可以加入庫(kù)名,我忘了)
{
mysql_connect($host,$user,$password); //連接主機(jī)
mysql_select_db("test"); //選擇庫(kù)
$result=mysql_query("DESCRIBE ".$tb); //分析表
while($rows=mysql_fetch_array($result)) //遍歷結(jié)果集(即所有字段情況)
{
if($rows["Key"]=="PRI") //判斷相應(yīng)字段主鍵情況,如果是主鍵則跳出
break;
}
return $rows["Field"]; //返回所在字段名稱
}
echo get_primary("localhost","root","","te"); //調(diào)用函數(shù)
?