首页 > 数据库 >MySQL字段约束

MySQL字段约束

时间:2024-05-20 19:10:24浏览次数:25  
标签:primary 外键 约束 字段 key MySQL id 主键

非空约束 not null

唯一约束 unique

主键约束 primary key

表中记录的唯一标识,非空唯一,在一张表中只能有一个主键,(可以是一个列,也可以是多个列的组合)
 1. 定义主键:
	 - 在创建表时直接定义主键 xx_xx char(4) primary key;
	 - 在创建表的最后单独定义    primary key(字段名);
 2. 去掉主键约束
	 - alter table <tableName> drop primary key;
 3. 添加表格主键约束
 alter table <tabkeName> modify <cloumnName> char(4) primary key;-- 可以修改类型也可以不修改


- 主键自增长(auto_increment)
	 在表中没有合适的列作为主键,可以额外定义一个与数据无关的列作为主键 可以定义为id int 同时设置为自增长 -- id int primary auto_increment
	 注意:删除生成过的id,不会再生产第二次

- 联合主键
 将数据表中的多列组合在一起设置为表的主键
 定义: primary key (stu_num,course_id)

image

外键约束

 在多表关联处查询
 外键约束——将一个列添加外键约束与另一张表的主键进行关联后,这个外键约束的列添加的数据必须要在关联的主键字段中存在
 案例:学生表 与 班级表 (在学生表中添加的外键与班级表的主键关联)
	 1. 先创建班级表

image

	 2. 创建学生表(在学生表中添加外键与班级表的主键关联)

image

  • 方式一:constraint(声明) 外键名 foreign key(cid) refernces(与谁关联) classes(class_id)

  • 方式二:先创建表,再添加约束 -- alter table students add constraint FK_STUDENTS_CALSSES foreign key(cid) references classes(class_id);
    image不然会报错

  • 删除外键约束
    alter table students drop foreign key 外键名;

级联操作

image
image
image
image

标签:primary,外键,约束,字段,key,MySQL,id,主键
From: https://www.cnblogs.com/ht7714/p/18170811

相关文章

  • Mysql DML数据操纵语言
    插入数据insertinto<tableName>(columnName1,columnName2,...)values(value1,value2,..);--为指定的列添加insertinto<tableName>values(value1,value2,....)--为表中所有列添加数据注意:即便为所有列添加数据,建议显示列出列名columnName1,....,有利于代码稳定性,......
  • Mysql DQL 数据查询语言
    查询selectcolumnName1,....from<tableName>;select*from<tableName>;where子句条件= --等于!=,<> --不等于> --大于< --小于>=,<= --大于等于,小于等于betweenand --区间查询多条件whereand/or/notlike子句对查询结果的处理计算列se......
  • Mysql 关联关系
    一对一关联人——身份证、学生——学籍、用户——用户详情主键关联--两张数据表中主键相同的数据为对应数据唯一外键--在任意一张表中添加一个字段添加外键约束与另一张表的主键关联,并且将外键列添加唯一约束一对多与多对一关联班级——学生(一对多)、学生——班......
  • Liunx部署NetCore,接口获取mysql本地数据时报:The SSL connection could not be establ
    今天将 NETCore程序发布到一台新的服务器,程序中有https请求第三方的Api,但是报了如下的错误:TheSSLconnectioncouldnotbeestablished,seeinnerexception解决办法下面命令查询openssl的路径opensslversion-a然后将CentOS默认的opensslCA证书拷贝到OPENSSLD......
  • Mysql变量声明的方式
    参考:https://www.cnblogs.com/Marydon20170307/p/14112059.html1.使用declare,这个必须用在存储过程或者函数中,不要@前缀。声明变量必须在存储过程、函数的顶部,先声明变量,再写其他逻辑。一次多个:declarestr1,str2varchar(10);--公用一个类型不一样的话,就一个个的声明:declarest......
  • MySQL升级8.0的新故障,utf8mb4_0900_ai_ci是啥?
    https://blog.csdn.net/LINgZone2/article/details/129730790 前段时间,遇到一个mysql的问题,我仔细看看报错信息,应该是MySQL数据库报出来的,大意是说:collation不兼容,一个是utf8mb4_0900_ai_ci,另一个是utf8mb4_general_ci。utf8mb4_general_ci这玩意儿我见过,是针对utf8mb4编码的......
  • MySQL几种编码格式的区别(utf8、utf8mb4、utf8mb4_general_ci、utf8mb4_unicode_ci 、u
    https://cloud.tencent.com/developer/article/1872879存储字符集utf8和utf8mb4utf8是Mysql中的一种字符集,只支持最长三个字节的UTF-8字符,也就是Unicode中的基本多文本平面。要在Mysql中保存4字节长度的UTF-8字符,需要使用utf8mb4字符集,但只有5.5.3版本以后......
  • 在数据结构上,后端要求前端在一个对象中添加一个类型字段,并且对该对象的某些属性中都加
    这个需求的合理性取决于具体的应用场景和目的。让我们分析一下:合理性的一面:简化逻辑处理:如果这个类型字段是为了在后端快速区分或过滤不同类型的对象属性,那么在前端就做好标记,可以简化后端处理逻辑,减少在后端进行类型判断的需要。一致性保证:在前端加入类型字段并确保它与对象......
  • 比如开发过程中,后端要求前端将一些没有必要的前端不需要的字段原封不动的传递回去,这样
    后端要求前端将一些不必要的字段原封不动地传递回来,这种做法通常并不合理,主要原因如下:增加数据传输负担:每次请求包含额外无用的字段会增加数据传输的体积,特别是在移动设备或网络条件不佳的情况下,这可能导致响应速度变慢,影响用户体验。资源浪费:无论是服务器带宽、内存还是CPU......
  • MySQL报错:SELECT list is not in GROUP BY clause and contains nonaggregated colum
    报错截图解决方法:修改数据库配置1.查看.sql_mode配置select@@global.sql_mode;2.查看返回信息是否包含ONLY_FULL_GROUP_BYONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION;3.去掉ONLY_FULL_GROUP_BY,其他参数不变,执行即可SETGLOBALsql_mode=‘STRI......