mysql 添加外键约束

article/2025/9/29 10:27:29

创建表时添加约束

create table table_name(
id  int primary key auto_increment, #设为主键且自动增长
name  not null unique,  #不为空且值唯一
sex default '男', #使用默认约束,默认性别为男
constraint  索引名 foreign key(外键列)  references 主键表(主键列)
on delete cascade | on delete set null   外键约束
)

完成表后添加约束


1.主键约束
添加:alter table  table_name add primary key (字段)
删除:alter table table_name drop primary key
2.非空约束
添加:alter  table table_name modify 列名 数据类型  not null 
删除:alter table table_name modify 列名 数据类型 null
3.唯一约束
添加:alter table table_name add unique 约束名(字段)
删除:alter table table_name drop key 约束名
4.自动增长
添加:alter table table_name  modify 列名 int  auto_increment
删除:alter table table_name modify 列名 int  
5.外键约束
添加:alter table table_name add constraint 约束名 foreign key(外键列) 
references 主键表(主键列)
删除:
第一步:删除外键
alter table table_name drop foreign key 约束名
第二步:删除索引
alter  table table_name drop  index 索引名
[^1]: 
约束名和索引名一样
6.默认值
添加:alter table table_name alter 列名  set default '值'
删除:alter table table_name alter 列名  drop default

相关知识

在数据库的使用过程中我们经常要限制字段的取值,比如有些字我们不能让它为空,我们就需要添加非空约束,本关我们就来学习如何添加这些常用的约束。

为了完成本关任务,你需要掌握:
1.怎么添加唯一约束;
2.怎么添加非空约束;
3.怎么添加默认约束;
4.怎么设置字段的值自动增加。

怎么添加唯一约束

唯一约束(Unique Constraint)要求该列唯一,允许为空,但是只能有一个空值。唯一约束可以确保一列或者几列不出现重复值。

定义部门表的部门名称唯一,SQL语句如下:关键词 UNIQUE

 
CREATE TABLE t_dept(
id INT PRIMARY KEY,
name VARCHAR(22) UNIQUE,
location VARCHAR(50)
)

怎么添加非空约束

关键词:NOT NULL

例如:

 
CREATE TABLE t_dept(
id INT PRIMARY KEY,
name VARCHAR(22) NOT NULL,
location VARCHAR(50)
)

怎么使用默认约束

默认约束:即给字段一个默认值。
关键词:DEFAULT

例如:

 
CREATE TABLE t_emp(
id INT PRIMARY KEY,
name VARCHAR(22),
sex VARCHAR(2) DEFAULT '男'
) DEFAULT CHARSET=utf8;

注意:

  • 如果是添加字符串型默认值要使用单引号,如果是整型则不需要加任何符号;
  • 如果要添加的是中文默认值,则需要加上DEFAULT CHARSET=utf8;使用英文字符则不需要。

设置表的属性值自动增加

在数据库应用中,经常有个需求就是,在每次插入新纪录时,系统自动生成字段的主键值,即:

idname
1张三
2李四
ID每次自动加一姓名
...XXX
10XXX

关键词:AUTO_INCREMENT,默认情况下初始值和增量都为1

例如:


CREATE TABLE t_tmp
(
id int PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(32)
)

以上这些你都可以在右侧的命令行中测试。

编程要求

在数据库MyDb中创建表t_user,表结构如下:

字段名称数据类型备注
idINT用户ID,主键,自动增长
usernamevarchar(32)用户名,非空,唯一
sexvarchar(4)性别,默认“男”

提示:若要给字段添加两个或者两个以上的约束,约束之间以空格隔开即可。

任务代码

mysql -uroot -p123123 -h127.0.0.1;
create database MyDb;
use MyDb;
create table t_user( 
id int primary key auto_increment, 
username varchar(32)not null unique, 
sex varchar(4) default '男');

完成如下

 


http://chatgpt.dhexx.cn/article/iK7W1AK1.shtml

相关文章

SQL 外键约束

-- 概念 外键用来让2张表的数据之间建立连接,从而保证数据的一致性和完整性。 添加外键 第一种:在建表时直接添加 CREATE TABLE 表名(字段名 数据类型.....[CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主表列名)); 第二…

外键约束三种形式

外键有三种约束模式: district : 严格模式(默认的),父表不能删除或更新一个已经被子表数据引用的记录。cascade : 级联模式,父表的操作,对应子表关联的数据也跟着操作。 set null : 置空模式,父表被操作之…

mysql外键约束

