程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL中的主鍵和設置其自增的用法教程

MySQL中的主鍵和設置其自增的用法教程

編輯:MySQL綜合教程

MySQL中的主鍵和設置其自增的用法教程。本站提示廣大學習愛好者:(MySQL中的主鍵和設置其自增的用法教程)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL中的主鍵和設置其自增的用法教程正文


1、聲明主鍵的辦法:
您可以在創立表的時刻就為表加上主鍵,如:
CREATE TABLE tbl_name ([字段描寫省略...], PRIMARY KEY(index_col_name));
也能夠更新表構造時為表加上主鍵,如:

ALTER TABLE tbl_name ADD PRIMARY KEY (index_col_name,…);
/*
創立一個qq表,將qq_id設為主鍵,且沒有對其停止NOT NULl束縛
*/
create table qq(
qq_id int(10),
nick_name varchar(255) not null,
primary key (qq_id))
/*
拔出一條數據,將qq號設為10000(咱也理想一下),昵稱設為"simaopig"
*/
INSERT INTO qq( qq_id, nick_name )
VALUES (
'10000', 'simaopig');

主鍵被以為是NOT NULL和UNIQUE束縛最好的聯合。假如這些列沒有被明白地界說為NOT NULL,MySQL會隱含地界說這些列。


2、主鍵也是索引:
適才曾經說了,主鍵其實也是索引,乃至在MySQL的術語外面“鍵”就等於“索引”,所以“外鍵”必定要先設為“索引”。所以主鍵也應當和索引一樣,既可以感化於零丁的字段,又可以感化於多個字段。
舉個簡的例子吧,我住3單位,501室,我叫小小子,那末只要3單位501室能力在本小區內外面獨一肯定我家。由於2單位,501室住著的能夠也是個小小子,所以只要兩個字段能力獨一肯定我,也就是說可以兩者組協作為主鍵。組合的主鍵,每一個列都邑隱含界說NOT NULL束縛,且其兩者加在一路被界說了UNIQUE 唯一束縛。

/*
創立防火牆表,將host 和port組合設為主鍵,留意我未將port設NOT NULL束縛
*/
create table firewall(
host varchar(11) not null,
port smallint(4),
access enum('deny', 'allow') not null,
primary key (host,port))
/*
拔出一條新的記載,沒有啥成績
1 row(s) inserted.
*/
INSERT INTO firewall (
host ,
port ,
access)
VALUES (
'202.65.3.87', '21', 'deny');

3、設置主鍵自增
上面我們經由過程一個實例來說解設置主鍵自增的辦法:
起首創立數據庫,創立表

mysql> create database ssh2; 
Query OK, 1 row affected (0.04 sec) 

 

mysql> use ssh2; 
Database changed 
mysql> create table user( 
  -> id integer primary key, 
  -> firstname varchar(200) not null, 
  -> lastname varchar(200) not null, 
  -> age integer 
  -> ); 
Query OK, 0 rows affected (0.46 sec) 

給主鍵增長一個自增的功效:

mysql> alter table user modify id integer auto_increment ; 
Query OK, 1 row affected (0.28 sec) 
Records: 1 Duplicates: 0 Warnings: 0 

如許,下面的user內外面的主鍵,id可以自增了。

給下面的主鍵id增長默許值和自增功效。

mysql> alter table user modify id integer auto_increment ; 
Query OK, 0 rows affected (0.39 sec) 
Records: 0 Duplicates: 0 Warnings: 0 

 

mysql> alter table user modify id integer default '1'; 
Query OK, 0 rows affected (0.16 sec) 
Records: 0 Duplicates: 0 Warnings: 0 

 

mysql> alter table user modify id integer auto_increment ; 
Query OK, 1 row affected (0.28 sec) 
Records: 1 Duplicates: 0 Warnings: 0 

MySql獲得體系時光:

mysql> alter table user add createtime timestamp default current_timestamp; 
Query OK, 2 rows affected (0.17 sec) 
Records: 2 Duplicates: 0 Warnings: 0 

MySql設置主鍵不克不及為空,還要主動增加(這裡沒有設置默許值,然則默許是1,從1開端增加。),還要獲得體系默許日期:

mysql> create table dd( 
  -> id int primary key not null auto_increment, 
  -> name varchar(20), 
  -> time timestamp default current_timestamp 
  -> ); 
Query OK, 0 rows affected (0.10 sec) 
 
mysql> insert into dd(name) values ('fhihgifds');

  

Query OK, 1 row affected (0.14 sec) 

 

mysql> insert into dd(name) values ('steven'); 
Query OK, 1 row affected (0.08 sec) 

 

mysql> select * from dd; 
+----+-----------+---------------------+ 
| id | name   | time        | 
+----+-----------+---------------------+ 
| 1 | fhihgifds | 2011-03-27 01:58:46 | 
| 2 | steven  | 2011-03-27 01:59:35 | 
+----+-----------+---------------------+ 
2 rows in set (0.08 sec) 

 

mysql> insert into dd(name) values ('anthony'); 
Query OK, 1 row affected (0.09 sec) 

 

mysql> select * from dd; 
+----+-----------+---------------------+ 
| id | name   | time        | 
+----+-----------+---------------------+ 
| 1 | fhihgifds | 2011-03-27 01:58:46 | 
| 2 | steven  | 2011-03-27 01:59:35 | 
| 3 | anthony  | 2011-03-27 02:00:07 | 
+----+-----------+---------------------+ 
3 rows in set (0.00 sec) 
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved