精华内容
下载资源
问答
  • 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.....

    在这里插入图片描述

    在这里插入图片描述

    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,order_item),
    KEY FK_OrderItems_Products (prod_id),
    CONSTRAINT FK_OrderItems_Orders FOREIGN KEY (order_num) REFERENCES orders (order_num),
    CONSTRAINT FK_OrderItems_Products FOREIGN KEY (prod_id) REFERENCES products (prod_id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    在这里插入图片描述

    展开全文
  • 如何给一个数据库添加主键

    千次阅读 2020-12-03 09:46:06
    (一张表有只能有一个主键主键具有唯一性。) CREATE TABLE tb ( id INT IDENTITY(1,1) PRIMARY KEY, name VARCHAR(20) ) 2.在创建的时候在所有字段后面使用primary key(主键字段列表)来创建主键(如果多...

    要想给数据库表格增加主键,当然这分为两种情况。
    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

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

    展开全文
  • 一张可以多少个主键

    万次阅读 2018-10-24 09:47:39
    今天学习sql语句的时候看到一张建立的时候两个主键,印象中一张表中主键只能有一个, 一开始理解有一个可能是外键,但是外键也不长这样。 经过查阅资料,发现其实是联合外键。 总的来说,一张中的外键只能...

    今天学习sql语句的时候看到一张表建立的时候有两个主键,印象中一张表中主键只能有一个,

    一开始理解有一个可能是外键,但是外键也不长这样。

    经过查阅资料,发现其实是联合外键。

    总的来说,一张表中的外键只能有一个,多个的时候称为联合外键(好吧这样比较拗口)

    1、数据库的每张表只能有一个主键,不可能有多个主键。

    2、所谓的一张表多个主键,我们称之为联合主键。

         注:联合主键:就是用多个字段一起作为一张表的主键。

    3、主键的主键的作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度。

    那么问题来了,如何建立联合外键呢

    展开全文
  • 外键必须是另一个表主键

    千次阅读 2019-03-01 14:48:49
    不一定是主键,但必须是唯一性索引。 主键约束和唯一性约束都是唯一性索引。 FOREIGN KEY 约束 ...在外键引用中,当一个表的列被引用作为另一个表的主键值的列时,就在两之间创建了链接。这...

    不一定是主键,但必须是唯一性索引。

    主键约束和唯一性约束都是唯一性索引。

     

     

    FOREIGN KEY 约束

    SQL Server 2008

    其他版本

    外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。当创建或修改表时可通过定义 FOREIGN KEY 约束来创建外键。

    在外键引用中,当一个表的列被引用作为另一个表的主键值的列时,就在两表之间创建了链接。这个列就成为第二个表的外键。

    例如,因为销售订单和销售人员之间存在一种逻辑关系,所以 AdventureWorks 数据库中的 Sales.SalesOrderHeader 表含有一个指向Sales.SalesPerson 表的链接。SalesOrderHeader 表中的 SalesPersonID 列与 SalesPerson 表中的主键列相对应。SalesOrderHeader 表中的SalesPersonID 列是指向 SalesPerson 表的外键。

    SalesOrderHeader.SalesPersonID 为外键。

    FOREIGN KEY 约束并不仅仅可以与另一表的 PRIMARY KEY 约束相链接,它还可以定义为引用另一表的 UNIQUE 约束。FOREIGN KEY 约束可以包含空值,但是,如果任何组合 FOREIGN KEY 约束的列包含空值,则将跳过组成 FOREIGN KEY 约束的所有值的验证。若要确保验证了组合 FOREIGN KEY 约束的所有值,请将所有参与列指定为 NOT NULL。

    注意 注意

    FOREIGN KEY 约束可以引用同一数据库的表中的列或同一表中的列。这些称为“自引用”表。例如,请考虑包含三列的一个雇员表:employee_numberemployee_name 和 manager_employee_number。由于经理本身也是雇员,所以从manager_employee_number 列到 employee_number 列存在外键关系。

     

    引用完整性

    尽管 FOREIGN KEY 约束的主要目的是控制可以存储在外键表中的数据,但它还可以控制对主键表中数据的更改。例如,如果在 Sales.SalesPerson表中删除一个销售人员行,而这个销售人员的 ID 由 Sales.SalesOrderHeader 表中的销售订单使用,则这两个表之间关联的完整性将被破坏;SalesOrderHeader 表中删除的销售人员的销售订单因为与 SalesPerson 表中的数据没有链接而变得孤立了。

    FOREIGN KEY 约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改将无法实现,从而确保了引用完整性。如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束中的值相对应,则该操作将失败。若要成功更改或删除 FOREIGN KEY 约束的行,必须先在外键表中删除或更改外键数据,这将把外键链接到不同的主键数据上去。

     

    对 FOREIGN KEY 约束建立索引

    由于以下原因,对外键创建索引通常是有用的:

    • 对 PRIMARY KEY 约束的更改可由相关表中的 FOREIGN KEY 约束检查。

    • 当在查询中组合相关表中的数据时,经常在联接条件中使用外键列,方法是将一个表的 FOREIGN KEY 约束中的列与另一个表中的主键列或唯一键列匹配。索引使 数据库引擎可以在外键表中快速查找相关数据。但是,创建此索引并不是必需的。即使没有对两个相关表定义 PRIMARY KEY 或 FOREIGN KEY 约束,也可以对来自这两个表中的数据进行组合,但两个表间的外键关系说明已用其键作为条件对其进行了优化,以便组合到查询中。有关在联接中使用 FOREIGN KEY 约束的详细信息,请参阅联接基础知识查询类型和索引

     

    表中的 FOREIGN KEY 约束数

    SQL Server 对一个表可以包含的 FOREIGN KEY 约束(引用其他表)数没有预定义限制,对引用特定表的其他表所拥有的 FOREIGN KEY 约束数也没有预定义的限制。但是,实际的 FOREIGN KEY 约束数会受到硬件配置以及数据库和应用程序的设计的限制。建议表中包含的 FOREIGN KEY 约束不要超过 253 个,并且引用该表的 FOREIGN KEY 约束也不要超过 253 个。在设计数据库和应用程序时应考虑强制 FOREIGN KEY 约束的开销。

     

    请参阅

    参考

    CREATE TABLE (Transact-SQL)

    ALTER TABLE (Transact-SQL)

    DROP TABLE (Transact-SQL)

    概念

    创建和修改 FOREIGN KEY 约束

    索引

    展开全文
  • 外键必须是另一个表主键吗 ?

    千次阅读 2021-05-07 14:13:38
    比如学生在设计的时候一般可以用学号作为主键,也可设计一个ID字段,字段由数据库自动生成且唯一。那么对于班级,一个班级对应多个学生,这个时候对于班级和学生之间的外键就可以用学生的ID做外键。 如下所...
  • 1、数据库的每张表只能有一个主键,不可能多个主键。 2、所谓的一张多个主键,我们称之为联合主键。  注:联合主键:就是用多个字段一起作为一张主键。 3、主键主键的作用是保证数据的唯一性和完整性...
  • Computer System Add comments 2010年5月6日更新: 只有真正懂得了这个道理的人, 才算真正理解了...在数据库设计中, 每一个表都应该有一个字段作为主键. 这个字段一般是自增整数字段, 或者某些数据库支持的自动
  • 什么是一个表的外键 他和主键有什么区别吗/?主键:唯一标识中的所有行的一个列或一组列。主键不允许空值。不能存在具有相同的主键值的两个行,因此主键值总是唯一标识单个行。中可以不止一个键唯一标识...
  • 主键

    千次阅读 2014-12-18 09:18:23
    每个表只能有一个主键。 若要设置主键,请在设计视图中打开。选择要使用的字段,然后在功能区上单击“主键”。 什么是好的主键一个好的候选主键具有以下几个特征: 1、唯一标识每一行 2、从不为空或为 ...
  • 刚开始时碰到这个需求时,在网上搜索了一下,发现都说不行,得先删除那主键列再重新增加或者先创建一个临时再把数据导过来,其实在MYSQL中是可以直接修改的。 修改ID字段为自增主键: alter table `test` change `...
  • 在绿色工具里,可以对多字段打上主键的标识“锁”,但这并不表示拥有了多个主键,而是说这几字段共同构成了主键。当然,他们之间也是次序的。查看次序可以使用show index from table。会看到Key_Name中多...
  • !... 请问一下account list中的acc_id和acc_bankNum设置为联合主键,怎么将该acc_bankNum和user list中的acc_bankNum设置为外键 ...(是不是联合主键不能单独一个设置成外键,那么怎么才能设置?还是根本不可以???)
  • 外键:是关联另外一个表主键一个键,保证两个之间的关联性索引:加快搜索效率 为什么主键只有一个?因为主键起始从实现角度来看是一个 唯一 非空 聚类索引, 聚类索引在一个表中只有一个,所以主键只有一个。...
  • MySQL必须有主键吗?

    千次阅读 2020-11-04 19:06:27
    因为聚集索引决定了中数据的物理存储顺序,那么一个表且只有一个聚集索引。一个聚集索引可以包含多个列。好比一个电话本是基于名字,姓氏同时排序。 I nnodb选择一个聚集索引的过程 对于Innodb,主键
  • 例如 当主键为一个的时候 delect from 表名 where id=@id; 当主键为 (主键一,主键二)时? 怎么删除 sql 语句怎么写?
  • mysql在已有主键中新增自增长字段

    千次阅读 热门讨论 2019-09-08 21:11:32
    如标题所示,给数据加自增长字段是很简单的事情,但是如果这个表已经有主键,并且存在数据的情况下,怎么给数据加自增长主键呢?下面咱们来详细说一下这东东。 1、目标需求: (1)数据没有id字段,但是有个...
  • 1、如果设置了主键,那么InnoDB会选择主键作为聚集索引、如果没有显式定义主键,则InnoDB会选择第一个不包含NULL值的唯一索引作为主键索引、如果也没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID作为隐含...
  • PostgreSQL 查看结构、主键(多

    千次阅读 2018-10-11 15:17:16
    在网上查阅的资料都只能查出一张一个主键(我的数据库有些是多个主键维护的),最后还是把不同的解决方法组合起来,解决了既能查看结构,也能查看多个主键。下面是SQL语句: SELECT  A.ordinal_position, ...
  • 在数据合并等操作中不可替代的优势但是由于普通的GUID的分散性使得如果主键加上聚集索引(Clustered Index)会导致在插入记录时效率大大降低SQL SERVER 2005中新增了一个NEWSEQUENTIALID的函数,MSDN的解释是:在...
  • 什么是外键,什么是主键表

    千次阅读 2017-03-17 17:04:42
    1属性:typeid(主键...1是主键表1的主键字段在2中做外键、而1自己却没有外键2是外键表有一个依赖1typeid的字段、作为外键、取值必须是其依赖主键表表1中主键字段的值 ---------------------------
  • 给已有表新增自增长主键 id

    千次阅读 2018-08-24 14:03:22
    在给已有表新增自增长主键id 时需要用如下  ALTER TABLE test_lcm_ ADD COLUMN lcm_id int(11) NOT NULL AUTO_INCREMENT,ADD primary KEY(lcm_id); 注意: 一个表中,最多只能一个自动字段,并且这个自动字段还...
  • 增加主键的sql语句

    万次阅读 2018-01-08 11:46:43
    (一张表有只能有一个主键主键具有唯一性。) 2.在创建的时候在所有字段后面使用primary key(主键字段列表)来创建主键(如果多个字段作为主键被称为复合主键) 3.在创建好之后添加主键...
  • 主键,聚集索引,不是一个东西!

    千次阅读 2019-10-31 19:15:00
    练习:建表时,可不可以不声明主键?(1) create table user( name varchar(10))engine=innodb;(2) insert into user values('shenjian');(3) insert into user values('shenjian');画外音:建表时,不声明主键,...
  • MySql-聚集索引-为什么必须有主键

    千次阅读 2017-11-02 17:17:39
    前几天跟搞C++游戏服务器一同事联动实现一个业务,看到他创建默认没有主键,于是我建议他添加,同事铮铮词说,业务根本用不着,多一个字段多浪费,我瞬间无语,于是跟他解说为什么必须添加?针对MySQL5.6版本中...
  • Hibernate关联映射1:一主键关联

    万次阅读 2013-12-28 10:48:53
    2张关联通过主键形成一对一映射关系,如一个只能有一张身份证 CREATE TABLE `t_identity_card` ( `id` int(11) NOT NULL, `identity` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=Inno

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 187,383
精华内容 74,953
关键字:

一个表只能有一个主键