1、什么是外键 -- 约束 2、外键的作用 用于表与表之间的关联 3、外键的创建 3、1 mysql 创建带有外键的表 CREATE TABLE student (id int(4) NOT NULL AUTO_INCREMENT COMMENT 学号,name varchar(10) NOT NULL DEFAULT "匿名" COMMENT 姓名,password varchar(11) N…

数据库是否应该使用外键约束?

一、前言 对于【是否使用外键约束】这个话题已经是老生常谈的了。在学校中,老师交给我们的大多是需要我们建立外键约束,但进入了实际工作很多时候并不会使用外键,而是通过代码逻辑来控制。包括在阿里的JAVA规范中也明确规定:【强…

mysql 创建外键约束

前言 如果一张表中有一个非主键的字段指向了另一张表中的主键&#xff0c;就将该字段叫做 外键。 一张表中外键可以有多个&#xff0c;也就是不同字段指向了不同表中的主键。 方式1-在创建表时设置外键约束 [constraint <外键名>] foreign key 字段名 [&#xff0c;字段…

外键及外键约束理解

转自&#xff1a;https://www.cnblogs.com/chenxiaohei/p/6909318.html 数据库&#xff08;外键及其约束理解&#xff09; 一&#xff1a;首先是外键的定义 如果一个字段X在一张表&#xff08;表一&#xff09;中是主关键字&#xff0c;而在另外一张表&#xff08;表二&#…

MySQL的约束——外键约束

约束&#xff1a; MySQL的约束的概述&#xff1a; 概念&#xff1a; 约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据 目的&#xff1a; 保证数据库中数据的正确&#xff0c;有效和完整性 分类 1.非空约束 NOT NULL 限制该字段的数据不能为null2.唯一…

4、外键约束(FOREIGN KEY)

MySQL 外键约束&#xff08;FOREIGN KEY&#xff09;是表的一个特殊字段&#xff0c;经常与主键约束一起使用。对于两个具有关联关系的表而言&#xff0c;相关联字段中主键所在的表就是主表&#xff08;父表&#xff09;&#xff0c;外键所在的表就是从表&#xff08;子表&…

【表的完整性约束外键约束】

外键约束 今天跟大家聊聊这个外键约束&#xff0c;简单来说呢&#xff0c;就是&#xff0c;嗯&#xff0c;&#xff0c;关于两个表的操作。对&#xff0c;就是这样的&#xff0c;来跟我一起看看叭。 【1】什么是外键约束&#xff1f; 外键约束&#xff08;FOREIGN KEY&#xf…

MySQL外键约束详解

今天继续给大家介绍MySQL相关知识&#xff0c;本文主要内容是MySQL外键约束详解。 一、MySQL外键约束作用 外键约束&#xff08;Foreign Key&#xff09;即数据库中两个数据表之间的某个列建立的一种联系。这种联系通常是以实际场景中含义完全相同的字段所造成的。MySQL通过外…

【MySQL】外键约束

文章目录 &#xff08;一&#xff09;外键约束&#xff08;二&#xff09;外键约束的功能&#xff08;三&#xff09;学生表和班级表&#xff08;1&#xff09;练习&#xff08;2&#xff09;两个问题&#xff08;3&#xff09;解决方案&#xff08;4&#xff09;结果展示 &…

JavaWeb JSP内置对象之session对象

4、session对象 在WEB应用中&#xff0c;当一个客户首次访问服务器上的某个jsp页面时&#xff0c;jsp引擎&#xff08;比如TOMCAT&#xff09;将为这个客户创建一个session对象&#xff0c;当客户关闭浏览器离开之后&#xff0c;session对象被注销。 设置session的目的是为了服…

jsp内置对象之session对象

在WEB应用中&#xff0c;当一个客户首次访问服务器上的某个jsp页面时&#xff0c;jsp引擎&#xff08;比如TOMCAT&#xff09;将为这个客户创建一个session对象&#xff0c;当客户关闭浏览器离开之后&#xff0c;session对象被注销。 设置session的目的是为了服务器端识别客户。…

JAVA Web入门之JSP内置对象的解析及使用(超详细必看)

创作不易 觉得有帮助请点赞关注收藏~~ 概述&#xff1a;由于JSP使用java作为脚本语言 所以JSP具有强大的对象处理能力 并且可以动态创建web页面内容 但java语言在使用一个对象前 需要先实例化这个对象 为了简化开发 JSP提供了一些内置对象 用来实现JSP应用 在使用JSP内置对象…

JSP内置对象和四大作用域

一、JSP九大内置对象 名称 类型 含义 获取方式 request HttpSevletRequest 封装所有请求信息 方法参数 response HttpServletResponse 封装所有响应信息 方法参数 session HttpSession 封装所有会话信息 req.getSession() application ServletContext 所有信…

jsp内置对象的作用范围

内置对象的作用范围是指每个内置对象的某个实例在多长时间和多大的范围中有效&#xff0c;即在什么样的范围内可以有效地访问同一个对象实例。 在javax.servlet.jsp.PageContext的类中定义了4个常量来指定内置对象的作用范围&#xff1a;APPLICATION_SCOPE、SESSION_SCOPE、PAG…

JSP内置对象——application对象

在介绍appl ication 对象之前&#xff0c;先简单介绍一些Web 服务器的实现原理。 对于大部分浏览器而言&#xff0c;它通常负责完成三件事情&#xff1a; &#xff08;1&#xff09;向远程服务器发送请求。 &#xff08;2&#xff09;读取远程服务器返回的字符串数据。 &#x…

JSP入门之JSP内置对象

系列文章目录 目录 前言 一、request对象 1.获取用户提交的信息 2.JSP页面文件的编码方式 3.常用方法举例 4.处理HTML标记 5.处理超链接 二、response对象 1.动态响应contentType属性 2.response对象的HTTP文件头 3.response对象的重定向 三、session对象 1.se…

JSP内置对象request

1.request对象 request对象是最常用的JSP内置对象之一,其中包含了有关浏览器请求的信息 可以在JSP页面中通过调用request对象的方法来获取请求中的相关数据以及浏览器的有关信息。 request对象用于处理请求的方法有很多 request的getPaeameter&#xff08;&#xff09;方法是…

【Jsp】第七课 Jsp内置对象的学习和使用

概念 什么是JSP内置对象&#xff1f; } JSP 内置对象是 Web 容器创建的一组对象 } JSP 内置对象是可以直接在 JSP 页面使用的对象 &#xff0c;无需使用“ new” 获取实例 } JSP 内置对象的名称是 JSP 的保留字 } 内置对象说白了就是别人创建好了的对象&#xff0c;我们…