最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

MySQL中的主鍵以及設(shè)置其自增的用法教程

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 20:54:28
文檔

MySQL中的主鍵以及設(shè)置其自增的用法教程

MySQL中的主鍵以及設(shè)置其自增的用法教程:1、聲明主鍵的方法: 您可以在創(chuàng)建表的時(shí)候就為表加上主鍵,如: CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY(index_col_name)); 也可以更新表結(jié)構(gòu)時(shí)為表加上主鍵,如: ALTER TABLE tbl_name ADD PRIMARY
推薦度:
導(dǎo)讀MySQL中的主鍵以及設(shè)置其自增的用法教程:1、聲明主鍵的方法: 您可以在創(chuàng)建表的時(shí)候就為表加上主鍵,如: CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY(index_col_name)); 也可以更新表結(jié)構(gòu)時(shí)為表加上主鍵,如: ALTER TABLE tbl_name ADD PRIMARY

1、聲明主鍵的方法:
您可以在創(chuàng)建表的時(shí)候就為表加上主鍵,如:
CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY(index_col_name));
也可以更新表結(jié)構(gòu)時(shí)為表加上主鍵,如:

ALTER TABLE tbl_name ADD PRIMARY KEY (index_col_name,…);
/*
創(chuàng)建一個(gè)qq表,將qq_id設(shè)為主鍵,且沒有對(duì)其進(jìn)行NOT NULl約束
*/
create table qq(
qq_id int(10),
nick_name varchar(255) not null,
primary key (qq_id))
/*
插入一條數(shù)據(jù),將qq號(hào)設(shè)為10000(咱也幻想一下),昵稱設(shè)為"simaopig"
*/
INSERT INTO qq( qq_id, nick_name )
VALUES (
'10000', 'simaopig');

主鍵被認(rèn)為是NOT NULL和UNIQUE約束最好的結(jié)合。如果這些列沒有被明確地定義為NOT NULL,MySQL會(huì)隱含地定義這些列。


2、主鍵也是索引:
剛才已經(jīng)說了,主鍵其實(shí)也是索引,甚至在MySQL的術(shù)語里面“鍵”就等于“索引”,所以“外鍵”一定要先設(shè)為“索引”。所以主鍵也應(yīng)該和索引一樣,既可以作用于單獨(dú)的字段,又可以作用于多個(gè)字段。
舉個(gè)簡的例子吧,我住3單元,501室,我叫小小子,那么只有3單元501室才能在本小區(qū)表里面唯一確定我家。因?yàn)?單元,501室住著的可能也是個(gè)小小子,所以只有兩個(gè)字段才能唯一確定我,也就是說可以二者組合作為主鍵。組合的主鍵,每個(gè)列都會(huì)隱含定義NOT NULL約束,且其二者加在一起被定義了UNIQUE 惟一約束。

/*
創(chuàng)建防火墻表,將host 和port組合設(shè)為主鍵,注意我沒有將port設(shè)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、設(shè)置主鍵自增
下面我們通過一個(gè)實(shí)例來講解設(shè)置主鍵自增的方法:
首先創(chuàng)建數(shù)據(jù)庫,創(chuàng)建表

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) 

給主鍵增加一個(gè)自增的功能:

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增加默認(rèn)值和自增功能。

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獲取系統(tǒng)時(shí)間:

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設(shè)置主鍵不能為空,還要自動(dòng)增長(這里沒有設(shè)置默認(rèn)值,但是默認(rèn)是1,從1開始增長。),還要得到系統(tǒng)默認(rèn)日期:

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) 
 

您可能感興趣的文章:

  • MySQL 8.0的關(guān)系數(shù)據(jù)庫新特性詳解
  • Mysql 8 新特性 window functions 的作用
  • MySQL 8 新特性之Invisible Indexes
  • 利用Java的MyBatis框架獲取MySQL中插入記錄時(shí)的自增主鍵
  • 深入探尋mysql自增列導(dǎo)致主鍵重復(fù)問題的原因
  • mysql修改自增長主鍵int類型為char類型示例
  • MySQL8新特性:自增主鍵的持久化詳解
  • 聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    MySQL中的主鍵以及設(shè)置其自增的用法教程

    MySQL中的主鍵以及設(shè)置其自增的用法教程:1、聲明主鍵的方法: 您可以在創(chuàng)建表的時(shí)候就為表加上主鍵,如: CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY(index_col_name)); 也可以更新表結(jié)構(gòu)時(shí)為表加上主鍵,如: ALTER TABLE tbl_name ADD PRIMARY
    推薦度:
    標(biāo)簽: id 主鍵 mysql
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top