详解MySQL中的主键、外键、非空、唯一、默认约束及其在创建表中的应用
晋州ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
MySQL作为一种广泛使用的关系型数据库管理系统,其强大的数据管理功能依赖于各种约束和索引,本文将详细介绍MySQL中的主键、外键、非空、唯一和默认约束,以及如何在创建表时应用这些约束。
主键(Primary Key)是表中每一行数据的唯一标识,在MySQL中,主键具有以下特点:
1、唯一性:表中任意两行数据的主键值不能相同。
2、非空性:主键不能为空。
3、不可更改性:一旦创建,主键值不能被修改。
创建表时,可以使用以下方法定义主键:
CREATE TABLE table_name ( column1 datatype PRIMARY KEY, column2 datatype, ... );
也可以在定义完所有列之后指定主键:
CREATE TABLE table_name ( column1 datatype, column2 datatype, ... PRIMARY KEY (column1) );
外键(Foreign Key)用于建立表与表之间的关联关系,外键约束要求外键列的值必须在关联表的主键列中存在,外键具有以下特点:
1、引用完整性:外键列的值必须在关联表的主键列中有对应的值。
2、可空性:外键可以为空,但若设置为非空,则必须引用关联表的主键值。
3、删除和更新行为:当删除或更新关联表的主键值时,外键约束会影响与之关联的外键值。
创建表时,可以使用以下方法定义外键:
CREATE TABLE table_name ( column1 datatype, column2 datatype, ... FOREIGN KEY (column1) REFERENCES other_table(other_column) );
非空(NOT NULL)约束要求列的值不能为空,这意味着在插入或更新数据时,该列必须有具体的值,创建表时,可以在列定义后添加NOT NULL
关键字来设置非空约束:
CREATE TABLE table_name ( column1 datatype NOT NULL, column2 datatype, ... );
唯一(UNIQUE)约束要求列的值在表中唯一,但允许有空值,创建表时,可以在列定义后添加UNIQUE
关键字来设置唯一约束:
CREATE TABLE table_name ( column1 datatype UNIQUE, column2 datatype, ... );
也可以在定义完所有列之后指定唯一约束:
CREATE TABLE table_name ( column1 datatype, column2 datatype, ... UNIQUE (column1) );
默认(DEFAULT)约束用于为列设置默认值,当插入数据时,如果没有为该列指定值,则会使用默认值,创建表时,可以在列定义后添加DEFAULT
关键字来设置默认约束:
CREATE TABLE table_name ( column1 datatype DEFAULT 'default_value', column2 datatype, ... );
以下是一个创建学生表和成绩表的示例,展示了主键、外键、非空、唯一和默认约束的应用:
-- 创建学生表 CREATE TABLE students ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, gender ENUM('男', '女') DEFAULT '男' ); -- 创建成绩表 CREATE TABLE scores ( id INT PRIMARY KEY, student_id INT NOT NULL, subject VARCHAR(50) NOT NULL, score INT NOT NULL, UNIQUE (student_id, subject), FOREIGN KEY (student_id) REFERENCES students(id) );
MySQL中的主键、外键、非空、唯一和默认约束是保证数据完整性和一致性的重要手段,在实际开发中,合理使用这些约束可以避免数据冗余、错误和异常,提高数据库性能。
网站标题:mysql主键,外键,非空,唯一,默认约束及创建表的方法
转载来于:http://www.csdahua.cn/qtweb/news28/481628.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网