精华内容
下载资源
问答
  • --上面這句一定要用到 ) check_id,check_no是这个表的联合主键 一个表只允许有一个主键 但一个主键可以允许由多个字段构成复合主键 所以楼主的写法是不行的,用了多个主键 冒牌的可以,由多个字段构成一个主键 而一个...

    完全可以create tabletabCheck

    (

    check_idint not null,

    check_noint not null,

    startdatedatetime,

    enddatedatetime.......................CONSTRAINT [PK_tabCheck] PRIMARY KEY CLUSTERED (check_id,check_no) ON [PRIMARY]

    --上面這句一定要用到

    )

    check_id,check_no是这个表的联合主键

    一个表只允许有一个主键

    但一个主键可以允许由多个字段构成复合主键

    所以楼主的写法是不行的,用了多个主键

    冒牌的可以,由多个字段构成一个主键

    而一个表允许多个唯一键,所以如果仅仅是为了限制字段的记录不重复的话,可以用一个主键,多个唯一键的方式.--如果楼主是要 paper_name+author_id 构成复合主键

    create tablepaper (

    paper_namevarchar(50) not null,

    author_idchar(10) not null,constraint PK_paper primary key(paper_name,author_id) --复合主键

    )--如果楼主是要 paper_name 与 author_id 的值都不重复,则:

    create tablepaper (

    paper_namevarchar(50) not null primary key, --用主键做限制

    author_id char(10) not null constraint UQ_paper_author_id unique --用唯一键做限制

    )

    我们在create table时经常会碰到这样的语句,例如:CityNamenvarchar(10)collate chinese_prc_ci_as null,那它到底是什么意思呢?不妨看看下面:

    首先,collate是一个子句,可应用于数据库定义或列定义以定义排序规则,或应用于字符串表达式以应用排序规则投影。

    语法是collate collation_name

    collation_name ::={windows_collation_name}|{sql_collation_name}

    参数collate_name是应用于表达式、列定义或数据库定义的排序规则的名称。collation_name 可以只是指定的 Windows_collation_name 或 SQL_collation_name。

    Windows_collation_name 是 Windows 排序规则的排序规则名称。参见 Windows 排序规则名称。

    SQL_collation_name 是 SQL 排序规则的排序规则名称。参见 SQL 排序规则名称。

    下面简单介绍一下排序规则:

    什么叫排序规则呢?MS是这样描述的:"在 Microsoft SQL Server2000中,

    字符串的物理存储由排序规则控制。排序规则指定表示每个字符的位模式以及存

    储和比较字符所使用的规则。"

    在查询分析器内执行下面语句,可以得到SQL SERVER支持的所有排序规则。select * from::fn_helpcollations()

    排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。

    如:

    Chinese_PRC_CS_AI_WS

    前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则。

    排序规则的后半部份即后缀 含义:

    _BIN 二进制排序

    _CI(CS) 是否区分大小写,CI不区分,CS区分

    _AI(AS) 是否区分重音,AI不区分,AS区分

    _KI(KS) 是否区分假名类型,KI不区分,KS区分

    _WI(WS) 是否区分宽度 WI不区分,WS区分

    区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。

    区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,

    比较还将重音不同的字母视为不等。

    区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。

    区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项

    展开全文
  • MySQL多字段主键

    千次阅读 2021-01-18 18:49:51
    MySql多字段主键又可以成为复合主键,复合主键也是主键的一种与主键具有相同的功能和定义,所谓的复合主键,就是指表的主键含有一以上的字段组成 。MySQL多字段主键又可以成为复合主键。复合主键也是主键的一种与...

    MySql多字段主键又可以成为复合主键,复合主键也是主键的一种与主键具有相同的功能和定义,所谓的复合主键,就是指表的主键含有一个以上的字段组成 。

    d6a611389884d0c31b4ea9bd74eadda5.png

    MySQL多字段主键又可以成为复合主键。复合主键也是主键的一种与主键具有相同的功能和定义。

    什么是数据表的复合主键 ?

    所谓的复合主键,就是指你表的主键含有一个以上的字段组成 。

    例如:create table test

    (

    name varchar(19),

    id number,

    value varchar(10),

    primary key (name,id)

    )

    上面的name和id字段组合起来就是你test表的复合主键

    它的出现是因为你的name字段可能会出现重名,所以要加上ID字段这样就可以保证你记录的唯一性

    一般情况下,主键的字段长度和字段数目要越少越好

    什么时候使用复合主键?

    在一个主键不能唯一标识这个表中的记录的时候才使用复合主键

    比如这种时候商品品牌商品型号

    诺基亚920

    三星NOTE2

    诺基亚8088

    比如这样商品品牌可能有重复,都是诺基亚,但是诺基亚厂商生产的商品型号是不会重复的

    也比如,可能好多品牌都有920这个型号,但是一个品牌只有一个920的型号

    所以就靠这样的联合主键来确定这条记录的唯一性

    展开全文
  • 什么是数据表的复合主键所谓的复合主键 就是指你表的主键含有一以上的字段组成比如create table test(name varchar(19),id number,value varchar(10),primary key (name,id))上面的name和id字段组合起来就是你test...

    什么是数据表的复合主键

    所谓的复合主键 就是指你表的主键含有一个以上的字段组成

    比如

    create table test

    (

    name varchar(19),

    id number,

    value varchar(10),

    primary key (name,id)

    )

    上面的name和id字段组合起来就是你test表的复合主键

    它的出现是因为你的name字段可能会出现重名,所以要加上ID字段这样就可以保证你记录的唯一性

    一般情况下,主键的字段长度和字段数目要越少越好

    KEY

    1. 如果Key是空的, 那么该列值的可以重复, 表示该列没有索引, 或者是一个非唯一的复合索引的非前导列

    2. 如果Key是PRI,  那么该列是主键的组成部分

    3. 如果Key是UNI,  那么该列是一个唯一值索引的第一列(前导列),并别不能含有空值(NULL)

    4. 如果Key是MUL,  那么该列的值可以重复, 该列是一个非唯一索引的前导列(第一列)或者是一个唯一性索引的组成部分但是可以含有空值NULL

    如果对于一个列的定义,同时满足上述4种情况的多种,比如一个列既是PRI,又是UNI

    那么"desc 表名"的时候,显示的Key值按照优先级来显示 PRI->UNI->MUL

    那么此时,显示PRI

    一个唯一性索引列可以显示为PRI,并且该列不能含有空值,同时该表没有主键

    一个唯一性索引列可以显示为MUL, 如果多列构成了一个唯一性复合索引

    因为虽然索引的多列组合是唯一的,比如ID+NAME是唯一的,但是没一个单独的列依然可以有重复的值

    只要ID+NAME是唯一的即可

    展开全文
  • I have got errors when I tried to install the MySql tables, error:"#1064 - You have an error in your SQL syntax"and error:"#1068 - Multiple primary key defined "This is the database:CREATE TABLE messa...

    I have got errors when I tried to install the MySql tables, error:

    "#1064 - You have an error in your SQL syntax"

    and error:

    "#1068 - Multiple primary key defined "

    This is the database:

    CREATE TABLE messages (

    msg_id INT PRIMARY KEY AUTO_INCREMENT,

    message VARCHAR(200),

    uid_fk INT(10),

    ip VARCHAR(45),

    created INT(10),

    uploads VARCHAR(50),

    profile_uid INT(10)

    PRIMARY KEY (`msg_id`),

    KEY `uid_fk` (`uid_fk`)

    );

    CREATE TABLE comments (

    com_id INT PRIMARY KEY AUTO_INCREMENT,

    comment VARCHAR(200),

    msg_id_fk INT(10),

    uid_fk INT(10),

    ip VARCHAR(45),

    created INT(10),

    PRIMARY KEY (`com_id`),

    KEY `msg_id_fk` (`msg_id_fk`),

    KEY `uid_fk` (`uid_fk`)

    );

    CREATE TABLE likes (

    like_id INT PRIMARY KEY AUTO_INCREMENT,

    msg_id_fk INT(10),

    uid_fk INT(10),

    PRIMARY KEY (`like_id`),

    KEY `msg_id_fk` (`msg_id_fk`),

    KEY `uid_fk` (`uid_fk`)

    );

    CREATE TABLE user_uploads (

    id INT PRIMARY KEY AUTO_INCREMENT,

    image_path VARCHAR(500),

    uid_fk INT(10),

    PRIMARY KEY (`id`),

    KEY `uid_fk` (`uid_fk`)

    );

    CREATE TABLE follow_user (

    fid INT PRIMARY KEY AUTO_INCREMENT,

    uid_fk INT(10),

    following_uid INT(10),

    PRIMARY KEY (`fid`),

    KEY `uid_fk` (`uid_fk`)

    );

    these are the errors images:

    3Gb9V.png

    G1FOu.png

    How to fix it?

    解决方案

    Either use the inline syntax (msg_id INT PRIMARY KEY AUTO_INCREMENT) or declare it afterwards (PRIMARY KEY (com_id)), not both : they conflict.

    展开全文
  • 关于数据库表中的主键的问题,之前一直以为数据库中表,只能是创建一个主键,并没有对主键有一个很好的理解,这次做项目中涉及到数据库中的表的创建,我看到自己创建的表,感觉很垃圾啊,很随意,一点都没有规范性,...
  • MySQL数据库中指定的两个主键

    千次阅读 2021-01-27 07:07:41
    我正在尝试创建一测试数据库,它是预先存在的数据库的副本....在模型中,表中的一表有两列标识为主键.column1 = models.IntegerField(primary_key = True)column2 = models.IntegerField(prima...
  • mysql-主键中的NULL值我有一包含几列组成主键的表。 存储的数据的性质允许这些字段中的某些字段具有NULL值。 我这样设计我的桌子:CREATE TABLE `test` (`Field1` SMALLINT(5) UNSIGNED NOT NULL,`Field2` ...
  • mysql建表时设置主键的方法

    千次阅读 2021-02-02 09:04:51
    mysql建表时设置主键的方法发布时间:2020-10-10 15:17:28来源:亿速云阅读:119作者:小新mysql建表时设置主键的方法?这问题可能是我们日常学习或工作经常见到的。希望通过这问题能让你收获颇深。下面是小编给...
  • mysql修改添加主键的方法:执行【ALTER TABLE `test2` DROP PRIMARY KEY ,ADD PRIMARY KEY ( `id` );】语句即可修改主键。添加表字段alter table table1 add transactor varchar(10) not Null;alter table table1 ...
  • mysql怎么添加复合主键

    千次阅读 2021-01-19 17:14:54
    主键约束即在表中定义个主键来唯一确定表中每一行数据的标识符。主键可以是表中的某一列或者列的组合,其中由列组合的主键称为复合主键。复合主键不能包含不必要的多余列。当把复合主键的某一列删除后,如果...
  • 1.主键的定义 主关键字(primary key): 是表中的一个或者多个字段,它的值用于唯一的标识表中的某一条记录。 问题:一张表,有多个主键,不同主键之间是否可以重复? 答案:可以的
  • MySQL列属性 之 主键

    2021-01-26 02:17:34
    MySQL列属性 之 主键主键主键:primary key, 表中主要的键,每张表可以设置主键主键可以是一个字段或者多个字段。多个字段联合起来做主键叫复合主键主键是用来唯一标识一条记录的,不能重复。增加主键在 SQL ...
  • mysql如何添加主键

    千次阅读 2021-01-18 18:15:25
    “主键(PRIMARY KEY)”的完整称呼是“主键约束”。...主键约束即在表中定义个主键来唯一确定表中每一行数据的标识符。主键可以是表中的某一列或者列的组合,其中由列组合的主键称为复合主键。主键应该...
  • 表都有一名为“ProductNo”的字段,该字段定义为PRIMARY KEY和UNIQUE.是否可以在表’child’中定义字段’ProductNo’,并将表’master’中的相同字段定义为PRIMARY UNIQUE?master:ID | ProductNochild:ID | ...
  • 如果使用多个列,则这些列的组合值必须唯一。mysql主键的作用唯一标识表中每行的这个列(或这组列)称为主键。没有主键,更新或删除表中特定行很困难,因为没有安全的方法保证只设计相关的行。迄今为止我们看到的 ...
  • 一张表可以有多少个主键

    千次阅读 2021-01-19 05:33:29
    转自:http://blog.csdn.net/for12/article/details/49300843今天在共工作...1、数据库的每张表只能有一个主键,不可能有多个主键。2、所谓的一张表多个主键,我们称之为联合主键。注:联合主键:就是用多个字段一起...
  • MySQL 中的自增主键

    2021-02-07 14:10:05
    MySQL主键可以是自增的,那么如果在断电重启后新增的值还会延续断电前的自增值吗?自增值默认为1,那么可不可以改变呢?下面就说一下 MySQL的自增值。特点保存策略1、如果存储引擎是 MyISAM,那么这自增值是存储...
  • mysql建表时怎么设置主键

    千次阅读 2021-03-04 02:44:07
    设置方法:在“CREATE TABLE”语句中,通过“PRIMARY KEY”...主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用最为频繁的约束。一般情况下,为了便于 DBMS 更快的查找到表中的记录,都会在表中设置一...
  • 主键(primary key)一列(或一组列),其值能够唯一区分表中的每行。唯一标识表中每行的这列(或这组列)称为主键。没有主键,更新或删除表中特定行很困难,因为没有安全的方法保证只设计相关的行。虽然并不总是都...
  • 我们先了解下InnoDB引擎表的一些关键特征:InnoDB引擎表是基于B+树的索引组织表(IOT)。每表都需要有一聚集索引(clustered ...如果我们定义主键(PRIMARY KEY),那么InnoDB会选择其作为聚集索引;如果没有显式定...
  • mysql数据库外键、主键详解

    千次阅读 2021-01-18 18:41:25
    一、什么是主键、外键:关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如学生表(学号,姓名,性别,班级)其中每个学生的学号是唯一的,...
  • mysql用命令行设置主键的方法:首先进入到mysql命令行工具,并通过use关键字进行到目标数据库里;然后通过命令ADD PRIMARY KEY来添加主键,并回车即可。mysql用命令行设置主键的方法:1、首先我们通过终端进入到...
  • MySQL创建主键

    2021-02-02 10:34:41
    MySQL InnoDB 存储引擎是必须要有一个主键的,主键可以是一个字段或者多个字段,通常建议:主键就一个、主键字段和业务无关、主键字段最好是自增且字段较小(原因:索引原理)。创建主键的三种方式:在建表语句字段后...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 128,729
精华内容 51,491
关键字:

mysql定义多个主键

mysql 订阅