一、主键详解,引用自:https://blog.csdn.net/haiross/article/details/50456154

  1、要设置主键自增的话字段必须是整形数字。

二、外键详解:引用自https://www.cnblogs.com/programmer-tlh/p/5782451.html

三、mysql列属性。(主键,唯一键,自增等)引用自:https://blog.csdn.net/J080624/article/details/71703297

  1、列属性有很多,大致如下:

    null / not null

    default

    primary key

    unique key

    auto_increment

    comment

  2、空属性

  3、列描述

    comment:描述,没有实际含义,为列增加文字说明,会随着表创建一起储存起来。

  4、默认值

    create table my_default(name varchar(20) not null unique key,gender varchar(4) default '男')charset utf8;

    当不对gender列进行插入的时候,gender将会使用默认值。

  5、主键,给表增加主键,大体分为三种

    a、创建表的时候在字段后面使用primary key关键字

      create table my_default(id int primary key,name varchar(20) not null unique key,gender varchar(4) default '男')charset utf8;

    b、在创建表的时候,在所有的字段之后使用primary key(主键的字段 列表)来创建主键(如果有多个字段作为主键,称之为复合主键)

      create table my_pri(numbere char(10),

               course char(10),

               score tinyint,

               primary key(number,course)

               )charset utf8;

    c、创建表之后,为表追加主键。有两种方式,第一为修改表字段属性,第二直接追加。

       方式一:

          alter table my_pri modify number char(11) primary key;

       方式二:

          alter table table_name add primary key(column);

          --alter table my_pri add primary key(number,course);--增加复合主键

          --alter table my_pri add constraint pk_score primary key(score)--使用关键字CONSTRAINT 且指定主键名字pk_score

          --alter table my_pri add constraint primary key(score)--使用关键字CONSTRAINT 且使用默认名字

     d、删除主键:

          alter table my_pri drop primary key;

  6、自增

    create table my_auto(id int primary key auto_increment,name varchar(20))charset utf8;

    删除自增:需要注意的是,如果自增长对应的字段为主键,那么修改列属性的时候,不要再加primary key;会被系统认为又定义一个主键,会报错。

      alter table my_auto modify id int primary key; (错误)

      alter table my_auto modify id int;(正确)

  7、唯一键

    a、创建表时添加唯一键:

      方法一:

        create table my_unique(name varchar(4) unique key,number varchar(20) unique key)charset utf8;

      方法二、create table my_unique(name varchar(4),

                     number varchar(20),

                     unique key name(name),

                     unique key(number)

                     )charset utf8;

    b、创建表后增加唯一键:

       create table my_unique(name varchar(4),number varchar(20))charset utf8;

       方法一:     

         alter table my_unique modify column name varchar(5) unique key;

       方法二:      

         alter table my_unique add constraint num_uk unique key(number);

    c、删除唯一约束

        alter table my_unique drop index num_uk;

