专栏首页国产程序员数据库主键和外键

数据库主键和外键

主键、外键和索引的区别?

主键

外键

索引

定义:

唯一标识一条记录,不能有重复的,不允许为空

表的外键是另一表的主键, 外键可以有重复的, 可以是空值

该字段没有重复值,但可以有一个空值

作用:

用来保证数据完整性

用来和其他表建立联系用的

是提高查询排序的速度

个数:

主键只能有一个

一个表可以有多个外键

一个表可以有多个惟一索引

聚集索引和非聚集索引的区别?

聚集索引一定是唯一索引。但唯一索引不一定是聚集索引。

聚集索引,在索引页里直接存放数据,而非聚集索引在索引页里存放的是索引,这些索引指向专门的数据页的数据。

Mysql和Oracle创建主键:

1、MySQL

create table user_test

(id int auto_increment primary key not null,

name varchar2(15));

2.Oracle

create table user_test (

id int,

name varchar2(15),

constraint PK_ user_test primary key (id) );

修改时:ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名),前提是原先没有设置主键。

创建外键:

ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列] ;

创建组合键:

alter table tb_name add primary key (字段1,字段2,字段3);

ORACLE支持五种类型的完整性约束

NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CHECK (检查)--检查在约束中指定的条件是否得到了满足. UNIQUE (唯一)--保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的. PRIMARY KEY (主键)--用来唯一的标识出表的每一行,并且防止出现NULL值,一个表只能有一个主键约束. POREIGN KEY (外部键)--通过使用公共列在表之间建立一种父子(parent-child)关系,在表上定义的外部键可以指向主键或者其他表的唯一键.

本文分享自微信公众号 - 国产程序员(Monday_lida),作者:Monday

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Nginx实现负载均衡

    负载均衡的优势在访问量少或并发小的时候可能并不明显,且不说淘宝双11、铁道部抢票这种级别的访问量、高并发,就是一般网站的抢购活动时,也会给服务器造成很大压力,可...

    一觉睡到小时候
  • MySql中InnoDB表为什么要建议用自增列做主键

    如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引、如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索...

    一觉睡到小时候
  • GSON搞定任何JSON数据

    一觉睡到小时候
  • 如何让mysql索引更快一点

    在 InnoDB 中,从二级索引回到主键索引查询数据,这个过程称作回表过程,而且这个回表过程是可以被优化的,这个优化就是利用覆盖索引。

    谭小谭
  • 如何让MySQL索引更快一点?

    在 InnoDB 中,从二级索引回到主键索引查询数据,这个过程称作回表过程,而且这个回表过程是可以被优化的,这个优化就是利用覆盖索引。

    江南一点雨
  • 企业面试题|最常问的MySQL面试题集合(一)

    问题1:char、varchar的区别是什么? varchar是变长而char的长度是固定的。如果你的内容是固定大小的,你会得到更好的性能。

    民工哥
  • MySQL开发规范与使用技巧总结

    1.库名、表名、字段名必须使用小写字母,并采用下划线分割。 a)MySQL有配置参数lower_case_table_names,不可动态更改,Linux系统...

    Java后端技术
  • 仅限10名 | 腾讯云数字孪生城市峰会现场参会资格等你抢!

    峰会时间:6月22日14:30~17:30 峰会地点:深圳南山区腾讯滨海大厦 ? 特别说明:参与现场活动需要提供7日内核酸检测证明 ? 鹅厂网事 分享鹅厂网络...

    鹅厂网事
  • python登录接口

    可以支持多个用户登录 (提示,通过列表存多个账户信息) 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)

    py3study
  • django rest_framework 用户登录认证

    kirin

扫码关注云+社区

领取腾讯云代金券