精华内容
下载资源
问答
  • 怎么把字段设置为主键
    千次阅读
    2021-04-23 23:05:25

    alter table fruits add primary key(f_id);

    更多相关内容
  • 修改mysql字段为主键且自增

    千次阅读 2022-02-22 17:25:21
    最近遇到一个场景,不重新建表,重新导入数据的情况下,对一张表新增一列主键,且设置为自增,满足某些etl工具的需要。 Alter table 表名 drop primary key;--删除表主键 Alter table 表名 add primary key(`字段...

    最近遇到一个场景,不重新建表,重新导入数据的情况下,对一张表新增一列为主键,且设置为自增,满足某些etl工具的需要。

    Alter table 表名 drop primary key;--删除表主键
    Alter table 表名 add primary key(`字段`);  --修改某列为主键
    Alter table 表名 column id int auto_increment=1; --设置自增,默认值为1

    展开全文
  • php+mysql创建字段设置主键示例
  • mysql sql语句将已存在字段为主键

    千次阅读 2021-08-20 10:58:00
    首先要确定该字段不能空,不能重复 alter table 表名字 add ...如果不想更改字段名字,主键名与字段名字设置为一样即可。 例如 alter table people add constraint people_id primary key (people_Id); ...

    首先要确定该字段不能为空,不能重复

    alter table 表名字 add constraint 主键名 primary key (字段);

    如果不想更改字段名字,主键名与字段名字设置为一样即可。
    例如
    alter table people add constraint people_id primary key (people_id);

    展开全文
  • 在对表进行分区时,如果分区字段没有包含在主键字段内,如表A的主键为ID,分区字段为createtime ,按时间范围分区,代码如下: CREATE TABLE T1 ( id int(8) NOT NULL AUTO_INCREMENT, createtime datetime NOT ...

    MYSQL的分区字段,必须包含在主键字段内

    在对表进行分区时,如果分区字段没有包含在主键字段内,如表A的主键为ID,分区字段为createtime ,按时间范围分区,代码如下:

    CREATE TABLE T1 (
         id int(8) NOT NULL AUTO_INCREMENT,
         createtime datetime NOT NULL,
          PRIMARY KEY (id)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
    PARTITION BY RANGE(TO_DAYS (createtime))
    (
    PARTITION p0 VALUES LESS THAN (TO_DAYS('2010-04-15')),
    PARTITION p1 VALUES LESS THAN (TO_DAYS('2010-05-01')),
    PARTITION p2 VALUES LESS THAN (TO_DAYS('2010-05-15')),
    PARTITION p3 VALUES LESS THAN (TO_DAYS('2010-05-31')),
    PARTITION p4 VALUES LESS THAN (TO_DAYS('2010-06-15')),
    PARTITION p19 VALUES LESS ThAN  MAXVALUE);

    错误提示:#1503

     A PRIMARY KEY MUST INCLUDE ALL COLUMNS IN THE TABLE'S PARTITIONING FUNCTION

    MySQL主键的限制,每一个分区表中的公式中的列,必须在主键/unique key 中包括

    在MYSQL的官方文档里是这么说明的

    18.5.1. Partitioning Keys, Primary Keys, and Unique Keys

    This section discusses the relationship of partitioning keys with primary keys and unique keys. The rule governing this relationship can be expressed as follows: All columns used in the partitioning expression for a partitioned table must be part of every unique key that the table may have. 

    In other words,every unique key on the table must use every columnin the table's partitioning expression. (This also includes the table's primary key, since it is by definition a unique key. This particular case is discussed later in this section.) For example, each of the following table creation statements is invalid: 

    分区字段必须包含在主键字段内,至于为什么MYSQL会这样考虑,CSDN的博主是这么解释的:

    为了确保主键的效率。否则同一主键区的东西一个在A分区,一个在B分区,显然会比较麻烦。

    下面讨论解决办法,毕竟在一张表里,日期做主键的还是不常见。 

    方法1: 

    顺应MYSQL的要求,就把分区字段加入到主键中,组成复合主键

    CREATE TABLE T1 (
         id int(8) NOT NULL AUTO_INCREMENT,
         createtime datetime NOT NULL,
          PRIMARY KEY (id,createtime)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
    PARTITION BY RANGE(TO_DAYS (createtime))
    (
    PARTITION p0 VALUES LESS THAN (TO_DAYS('2010-04-15')),
    PARTITION p1 VALUES LESS THAN (TO_DAYS('2010-05-01')),
    PARTITION p2 VALUES LESS THAN (TO_DAYS('2010-05-15')),
    PARTITION p3 VALUES LESS THAN (TO_DAYS('2010-05-31')),
    PARTITION p4 VALUES LESS THAN (TO_DAYS('2010-06-15')),
    PARTITION p19 VALUES LESS ThAN  MAXVALUE);

     测试通过,分区成功。

    方法2: 

    既然MYSQL要把分区字段包含在主键内才能创建分区,那么在创建表的时候,先不指定主键字段,是否可以呢?

    测试如下:

    CREATE TABLE T1 (
         id int(8) NOT NULL ,
         createtime datetime NOT NULL
          ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
    PARTITION BY RANGE(TO_DAYS (createtime))
    (
    PARTITION p0 VALUES LESS THAN (TO_DAYS('2010-04-15')),
    PARTITION p1 VALUES LESS THAN (TO_DAYS('2010-05-01')),
    PARTITION p2 VALUES LESS THAN (TO_DAYS('2010-05-15')),
    PARTITION p3 VALUES LESS THAN (TO_DAYS('2010-05-31')),
    PARTITION p4 VALUES LESS THAN (TO_DAYS('2010-06-15')),
    PARTITION p19 VALUES LESS ThAN  MAXVALUE);

    测试通过,分区成功。OK

    继续添加上主键

    alter table t1 add PRIMARY KEY(ID)

    错误1503,和前面一样的错误。

    alter table t1 add PRIMARY KEY(ID,createtime)

    创建主键成功,但还是复合主键,看来是没办法了,必须听指挥了。

    主键创建成功,把ID加上自增字段设置

    alter table t1 change id id int not null auto_increment;

    alter table t1 auto_increment=1;

    最后结论,MYSQL的分区字段,必须包含在主键字段内。 

    展开全文
  • 但是允许两个字段联合起来设置为主键,这叫联合主键。创建主键的方式如下:12ALTER TABLE 选课表 ADD CONSTRAINT pk_选课表 PRIMARY KEY(学号);创建联合主键的方式如下:12ALTER TABLE 选课表 ADD ...
  • elasticsearch 主键生成策略以及如何指定
  • 需求: 在mysql数据库中建立字段id自增长; 字段uniquekey不重复; 问题: 在navicat中设置id自增长,uniquekey为主键时报错: Incorrect table definition;...id在索引中设置索引类型任意一个类型,比...
  • alter table stu add column yid int auto_increment not null,add primary key(yid);
  • 一个表有主键,是自增的,我想给表的另一个字段设置主键设置成自增从10000开始自增,在网上找了好多资料都是设置主键的,没有其他字段的,想问下如何写?一个表只能有一个 自增键(有索引即可一般设唯一索引,不...
  • navicat非主键字段设置自增

    千次阅读 2021-01-05 15:15:53
    且需要将该两个字段设置为复合主键,再多余设置一个id字段,作为每条数据的编号, 但在设计表时为了每条数据保持唯一性,即除id字段外,A,B属性必不能相同。 故考虑将ab字段设置为复合主键,id字段自增,但会报错...
  • 相当于一列的数据复制给另一列 语法 :UPDATE 表名 SET 需要数据的列名 = 被复制的列名 例: UPDATE d_inspection SET sortno = id 需要注意:需要数据的那一列的长度应大于等于 被复制那一列的长度,还有...
  • 首先说说如何设置主键,...为字段设置自增长的前提是你得有一个字键,如果你没有任何字段的话是不能设置的,然后设置自增长还要注意的是要之前的格式全部打算去。就像这样~ alter table stuinfo modify num i...
  • 背景:在创建数据库表时,将id字段设置为了主键,并在其中存放了一些数据,由于设计改变要将该表的主键字段设置为自增型,简单记录一下操作方式。 1.原创建表 CREATE TABLE `t_blog` ( `id` varchar(50) NOT NULL ...
  • CREATE TABLE orderitems ( order_num int(11) NOT NULL, order_item int(11) NOT NULL, prod_id char(10) NOT NULL, quantity int(11) NOT NULL, item_price decimal(8,2) NOT NULL, PRIMARY KEY (order_num,orde.....
  • PRIMARY KEY联合主键

    2020-12-14 09:32:40
    分类:①单字段主键;②多字段联合主键; 注意: ①每个表只能定义一个主键 ②唯一性原则 即主键值必须唯一标识表中的每一行,且不能 NULL,即表中不可能存在有相同主键值的两行数据 ③一个字段名只能在联合主键...
  • MySQL 已经存在的列设置主键

    千次阅读 2019-09-27 20:39:25
    改之前我的表里面的信息如下(表名orders): 设置命令: alter table orders add constraint orderid primary key(orderid); alter table orders add constraint 主键的新名字 primary key (要改成主键的列的...
  • 因为Navicat For SQL Server并不能直接将某个字段自增(一般主键)。只能通过SQLServer自带的数据库图形管理界面添加和修改。 我的Navicat For SQL Server 当前版本12.0.29,情况就是这样。 慢着,先不要走,...
  • mysql用命令行如何设置主键

    千次阅读 2021-01-19 11:01:21
    mysql用命令行设置主键的方法:首先进入到mysql命令行工具,并通过use关键字进行到目标数据库里;然后通过命令ADD PRIMARY...3、如果原表已有主键,我们则要先原来的主键删除掉,通过DROP PRIMARY KEY命令:ALTER ...
  • 1.设置字段唯一 ...将上面的user换成你的数据表,id换成你要设置为主键字段名 3.设置字段为递增 alter table user modify id int auto_increment; 将上面的user换成你的数据表,id换成你要设置为
  • 一、创建表 ...1、给表设置主键语句如下: alter table demo add constraint demo_id_pk primary key (id); 2、在navicat中给表设置主键语句如下图: 3、选中demo表,鼠标右键点击设计表可以查看表结构
  • ALTER TABLE sheet1 ADD id INT(16) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST;
  • EF 实体字段设置主键和自增

    千次阅读 2019-10-04 11:58:32
    [Key] //主键 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] //设置自增 public int id { get; set; } [ForeignKey("category")] //外键 public int cate...
  • 请问一下account list表中的acc_id和acc_bankNum设置为联合主键,怎么将该表acc_bankNum和user list中的acc_bankNum设置为外键 ![用户表](https://img-ask.csdn.net/upload/201903/06/1551872995_866154.png) !...
  • 一个数据表,需要两个字段联合起来一块做主键的时候。举例如下: 直接用sql语句的话如下 ALTER TABLE `表名` ADD PRIMARY KEY ( `表中字段名1` , `表中字段名2` ) ; 或者在phpmyadmin中操作,如下图: ...
  • mysql非主键设置自增字段

    千次阅读 2017-11-14 11:27:56
    在数据库建表的时候,设置列自增字段,一般提示该列必须为主键,才能设置自增字段,但是,并非主键才可以设置的。 create table a( id int (11) auto_increment not null, name varchar(20), key(id) ) ...
  • ORACLE 查询表字段信息(是否主键

    千次阅读 2020-08-31 17:42:49
    select distinct ut.COLUMN_NAME,--字段名称 ...ut.NULLABLE,--是否空du CASE b.constraint_type WHEN 'P' THEN 'Y' ELSE 'N' END primaryKeyFlag from user_tab_columns ut inner JOIN user_col_commen...
  • 查看数据表的基本结构 查看指定数据表的结构,包括字段名、字段的数据类型、字段值是否允许空、是否为主键、是否有默认值等 SHOW COLUMNS { FROM | IN } tb_name [{FROM | IN} db_name] ; {DESCRIBE | DESC} tb_...
  • 转自: ...MySQL命令行中(5.6) ALTER TABLE dbname.table ADD UNIQUE (fieldname); 数据库名dbname,表名table,字段名fieldname. ------------------------------------------------...
  • 给MySQL中某表增加一个新字段,并设主键值自动增长并在第一列。 alter table 表名 add ID int(10) primary key AUTO_INCREMENT FIRST;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 437,742
精华内容 175,096
关键字:

怎么把字段设置为主键