mysql 主键与外键的更多相关文章

  1. MySQL的几个概念:主键,外键,索引,唯一索引

    概念: 主键(primary key) 能够唯一标识表中某一行的属性或属性组.一个表只能有一个主键,但可以有多个候选索引.主键常常与外键构成参照完整性约束,防止出现数据不一致.主键可以保证记录的唯一和 ...

  2. mysql主键,外键,索引

    主键 唯一而非空,只能有一个 作用: 1.唯一的标识一行  2.作为一个可以被外键有效引用的对象  3.保证数据完整性 设计原则: 1. 主键应当是对用户没有意义的.如果用户看到了一个表示多对多关系的 ...

  3. MySQL—概念,用户的创建,主键,外键,数据类型,表格创建

    MySQL DBMS,MySQL的概念,数据库分类,以前MySQL的部署中的一些概念 #DBMS:数据库管理系统,用于管理数据库的大型软件.mysql就是dbms的一种 #Mysql:是用于管理文件的 ...

  4. MySQL中的主键,外键有什么作用详解

    MySQL中的主键,外键有什么作用详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 学关系型数据库的同学,尤其在学习主键和外键时会产生一定的困惑.那么今天我们就把这个困惑连根拔起 ...

  5. 两种获取MySql数据库中所有表的主键和外键约束信息的Sql语句

    最近在写Rafy底层的一些东西,在数据库方面把MySql数据库集成到里面去,里面有一个需求,需要获取非系统数据库,也就是我们自己建立的数据库中所有表的主键和外键元数据列表. 第一种方法:是网上的方法, ...

  6. MySql必知必会实战练习(四)主键、外键、sql约束、联结表

    本博将对主键.外键.MySql数据库约束和联结表的相关特性进行总结和实战 1. 主键 表中的每一行都应该具有可以唯一标识自己的一列(或一组列),而这个承担标识作用的列称为主键 如果没有主键,数据的管理 ...

  7. mysql的引擎问题,主键和外键的创建问题,以及创建外键不成功,却创建了一个索引

    mysql的引擎问题: 需要知道的三个引擎:InnoDB--是一个事务处理引擎,不支持全文检索,支持事务操作,即DML操作: Memory--是一个数据存储在内存,速度很快,功能上等同于MyIsam, ...

  8. day03 MySQL数据库之主键与外键

    day03 MySQL数据库之主键与外键 昨日内容回顾 针对库的基本SQL语句 # 增 create database meng; # 查 show databases; shwo create da ...

  9. MySQL中的完整性约束条件(主键、外键、唯一、非空)

    数据库的完整性约束用来防止对数据的意外破坏,来保证数据的安全性和一致性. 主键 1.创建表时候指定主键 创建表user(id, username, age),并且id字段非空自增. CREATE TA ...

  10. MySQL主键跟外键

    定义主键和外键主要是为了维护关系数据库的完整性,总结一下: 1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄. 身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证 ...

随机推荐

  1. 【poj2187】最远点对(勉强凑数)

    题目简述 输入n个点,及其坐标,n<=50000,所有坐标都是不超过10000的整数组成,没有重点. 问最远点对间的距离的平方是多少 题解 这是一道旋转卡壳的裸题 我们要求这个多边形的直径,这可 ...

  2. Winform Treeview 排序及图标处理

      一.排序 1. 继承 IComparer 2.  treeView1.TreeViewNodeSorter = this; 3. 实现IComparer public int Compare(ob ...

  3. luogu3778/bzoj4898 商旅 (floyd+分数规划+spfa)

    首先floyd求出来每两点间的最短距离,然后再求出来从某点买再到某点卖的最大收益 问题就变成了找到一个和的比值最大的环 所以做分数规划,二分出来那个答案r,把边权变成w[i]-r*l[i],再做spf ...

  4. sadpairs

    #include<bits/stdc++.h> #define il inline #define reg register int #define numb (ch^'0') using ...

  5. 【洛谷P2921】Trick or Treat on the Farm

    题目大意:给定一个 N 个节点的内向树森林,求从每个顶点出发能够到达的最多不重复顶点的个数是多少. 题解:内向树森林是由一个或若干个环加若干条链构成.可以先按照类似于拓扑排序的规则进行删链,再对环上的 ...

  6. 收藏:Win32消息机制

    Dos的过程驱动与Windows的事件驱动 在讲本程序的消息循环之前,我想先谈一下Dos与Windows驱动机制的区别: DOS程序主要使用顺序的,过程驱动的程序设计方法.顺序的,过程驱动的程序有一个 ...

  7. hdu3374解题报告

    hdu3374 Solution: 最小表示法+KMP 设一个字符串S的最小循环节是T.(如S=“abababab”,则T=“ab”) 在最小循环节T中,只有1个最小字符串和最大字符串.则最小字符串的 ...

  8. webpack+express实现“热更新”和“热加载”(webpack3.6以前的做法)

    “热更新”:对应的是 'webpack-dev-middleware' 中间件 “热加载”:对应的是 'webpack-hot-middleware' 中间件 为了使用这两个中间件,必须修改“webp ...

  9. .net 里面打不出来ConfigurationManager

    ConfigurationManager 这个东东是读取配置文件时需要的. 首先要引用命名空间里面 using System.Configuration; 其次呢,在解决方案的引用里,单机右键进行添加

  10. bzoj千题计划184:bzoj1261: [SCOI2006]zh_tree

    http://www.lydsy.com/JudgeOnline/problem.php?id=1261 dp[l][r][dep]  区间[l,r]内的节点,根在dep层的最小代价 枚举根i,dp[ ...