精华内容
下载资源
问答
  • sql双主键
    千次阅读
    2022-01-04 14:23:47

    创建双主键, 需要使用primary key 关键字:

              string sql = "create table if not exists channel (" +
                    "ip TEXT not null, " +
                    "port INTEGER not null, " +
                    "channelId INTEGER not null," +
                    "name TEXT, " +
                    "type INTEGER, " +
                    "unit TEXT," +                
                    "min TEXT, " +
                    "max TEXT, " +
                    "value TEXT, " + 
                    "lastReportTime TEXT, " +
                    "status INTEGER not null, " +
                    "primary key (ip, port, channelId) " +
                    ")";
                try
                {
                    SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
                    command.ExecuteNonQuery();
                }
                catch (SQLiteException ex)
                {
                    Console.WriteLine(ex);
                }

    以上列子创建了一个通道表,  使用IP, 端口和通道号三个字段为关键字.

    更多相关内容
  • 双主键 alter table [数据表名] with nocheck add constratint [PK_主键名字] primary key nonclustered ( [package_id], [Idcard] ) 多主键 alter table [数据表名] with nocheck add constratint [PK_...

    双主键

     alter table  [数据表名] with nocheck add 
     constratint [PK_主键名字] primary key nonclustered
     (
         [字段名1],
         [字段名2]
     )
    

    多主键

    alter table  [数据表名] with nocheck add 
     constratint [PK_主键名字] primary key nonclustered
     (
        [字段名1],
        [字段名2],
        。。。。
        [字段n]
     )
    

    设计里面主键设置流程(按住Ctrl不松开,然后选中你需要的主键)

    在这里插入图片描述


    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • SQL主键设置

    千次阅读 2020-04-18 17:10:58
    -- SQL PRIMARY约束 -- ① SQL 在 "Persons" 表创建时在 "Id_P" 列创建 PRIMARY KEY 约束 CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(25) NOT NULL, FirstName varchar(255), Address varchar(255...
    -- SQL PRIMARY约束
    -- ① SQL 在 "Persons" 表创建时在 "Id_P" 列创建 PRIMARY KEY 约束
    CREATE TABLE Persons
    (
    Id_P int NOT NULL,
    LastName varchar(25) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    -- PRIMARY KEY (Id_P)
    )
    
    DROP TABLE persons;
    
    DESC Persons; -- 建表后查看数据结构
    
    ALTER TABLE Persons DROP PRIMARY KEY   -- MYSQL 撤销 PRIMARY KEY 约束 
    
    DESC Persons; -- 查看撤销后的状态,发现字段已经无主键;
    
    -- 如果在表已存在的情况下为 "Id_P" 列创建 PRIMARY KEY 约束,请使用下面的 SQL:
    -- 适用于:MySQL / SQL Server / Oracle / MS Access
    
    ALTER TABLE Persons ADD PRIMARY KEY (Id_P)
    
    DESC Persons; -- 查看上一步操作是否添加了主键
    
    ALTER TABLE Persons ADD PRIMARY KEY (LastName) -- 再次添加新的主键
    
    /* ALTER TABLE Persons ADD PRIMARY KEY (LastName)
    > 1068 - Multiple primary key defined
    > 时间: 0s */
    
    DESC Persons; -- 验证主键是否修改成功,结果发现无法单个添加2个及以上的主键
    
    -- 首先预处理:撤销所有主键:
    ALTER TABLE Persons DROP PRIMARY KEY 
    
    -- 为多个列定义 PRIMARY KEY 约束
    ALTER TABLE Persons
    ADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
    
    
    -- 设置双主键:
    
    CREATE TABLE Persons01
    (
    Id_P int NOT NULL,
    LastName varchar(225) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName) -- pk_PersonID 是主键约束的名称
    )
    
    DESC Persons01;-- 查看数据结构
    
    DROP TABLE Persons01;
    
    /*
    注意这个报错,一般是和设置主键的字符长度有关
    1071 - Specified key was too long; max key length is 1000 bytes
    
    */
    
    

    1.1 设置单主键
    在这里插入图片描述
    1.2 设置双主键:
    在这里插入图片描述
    参考文献:https://www.w3school.com.cn/sql/sql_primarykey.asp

    展开全文
  • 1、把主键定义为自动增长标识符类型MySql在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如:create table customers(id int auto_increment primary key not null, name varchar...

    1、把主键定义为自动增长标识符类型

    MySql

    在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如:

    create table customers(id int auto_increment primary key not null, name varchar(15));

    insert into customers(name) values("name1"),("name2");

    select id from customers;

    以上sql语句先创建了customers表,然后插入两条记录,在插入时仅仅设定了name字段的值。最后查询表中id字段,查询结果为:

    c8ccb2bedb20cf7ce4f163ea47b8a6a6.png

    由此可见,一旦把id设为auto_increment类型,mysql数据库会自动按递增的方式为主键赋值。

    Sql Server

    在MS SQLServer中,如果把表的主键设为identity类型,数据库就会自动为主键赋值。例如:

    create table customers(id int identity(1,1) primary key not null, name varchar(15));

    insert into customers(name) values('name1'),('name2');

    select id from customers;

    注意:在sqlserver中字符串用单引号扩起来,而在mysql中可以使用双引号。

    查询结果和mysql的一样。

    3ac55a27b865afdcca5bd9b888e2fd8f.png

    由此可见,一旦把id设为identity类型,MS SQLServer数据库会自动按递增的方式为主键赋值。identity包含两个参数,第一个参数表示起始值,第二个参数表示增量。

    以前经常会碰到这样的问题,当我们删除了一条自增长列为1的记录以后,再次插入的记录自增长列是2了。我们想在插入一条自增长列为1的记录是做不到 的。今天跟同事讨论的时候发现可以通过设置SET IDENTITY_INSERT ON;来取消自增长,等我们插入完数据以后在关闭这个功能。实验如下:

    use TESTDB2

    --step1:创建表

    create table customers(

    id int identity primary key not null,

    name varchar(15)

    );

    --step2:执行插入操作

    insert into customers(id,name) values(1,'name1');

    --报错:An explicit value for the identity column in table 'customers' can only be specified when a column list is used and IDENTITY_INSERT is ON.

    --step3:放开主键列的自增长

    SET IDENTITY_INSERT customers ON;

    --step4:插入两条记录,主键分别为1和3。插入成功

    insert into customers(id,name) values(1,'name1');

    insert into customers(id,name) values(3,'name1');

    --step5:再次插入一个主键为2的记录。插入成功

    insert into customers(id,name) values(2,'name1');

    --step6:插入重复主键,

    --报错:Violation of PRIMARY KEY constraint 'PK__customer__3213E83F00551192'. Cannot insert duplicate key in object 'dbo.customers'.

    insert into customers(id,name) values(3,'name1');

    --step7:关闭IDENTITY_INSERT

    SET IDENTITY_INSERT customers OFF;

    2、从序列中获取自动增长的标识符

    Oracle

    在Oracle中,可以为每张表的主键创建一个单独的序列,然后从这个序列中获取自动增加的标识符,把它赋值给主键。例如一下语句创建了一个名为customer_id_seq的序列,这个序列的起始值为1,增量为2。

    create sequence customer_id_seq increment by 2 start with 1

    一旦定义了customer_id_seq序列,就可以访问序列的curval和nextval属性。

    curval:返回序列的当前值

    nextval:先增加序列的值,然后返回序列值

    以下sql语句先创建了customers表,然后插入两条记录,在插入时设定了id和name字段的值,其中id字段的值来自于customer_id_seq序列。最后查询customers表中的id字段。

    create table customers(id int primary key not null, name varchar(15));

    insert into customers values(customer_id_seq.nextval, 'name1');

    insert into customers values(customer_id_seq.nextval, 'name2');

    select id from customers;

    如果在oracle中执行以上语句,查询结果为:

    3cc133ab77438984b0fe459806d17d09.png

    通过触发器自动添加id字段

    从上述插入语句可以发现,如果每次都要插入customer_id_seq.nextval的值会非常累赘与麻烦,因此可以考虑使用触发器来完成这一步工作。

    创建触发器trg_customers

    create or replace

    trigger trg_customers before insert on customers for each row

    begin

    select CUSTOMER_ID_SEQ.nextval into :new.id from dual;

    end;

    插入一条记录

    insert into customers(name) values('test');

    这是我们会发现这一条记录被插入到数据库中,并且id还是自增长的。

    9e1cab5b823447ba107389424dbbd6f5.png

    展开全文
  • SQL server设置两个主键

    千次阅读 2021-10-09 22:13:33
    SQL server设置多重主键 方法1 可视化操作,用ctrl+鼠标左键点击想设置的主键,然后鼠标右键点击设置主键 方法2 用T-SQL语句,创建表时 primary key(列名1,列名2) 举个栗子: 这样就把studentID和courseID都设置...
  • 1. 创建表create table Student(StudentOID varchar(50), Age integer)//表是可以没有主键的2. 创建表时指定主键create table MyCustomer (CustomerID int Identity(100,1) Primary Key,CompanyName nvarchar(50))//...
  • 用T-sql语句设置两个主键sqlserver

    千次阅读 2020-03-17 08:54:06
    通过PRIMARY KEY(列名1,列名2)这条语句即可实现
  • -- 如果不存在主键列,则设置双主键 if ((select count(*) from information_schema.key_column_usage where table_schema ='cbs' and table_name='mailbox' and constraint_name ='primary' and (column_name ='...
  • 1.修改字段长度 alter table 表名 alter column 表字段 nvarchar(300) not null 2.删除字段 alter table 表名 drop column 表字段 ...5.创建双主键(前提条件主键字段不能为空) alter table 表名with nocheck ad
  • 1、把主键定义为自动增长标识符类型MySql在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如:create table customers(id int auto_increment primary key not null, name varchar...
  • mysql建表时怎么设置主键

    千次阅读 2021-03-04 02:44:07
    设置方法:在“CREATE TABLE”语句中,通过“PRIMARY KEY”关键字来指定主键,语法格式“字段名 数据类型 PRIMARY KEY [默认值]”或“[CONSTRAINT 约束名] PRIMARY KEY 字段名”。主键(PRIMARY KEY)的完整称呼是...
  • -- 如果不存在主键列,则设置双主键 IF ((SELECT count(*) FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA ='cbs' AND table_name='mailbox' AND CONSTRAINT_NAME ='PRIMARY' AND (COLUMN_NAME ='...
  • 1背景 :在使用hibernate的过程中,遇到了联合主键的困境。 由于原有项目是原生的java语言写的,而现在需要使用hibernate重写。原有的数据库表的设计中,很多表中都是用了联合主键 ,因为这样的设计符合业务上的概念...
  • table username age nub张三 12 23张三 12 23张三 12 23李四 13 21李四 13 21王五 11 25查询重复记录(一条)sql:select * from user group by name,age,nub having count(*)>1;(如需统计条数请使用conut)set:name...
  • 2,oracle中如果使用关键字,需要用 引号引起了。所以下面例子中出现的引号可以理解成转义的。/ 在执行多个sql是用 / 可以区分。现在就直接来sql语句。检查是否存在该表,并删除declarenum number;beginselect.....
  • sqlserver设置两个及两个以上主键

    万次阅读 多人点赞 2018-10-14 17:34:13
    sqlserver设置两个及两个以上主键 ** 所谓主键是指能够当唯一标识出某条记录的某一列。 如果你想建立两个列及以上的列为主键,可能会发生错误。 首先要明确主键只有一个,但是我们可以设置主键组来设置主键。这样两...
  • Mysql增加主键或者修改主键sql语句

    万次阅读 多人点赞 2018-07-31 10:43:37
    Mysql增加主键或者更改表的列为主键sql语句 添加表字段 alter table table1 add transactor varchar(10) not Null; alter table table1 add id int unsigned not Null auto_increment primary key 修改某个表...
  • 如何在sql server中设置两个主键

    千次阅读 2021-01-16 02:11:37
    展开全部主键是数据库表的一个重要属性,建立...建立主键有两种方法:一种是在数据库提供的GUI环境中建立,另一种是通过SQL语句执行建立,下面分别介绍。1、在数据库提供的GUI环境中建立。输入表信息后按Ctrl键同...
  • 背景: 重新导入数据后, 主键ID增长了很多,但是序列值没有对应增加。 常规操作: 打开PL/SQL 找到对应的序列手动修改nextval 非常规: 用SQL实现自动化 数据库特殊表: user_cons_columns ,DUAL 序列: sequence...
  • 使用replace into时,若数据同时涉及主键和唯一键
  • sql新建数据库表,及添加多个主键

    千次阅读 2021-01-19 08:50:09
    create table tb_Modules ( module_id int, model_Name varchar(50), page_id int(外键) ) drop table tb_Modules 删除表 ----------------------------------------------(sql语句添加多个主键) create table tb_...
  • 参考文献1、把主键定义为自动增长标识符类型MySql在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如:create table customers(id int auto_increment primary key not null, name ...
  • 如何在sql server中设置两个主键

    千次阅读 2020-12-21 20:37:04
    建立主键有两种方法:一种是在数据库提供的GUI环境中建立,另一种是通过SQL语句执行建立,下面分别介绍。1、在数据库提供的GUI环境中建立。输入表信息后按Ctrl键同时选中多行,然后点上面的主键按钮...
  • 自编程序由单机版改为网络版后,使用范围迅速扩大,如何保障数据库万无一失成为一个重要解决的问题于是想到架设服务器并数据自动同步,详细步骤如下
  • 大家好: 现在数据库里面有两张表table a ,table b,结构是一样的, 只是a表记录2015年数据,b表记录2016年数据。有一个字段是零件号, 现在我想取出两张表中的不重复零件号的数量,大家看看怎么操作。...
  • 1.联合主键,SQL语句怎么写建立主键有两种方法:一种是在数据库提供的GUI环境中建立,另一种是通过SQL语句执行建立,下面分别介绍。1.在数据库提供的GUI环境中建立(以SQL7为例)。输入表信息后按Ctrl键同时选中多行,...
  • 我们同时启动A,B,就会出现主键ID重复 解决方法: 我们只要保证两台服务器上插入的自增长数据不同就可以了 如:A查奇数ID,B插偶数ID,当然如果服务器多的话,你可以定义算法,只要不同就可以了 在这里我们在A,B上...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,871
精华内容 22,748
关键字:

sql双主键