mysql 主键与外键
一、主键详解,引用自: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 主键与外键的更多相关文章
- MySQL的几个概念:主键,外键,索引,唯一索引
概念: 主键(primary key) 能够唯一标识表中某一行的属性或属性组.一个表只能有一个主键,但可以有多个候选索引.主键常常与外键构成参照完整性约束,防止出现数据不一致.主键可以保证记录的唯一和 ...
- mysql主键,外键,索引
主键 唯一而非空,只能有一个 作用: 1.唯一的标识一行 2.作为一个可以被外键有效引用的对象 3.保证数据完整性 设计原则: 1. 主键应当是对用户没有意义的.如果用户看到了一个表示多对多关系的 ...
- MySQL—概念,用户的创建,主键,外键,数据类型,表格创建
MySQL DBMS,MySQL的概念,数据库分类,以前MySQL的部署中的一些概念 #DBMS:数据库管理系统,用于管理数据库的大型软件.mysql就是dbms的一种 #Mysql:是用于管理文件的 ...
- MySQL中的主键,外键有什么作用详解
MySQL中的主键,外键有什么作用详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 学关系型数据库的同学,尤其在学习主键和外键时会产生一定的困惑.那么今天我们就把这个困惑连根拔起 ...
- 两种获取MySql数据库中所有表的主键和外键约束信息的Sql语句
最近在写Rafy底层的一些东西,在数据库方面把MySql数据库集成到里面去,里面有一个需求,需要获取非系统数据库,也就是我们自己建立的数据库中所有表的主键和外键元数据列表. 第一种方法:是网上的方法, ...
- MySql必知必会实战练习(四)主键、外键、sql约束、联结表
本博将对主键.外键.MySql数据库约束和联结表的相关特性进行总结和实战 1. 主键 表中的每一行都应该具有可以唯一标识自己的一列(或一组列),而这个承担标识作用的列称为主键 如果没有主键,数据的管理 ...
- mysql的引擎问题,主键和外键的创建问题,以及创建外键不成功,却创建了一个索引
mysql的引擎问题: 需要知道的三个引擎:InnoDB--是一个事务处理引擎,不支持全文检索,支持事务操作,即DML操作: Memory--是一个数据存储在内存,速度很快,功能上等同于MyIsam, ...
- day03 MySQL数据库之主键与外键
day03 MySQL数据库之主键与外键 昨日内容回顾 针对库的基本SQL语句 # 增 create database meng; # 查 show databases; shwo create da ...
- MySQL中的完整性约束条件(主键、外键、唯一、非空)
数据库的完整性约束用来防止对数据的意外破坏,来保证数据的安全性和一致性. 主键 1.创建表时候指定主键 创建表user(id, username, age),并且id字段非空自增. CREATE TA ...
- MySQL主键跟外键
定义主键和外键主要是为了维护关系数据库的完整性,总结一下: 1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄. 身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证 ...
随机推荐
- 【模板】BM + CH(线性递推式的求解,常系数齐次线性递推)
这里所有的内容都将有关于一个线性递推: $f_{n} = \sum\limits_{i = 1}^{k} a_{i} * f_{n - i}$,其中$f_{0}, f_{1}, ... , f_{k ...
- 【洛谷P1892】团伙
题目大意:维护 N 个人和 M 个关系,对每个人来说符合:我朋友的朋友也是我的朋友,我敌人的敌人也是我的朋友,求最多有多少个朋友构成的联通块. 题目大意:维护关系显然要用到并查集,这里是维护了两种关系 ...
- 通用权限管理系统底层更换最新Oracle驱动的方法
通用权限管理系统底层先前访问Oracle数据库时需要客户端安装驱动软件,如下图: 安装完毕还需要一番配置,系统再引用其dll, 现在我们使用了最新的dll 该dll是Oracle出的最新的版本. 通用 ...
- Java: 扩大字节缓存区的大小,提升AIO的处理性能(并发性能)
前些日了,对AIO与NIO的并发性能进行了比较,在低并发的情况下,NIO性能表现比AIO好一些,主要原因是,NIO中可以使用FileChannel.transferTo(long position, ...
- linux 条件变量与线程池
条件变量Condition Variables 概述 1. 条件变量提供了另外一种线程同步的方式.如果没有条件变量,程序需要使用线程连续轮询(可能在临界区critical section内)方式检查条 ...
- 常用日期计算SQL语句
-- 本月的第一天 SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) -- 本月的最后一天 SELECT DATEADD(ms,-3,DATEADD(mm ...
- OpenStack 网络服务 Neutron 多网卡(提供者网络)(十八)
OpenStack 网络服务 Neutron 多网卡,分为内部网络.外部网络 使用vmware模拟两张网卡 添加网卡 网卡配置 cd /etc/sysconfig/network-scripts cp ...
- Java基础-赋值运算符Assignment Operators与条件运算符Condition Operators
Java基础-赋值运算符Assignment Operators与条件运算符Condition Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.赋值运算符 表 ...
- less深度作用域/deep/
<style lang="less" scoped> .text-box { /deep/ input { width: 166px; text-align: cent ...
- Spark记录-spark介绍
Apache Spark是一个集群计算设计的快速计算.它是建立在Hadoop MapReduce之上,它扩展了 MapReduce 模式,有效地使用更多类型的计算,其中包括交互式查询和流处理.这是一个 ...