PostgreSQL AUTO INCREMENT(自动增长)

本文介绍了PostgreSQL如何使用序列实现字段的自动增长,类似于MySQL的AUTO_INCREMENT属性。通过CREATE TABLE语句展示了如何创建带有SERIAL类型的表,并插入记录。示例中创建了COMPANY表,插入多条员工记录,每个ID自动递增。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PostgreSQL AUTO INCREMENT(自动增长)

AUTO INCREMENT(自动增长) 会在新记录插入表中时生成一个唯一的数字。
PostgreSQL 使用序列来标识字段的自增长,数据类型有 smallserial、serial 和 bigserial 。这些属性类似于 MySQL 数据库支持的 AUTO_INCREMENT 属性。
使用 MySQL 设置自动增长的语句如下:

CREATE TABLE IF NOT EXISTS `hgdb_tbl`(
   `hgdb_id` INT UNSIGNED AUTO_INCREMENT,
   `hgdb_title` VARCHAR(100) NOT NULL,
   `hgdb_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `hgdb_id` ))ENGINE=InnoDB DEFAULT CHARSET=utf8;

MySQL 是用 AUTO_INCREMENT 这个属性来标识字段的自增。
PostgreSQL 使用序列来标识字段的自增长:

CREATE TABLE hgdb(
    id serial NOT NULL,
    alttext text,
    imgurl text)

SMALLSERIAL、SERIAL 和 BIGSERIAL 范围:

伪类型存储大小范围
SMALLSERIAL2字节1 到 32,767
SERIAL4字节1 到 2,147,483,647
BIGSERIAL8字节1 到 922,337,2036,854,775,807

语法

SERIAL 数据类型基础语法如下:

CREATE TABLE tablename (
   colname SERIAL);

实例

假定我们要创建一张 COMPANY 表,并创建下面几个字段:

highgo=# CREATE TABLE COMPANY(
   ID  SERIAL PRIMARY KEY,
   NAME           TEXT      NOT NULL,
   AGE            INT       NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL);

现在往表中插入几条记录:

INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ('张三', 32, '济南', 20000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( '李四', 25, '青岛', 15000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( '王五', 23, '北京', 20000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( '赵六', 25, '上海 ', 65000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( '小明', 27, '广州', 85000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( '小红', 22, '深圳', 45000.00 );
INSERT INTO COMPANY   (NAME,AGE,ADDRESS,SALARY) 
VALUES ( '小强', 24, '成都', 10000.00 );

查看 COMPANY 表的记录如下:

highgo=# select  * from company ;
 id | name | age |                       address                        | salary 
----+------+-----+------------------------------------------------------+--------
  1 | 张三 |  32 | 济南                                                 |  20000
  2 | 李四 |  25 | 青岛                                                 |  15000
  3 | 王五 |  23 | 北京                                                 |  20000
  4 | 赵六 |  25 | 上海                                                 |  65000
  5 | 小明 |  27 | 广州                                                 |  85000
  6 | 小红 |  22 | 深圳                                                 |  45000
  7 | 小强 |  24 | 成都                                                 |  10000
(7 行记录)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值