精华内容
下载资源
问答
  • 如何给一个数据库添加主键

    千次阅读 2020-12-03 09:46:06
    要想给数据库表格增加主键,当然这分为两种情况。 1你还没建立表格。...2.在创建表的时候在所有字段后面使用primary key(主键字段列表)来创建主键(如果有多个字段作为主键被称为复合主键) *CREATE TABLE

    要想给数据库表格增加主键,当然这分为两种情况。
    1你还没建立表格。这时候在create语句中添加即可。

    1.创建表的时候直接在表字段后,跟primary key关键字。(一张表有且只能有一个主键,主键具有唯一性。)
    CREATE TABLE tb
    (
    id INT IDENTITY(1,1) PRIMARY KEY,
    name VARCHAR(20)
    )

    2.在创建表的时候在所有字段后面使用primary key(主键字段列表)来创建主键(如果有多个字段作为主键被称为复合主键)

    *CREATE TABLE table_test(
    id INT NOT NULL,
    name VARCHAR(20) NOT NULL,
    address VARCHAR(20),
    PRIMARY KEY(id)
    );

    复合键这样设置:
    CREATE TABLE table_test(

    user_id INT NOT NULL,

    user_name VARCHAR(20) NOT NULL,

    user_address VARCHAR(20),

    PRIMARY KEY (user_id, user_name)

    );*

    3.在表创建好之后添加主键(表本身没有主键):
    alter table 表名 add primary key(字段列表)

    ALTER TABLE Employees
    ADD CONSTRAINT PK_EmployeesID PRIMARY KEY (EmployeeID)

    给表中没有的字段添加主键:
    ALTER TABLE (表名) ADD id INT(16) NOT NULL
    PRIMARY KEY AUTO_INCREMENT FIRST;

    注:主键必须非空,自增需要自己设置。如下:
    alter table(表名) modify id integer auto_increment

    我们光说了添加主键,那么删除主键怎么搞?
    alter (表名) DROP PRIMARY KEY

    数据库的东西一定要小心去操作,最好有个测试库自己练手,否则。。
    不说了,删库了。 我要跑路了。
    好了,就这些,如果喜欢,就多多关注吧。

    展开全文
  • 建表时创建 方法一 create table tmp_t10 ( c0 varchar2(100) not null primary key, c1 varchar2(100) ) ; 方法二 create table tmp_t10 ( c0 varchar2(100), c1 varchar2(100) ) ; -- Create/Recreate ...

    建表时创建

    方法一

    create table tmp_t10
    (
      c0 varchar2(100) not null primary key,
      c1 varchar2(100)
    )
    ;
    
    

    方法二

    create table tmp_t10
    (
      c0 varchar2(100),
      c1 varchar2(100)
    )
    ;
    
    -- Create/Recreate primary, unique and foreign key constraints 
    alter table tmp_t10
      add constraint pk_tmp_t10 primary key (C0) ;
      
    

    建表后添加

    create table tmp_t10
    (
      c0 varchar2(100) primary key,
      c1 varchar2(100)
    )
    ;
    
    

    方法一

    -- Create/Recreate primary, unique and foreign key constraints 
    alter table tmp_t10
      add constraint pk_tmp_t10 primary key (C0);
    
    

    方法二(推荐)

    create unique index pk_tmp_t10 on tmp_t10(c0) parallel 4 online;
    
    alter table tmp_t10 add constraint pk_tmp_t10  primary key(c0) using index pk_tmp_t10;
    
    alter index pk_tmp_t10 noparallel;
    
    
    展开全文
  • 到此这篇关于Navicat Premium中Oracle创建主键自增的方法的文章就介绍到这了,更多相关Navicat Premium主键自增内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!
  • 创建表设置主键为自增长,在插入数据是由于mybatis-plus会自动插入一个id到实体对象,报类型不匹配的错误,错误如下 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis....

    **

    达梦数据库 mybatis-plus

    表中主键设置为自增长时,插入数据报错

    **

    创建表时设置了主键为自增长,在插入数据是由于mybatis-plus会自动插入一个id到实体对象,报类型不匹配的错误,错误如下
    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property ‘id’ of ‘class com.css.modules.pro.entity.ProResult’ with value ‘59e46f7414146a56813071acea920c6e’ Cause: java.lang.IllegalArgumentException: argument type mismatch\r\n\tat org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)\r\n\tat org.mybatis.spring.SqlSessionTemplateKaTeX parse error: Can't use function '\r' in math mode at position 58: …plate.java:440)\̲r̲\n\tat com.sun.…Proxy110.insert(Unknown Source)\r\n\tat org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:271)\r\n\tat com.baomidou.mybatisplus.core.override.

    解决方案:
    1.将id字段类型改为long
    在这里插入图片描述

    2.在实体类中主键id字段上添加注解如下
    @TableId(value = “ID”,type = IdType.AUTO)
    在这里插入图片描述

    value后面对应的是数据库中的字段名
    type为AUTO,表示“数据库ID自增”

    展开全文
  • MySQL InnoDB数据表缺少主键会怎样

    千次阅读 2020-07-03 17:46:05
    MySQL数据表使用InnoDB作为存储引擎的时候,数据结构就是使用B+树,而数据本身存储在主键索引上,也就是通常所说的聚簇索引,也就是每个都需要有个聚簇索引树,但是,在建表的时候却发现可以不用指定主键,那么...

    问题

    MySQL数据表使用InnoDB作为存储引擎的时候,数据结构就是使用B+树,而数据本身存储在主键索引上,也就是通常所说的聚簇索引,也就是每个表都需要有个聚簇索引树,但是,在建表的时候却发现可以不用指定主键,那么MySQL对于没有指定主键的表示如何处理的呢?

    InnoDB索引

    对于InnoDB,可以简单地把所有数据视为索引,每一个索引都对应一个B+数,而主键对应的索引就是聚簇索引,表的所有数据都存储在聚簇索引上,而除了聚簇索引的普通索引存储的只是主键的引用,所以,查询的时候对于普通索引需要进行回表才能取到具体数据。

    缺少主键MySQL如何处理

    既然InnoDB对数据的存储必须依赖于主键,那么对于没有创建主键的表,该怎么办?

    InnoDB对聚簇索引处理如下: - 如果定义了主键,那么InnoDB会使用主键作为聚簇索引 - 如果没有定义主键,那么会使用第一非空的唯一索引(NOT NULL and UNIQUE INDEX)作为聚簇索引 - 如果既没有主键也找不到合适的非空索引,那么InnoDB会自动生成一个不可见的名为ROW_ID的列名为GEN_CLUST_INDEX的聚簇索引,该列是一个6字节的自增数值,随着插入而自增

    很明显,缺少主键的表,InnoDB会内置一列用于聚簇索引来组织数据。而没有建立主键的话就没法通过主键来进行索引,查询的时候都是全表扫描,小数据量没问题,大数据量就会出现性能问题。

    但是,问题真的只是查询影响吗?不是的,对于生成的ROW_ID,其自增的实现来源于一个全局的序列,而所以有ROW_ID的表共享该序列,这也意味着插入的时候生成需要共享一个序列,那么高并发插入的时候为了保持唯一性就避免不了锁的竞争,进而影响性能。

    Returns a new row id.
     @return the new id */
     UNIV_INLINE
     row_id_t
     dict_sys_get_new_row_id(void)
     {
        row_id_t  id;
    
        mutex_enter(&(dict_sys->mutex));
    
        id = dict_sys->row_id;
    
        if (0 == (id % DICT_HDR_ROW_ID_WRITE_MARGIN)) {
    
          dict_hdr_flush_row_id();
        }
    
        dict_sys->row_id++;
    
        mutex_exit(&(dict_sys->mutex));
    
        return(id);
     }
    

    缺少主键或者非空索引存在问题

    • 使用不了主键索引,查询会进行全表扫描
    • 影响数据插入性能,插入数据需要生成ROW_ID,而生成的ROW_ID是全局共享的,并发会导致锁竞争,影响性能

    为每个表设置主键

    既然知道InnoDB对数据的存储和处理都是基于聚簇索引的,那么,在建表时候要注意主键的重要性,为每个表都设置一个主键,如果没有合适的字段来作为主键,可以设置一个业务无关的的代理主键,可以是自增ID,也可以是UUID(建议使用自增ID,性能较好)。

    总结

    在理解InnoDB的数据结构之后自然而然就会知道主键的重要性,在建表的时候也不会忘记设置主键,无论表设计有无合适的唯一字段,都需要设置一个主键,提高性能的同时也是一种好的习惯,对于后续的拓展以及表之间关联都有一定的拓展性。

    展开全文
  • 表创建之后如何增加主键

    千次阅读 2019-07-15 16:34:15
    表创建完成之后需要加主键,可以用: alter table 【表名】 add constraint 【主键名】 primary key (【字段】); 如:alter table test add constraint PK_TEST primary key (aae948); 那如何在表创建时建主键呢? ...
  • 主键mysql表创建主键

    千次阅读 2018-12-26 08:49:23
    这是笔者在实际工作过程中遇到的问题。 背景: 由于一些原因,导致以前的数据库中的一些是...一般出现这种情况,首先你需要考虑:该数据表是否是分区? 怎么查看是分区还是非分区: 语法: SHOW CREATE TABL...
  • SQL-已存在数据表主键设置递增

    千次阅读 2017-11-30 15:02:58
    但是MySQL和SQL server的语句有区别,所以打开时会有很多错误,这些错误只是和MySQL有关,核心的创建表之类的是没问题的,所以可以删除没用的只剩创建插入的语句,然后执行。 刚发现一个问题,M
  • SQL Server 创建表 添加主键 添加列常用SQL语句

    万次阅读 多人点赞 2018-07-08 15:33:00
    alter table 表名 drop constraint 主键名 --添加主键 alter table 表名 add constraint 主键名 primary key(字段名1,字段名2……) --添加非聚集索引的主键 alter table 表名 add constraint 主键名 primary ...
  • ORACLE表设置主键自增

    千次阅读 2018-07-23 15:41:08
    --创建表 create table BJ_ZR_LNGWEEKREPORT_GasCompnt( idNumber number primary key, --主键、自增长 gasName NVARCHAR2(100) not null, gasRatio NUMBER(10,2) not null, salesDate DATE ); --创建序列 CREATE ...
  • SQLITE数据表主键设置Id自增方法

    千次阅读 2019-07-24 14:52:34
    网上查到资料说,从 SQLite 的 2.3.4 版本开始,如果将一个中的一个字段声明为 INTEGER PRIMARY KEY,那么只需向该的该字段插入一个 NULL 值,这个 NULL 值将自动被更换为比中该字段所有行的最大值大 1 的整数...
  • 之前用mysql习惯了,所以建表都是有自增主键的,建表规范里面大部分都是这样约定的,比如:(`id` BIGINT (11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键id'),那么到了postgres里面,发现么有这样的类似...
  • 主键(PRIMARY KEY)约束的作用 不允许输入重复的值 不能取空值 当主键是由多个属性组成时某一属性上的数据可以重复但其组合必须是唯一的每个属性的值都不能为空 一个上只能有一个主键创建数据表 4.创建约束(1)...
  • MySql之DDL操作创建表(添加主键, 外键约束以及基本的数据类型)
  • 0 在创建表前修改一下系统默认时间格式 alter session set nls_date_format = 'yyyy-mm-dd'; 1 创建一个 CREATE TABLE user_record( ID NUMBER(11) NOT NULL PRIMARY KEY, uptime DATE default sysdate not ...
  • --删除主键alter table 表名 drop constraint 主键名--添加主键alter table 表名 add constraint 主键名 primary key(字段名1,字段名2……)--添加非聚集索引的主键alter table 表名 add constraint 主键名 primary ...
  • 需要按照要求给表创建主键创建索引,创建外键(并设置删除和更新规则) 一、创建主键 ​ 自己创建一个数据库和最少两个(student 和 course ),然后上图:点击创建主键 [外链图片转存失败,源站可能有防盗...
  • alter table (表名) add primary key(id); -----设置主键 alter table (表名) modify id int auto_increment; --------设置自动增长
  • #创建数据表SQL语句 我这里是python sql= ''' create table test_users( id int primary key not null auto_increment comment 'ID', name varchar(100) not null comment '用户名', nickname varc...
  • 为有数据的数据库添加主键

    千次阅读 2017-09-27 15:03:22
    为有数据的数据库添加主键 一.背景  1.数据库设计人员可能大意或者考虑不周全,设计数据库时某个忘记设计主键,后来在测试阶段发现一个bug,经调试为缺少主键,故与大家分享。 二...
  • SQL语句(二)创建主键和约束的数据表 内容摘要 创建主键和约束的 创建带组合主键和外键的 1. 创建主键和约束的 Student (学生) CREATE TABLE Student ( sclass...
  • 关于数据表主键命名

    千次阅读 2020-02-21 22:16:29
    1、表名_id 如:user_id 如果表名过长,则字段名也会很长...数据表较多的情况命名比较困难,可能会出现相同的字段名。 3、统一主键都是 id 比较清晰,但是有风险,关联查询时可能会出现错误而发现不了。慎用。 ...
  • 修改数据表之添加主键约束

    千次阅读 2020-11-09 15:21:11
    需要对这个中的一个字段设置主键: alter table table_name add primary key(id); alter table表名add primary key(字段名); 2.一个表创建之后, 需要对这个中的一个字段设置为唯一约束: alter table ...
  • 有些时候我们设计可能没想到使用主键,或者不用主键可以完全满足,但是后来由于需求等改变,需要对已经有数据再加入主键,由于暂且没有想到更简单的办法,所以给大家分享一下我的办法。 比如有以下aa,给aa...
  • Kudu 创建主键

    千次阅读 2019-08-09 23:43:48
    Impala 操作/读写 Kudu,使用druid连接池 Kudu 原理、API使用、代码 Kudu Java API 条件查询 spark读取kudu导出数据为parquet文件... Kudu 创建主键 每个Kudu 必须设置Pimary Key(unique), 另外Kudu...
  • 创建数据表

    千次阅读 2019-05-21 16:00:42
    文章目录一、创建数据表 一、创建数据表 在之前我们使用的emp、dept、salgrade的数据都是数据库提供的,我们也可以在自己使用语句创建数据表,基本语法如下: CREATE TABLE 名称(  字段 1 字段类型,  ...
  • Oracle创建主键的三种方式

    千次阅读 2021-03-05 10:11:58
    Oracle中创建主键,可以有几种方式。第一种,在建表的时候同时指定主键,SQL> create table t_pk_01 (id number, constraint pk_id...
  • 创建外键,声明主键的方式小结,mysql,主键,外键,数据类型,5.mysql 数据类型

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 321,405
精华内容 128,562
关键字:

创建数据表设置主键