加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql应用MySQL中的主键以及设置其自增的用法教程

发布时间:2020-12-12 02:49:03 所属栏目:MySql教程 来源:网络整理
导读:《Mysql应用MySQL中的主键以及设置其自增的用法教程》要点: 本文介绍了Mysql应用MySQL中的主键以及设置其自增的用法教程,希望对您有用。如果有疑问,可以联系我们。 1、声明主键的方法: 您可以在创建表的时候就为表加上主键,如: CREATE TABLE tbl_name (

《Mysql应用MySQL中的主键以及设置其自增的用法教程》要点:
本文介绍了Mysql应用MySQL中的主键以及设置其自增的用法教程,希望对您有用。如果有疑问,可以联系我们。

1、声明主键的方法:
您可以在创建表的时候就为表加上主键,如:
CREATE TABLE tbl_name ([字段描述省略...],PRIMARY KEY(index_col_name));
也可以更新表结构时为表加上主键,如:
MYSQL入门

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会隐含地定义这些列.MYSQL入门


2、主键也是索引:
刚才已经说了,主键其实也是索引,甚至在MySQL的术语里面“键”就等于“索引”,所以“外键”一定要先设为“索引”.所以主键也应该和索引一样,既可以作用于单独的字段,又可以作用于多个字段.
举个简的例子吧,我住3单元,501室,我叫小小子,那么只有3单元501室才能在本小区表里面唯一确定我家.因为2单元,501室住着的可能也是个小小子,所以只有两个字段才能唯一确定我,也就是说可以二者组合作为主键.组合的主键,每个列都会隐含定义NOT NULL约束,且其二者加在一起被定义了UNIQUE 惟一约束.
MYSQL入门

/*
创建防火墙表,将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入门

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

?
MYSQL入门

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入门

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可以自增了.MYSQL入门

给上面的主键id增加默认值和自增功能.MYSQL入门

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

?
MYSQL入门

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

?
MYSQL入门

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入门

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入门

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');

??
MYSQL入门

Query OK,1 row affected (0.14 sec) 

?
MYSQL入门

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

?
MYSQL入门

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入门

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

?
MYSQL入门

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应用MySQL中的主键以及设置其自增的用法教程》是否对您有启发,欢迎查看更多与《Mysql应用MySQL中的主键以及设置其自增的用法教程》相关教程,学精学透。编程之家PHP学院为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读