mysql如何设置自增主键

mysql如何设置自增主键,第1张

1.主键语法

①创建时:create table sc (

studentno int,

courseid int,

score int,

primary key (studentno) )

②修改时:ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名)

前提是原先没有设置主键。

2.外键语法

①创建时:create table sc (

studentno int,

courseid int,

score int,

foreign key (courseid) )

②修改时:

ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列]

3.使用组合主键

如果一列不能唯一区分一个表里的记录时,可以考虑多个列组合起来达到区分表记录的唯一性,形式

①创建时:create table sc (

studentno int,

courseid int,

score int,

primary key (studentno,courseid) )

②修改时:alter table tb_name add primary key (字段1,字段2,字段3)

前提是原来表中没有设置主键,若原先已有主键则会报错。

MySQL 数据库的语法, 与其它数据库的, 有些差异。

使用 CHANGE COLUMN 来修改列的名字,还必须 设置 列的数据类型

mysql>desc test_tab

+-------+-------------+------+-----+---------+-------+

| Field | Type| Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id| int(11) | NO | PRI | 0 | |

| name | varchar(10) | YES | | NULL| |

| age | int(11) | YES | | NULL| |

| val | varchar(10) | YES | | NULL| |

+-------+-------------+------+-----+---------+-------+

4 rows in set (0.00 sec)

mysql>ALTER TABLE test_tab

-> CHANGE COLUMN val val2 VARCHAR(10)

Query OK, 0 rows affected (0.13 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql>desc test_tab

+-------+-------------+------+-----+---------+-------+

| Field | Type| Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| id| int(11) | NO | PRI | 0 | |

| name | varchar(10) | YES | | NULL| |

| age | int(11) | YES | | NULL| |

| val2 | varchar(10) | YES | | NULL| |

+-------+-------------+------+-----+---------+-------+

4 rows in set (0.02 sec)

注: RENAME COLUMN 是 Oracle 与 DB2 与 PostgreSQL 的语法:

例如:

Oracle:

SQL>ALTER TABLE test_tab

2RENAME COLUMN val TO val2

Table altered.

DB2:

db2 =>ALTER TABLE test_tab

db2 (cont.) => RENAME COLUMN val TO val2

DB20000I SQL 命令成功完成。

db2 =>select * from test_tab

ID NAME AGE VAL2

----------- ---------- ----------- ----------

0 条记录已选择。

PostgreSQL

Test=# ALTER TABLE test_tab RENAME COLUMN val TO val2

ALTER TABLE

Test=# \d test_tab

资料表 "public.test_tab"

栏位 | 型别 | 修饰词

------+-----------------------+--------

id | integer | 非空

name | character varying(10) |

age | integer |

val2 | character varying(10) |

索引:

"pk_test_tab" PRIMARY KEY, btree (id)

检查约束限制

"test_tab_age_check" CHECK (age >0 AND age <150)

日常开发中经常遇到AUTO_INCREMENT类型自增ID值不符合预期的情况,本经验为大家总结如何修改自增ID的初始值。

方法/步骤

创建表时设置递增ID:

create table users (pkid int auto_increment primary key,...)

2

表创建完成后设置递增ID:

alter table users add pkid int auto_increment primary key

注意:自增字段,一定要设置为primary key.

3

很多时候不希望pkId从1开始,我们可能希望他从10000开始:

alter table users AUTO_INCREMENT=10000

4

你也可以修改现有的递增值, 比如大批量删除数据后,想id从654321退回123456开始:

alter table users AUTO_INCREMENT=123456


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8436301.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存