广告
返回顶部
首页 > 资讯 > 数据库 >MySQL数据库约束,表的设计
  • 715
分享到

MySQL数据库约束,表的设计

数据库mysqldatabase 2023-09-17 11:09:59 715人浏览 八月长安
摘要

❤️Author: 老九 ☕️个人博客:老九的CSDN博客 🙏 个人名言:不可控之事 乐观面对 😍 系列专栏:Mysql通关系列 文章目录 数据库约束no

❤️Author: 老九
☕️个人博客:老九的CSDN博客
🙏 个人名言:不可控之事 乐观面对
😍 系列专栏:Mysql通关系列

文章目录

数据库约束

not null

  • 指定某列的存储不能为null值
 create table student (id int not null,name varchar(20));Query OK, 0 rows affected (0.01 sec)mysql> desc student;+-------+-------------+------+-----+---------+-------+| Field | Type        | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id    | int(11)     | NO   |     | NULL    |       || name  | varchar(20) | YES  |     | NULL    |       |+-------+-------------+------+-----+---------+-------+2 rows in set (0.00 sec)

unique

  • 保证某列必须有唯一的值,插入重复的值就会报错

default

  • 规定给列赋值时的默认值
create table student(id int,name varchar(20) default '匿名');

primary key 主键

  • 主键约束,是not null 与unique的结合,确保某列的赋值不能为null,并且是唯一的

auto_increment

  • 自增特点:
    1.如果表中没有记录,自增从1开始
    2.如果有数据,从上一条记录往下自增
    3.插入再删掉数据,自增的值不会重复利用,会按删掉的那条开始自增
 create table student (id int primary key auto_increment,name varchar(20));Query OK, 0 rows affected (0.01 sec)mysql> desc student;+-------+-------------+------+-----+---------+----------------+| Field | Type        | Null | Key | Default | Extra          |+-------+-------------+------+-----+---------+----------------+| id    | int(11)     | NO   | PRI | NULL    | auto_increment || name  | varchar(20) | YES  |     | NULL    |                |+-------+-------------+------+-----+---------+----------------+2 rows in set (0.00 sec)mysql> insert into student values(null,'张三');Query OK, 1 row affected (0.00 sec)mysql> select * from student;+----+--------+| id | name   |+----+--------+|  1 | 张三   |+----+--------+1 row in set (0.00 sec)

foreign key 外键

  • 外键约束,在表一中的数据必须在表二中存在,要参照完整性准则
  • 外键约束描述的是两张表的两个列之间的“依赖关系”
  • 外键约束会影响表的删除,例如下面的实例的class表被关联,所以它不能被轻易删除
mysql> create table class (    -> id int primary key,    -> name varchar(20) not null    -> );Query OK, 0 rows affected (0.04 sec)mysql> create table student (    -> id int primary key,    -> name varchar(20) not null,    -> email varchar(20) default 'unknow',    -> QQ varchar(20) unique,    -> classId int , foreign key (classId) references class(id)    -> );Query OK, 0 rows affected (0.03 sec)mysql> desc class;+-------+-------------+------+-----+---------+-------+| Field | Type        | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id    | int(11)     | NO   | PRI | NULL    |       || name  | varchar(20) | NO   |     | NULL    |       |+-------+-------------+------+-----+---------+-------+2 rows in set (0.02 sec)mysql> desc student;+---------+-------------+------+-----+---------+-------+| Field   | Type        | Null | Key | Default | Extra |+---------+-------------+------+-----+---------+-------+| id      | int(11)     | NO   | PRI | NULL    |       || name    | varchar(20) | NO   |     | NULL    |       || email   | varchar(20) | YES  |     | unknow  |       || QQ      | varchar(20) | YES  | UNI | NULL    |       || classId | int(11)     | YES  | MUL | NULL    |       |+---------+-------------+------+-----+---------+-------+5 rows in set (0.00 sec)

check

  • 指定一个条件,通过条件来对值进行判定
  • 但是mysql并不支持
create table test_user (   id int,   name varchar(20),   sex varchar(1),   check (sex ='男' or sex='女'));

表的设计

一对一

  • 一对一设计表就比如学生表和账户表,一个账户对应到一个学生,一个学生也只有一个账户
  • 表示方法
    1.可以把这两个实体用一张表来表示
    2.可以用两张表来表示,其中一张表包含了另一个表的id

一对多

  • 一个学生应该处于一个班级中,一个班级可以包含多个学生
  • 表示方法:
    1.在班级表中,新增一列,表示这个班级里的学生id都有啥(mysql没有数组类型,Redis可以)
    2.班级表不变,学生表中,新增一列classId

多对多

  • 多对多设计表就好比学生表和课程表,一个学生可以选多个课程,一个课程也可以被多个学生选择
  • 表示方法 :
    使用一个关联表,来表示两个实体之间的关系

多对多建表实例

-- 学生表mysql> create table test_student (    -> id int primary key,    -> name varchar(10) default 'unknow'    -> );Query OK, 0 rows affected (0.03 sec)-- 选课表mysql> create table test_course (    -> id int primary key,    -> name varchar(20) default 'unknow'    -> );Query OK, 0 rows affected (0.02 sec)-- 成绩表mysql> create table test_score (    -> studentId int,    -> courseId int,    -> score int,    -> foreign key (studentId) references test_student(id),    -> foreign key (courseId) references test_course(id)    -> );Query OK, 0 rows affected (0.02 sec)mysql> desc test_student;+-------+-------------+------+-----+---------+-------+| Field | Type        | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id    | int(11)     | NO   | PRI | NULL    |       || name  | varchar(10) | YES  |     | unknow  |       |+-------+-------------+------+-----+---------+-------+2 rows in set (0.00 sec)mysql> desc test_coures;ERROR 1146 (42S02): Table 'java_5_27.test_coures' doesn't existmysql> desc test_course;+-------+-------------+------+-----+---------+-------+| Field | Type        | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id    | int(11)     | NO   | PRI | NULL    |       || name  | varchar(20) | YES  |     | unknow  |       |+-------+-------------+------+-----+---------+-------+2 rows in set (0.00 sec)mysql> desc test_score;+-----------+---------+------+-----+---------+-------+| Field     | Type    | Null | Key | Default | Extra |+-----------+---------+------+-----+---------+-------+| studentId | int(11) | YES  | MUL | NULL    |       || courseId  | int(11) | YES  | MUL | NULL    |       || score     | int(11) | YES  |     | NULL    |       |+-----------+---------+------+-----+---------+-------+3 rows in set (0.00 sec)

插入数据到实例实现多对多

mysql> insert into test_student values (1, 'listen');Query OK, 1 row affected (0.01 sec)mysql> insert into test_course values (1, '数学');Query OK, 1 row affected (0.00 sec)mysql> insert into test_student values (2, 'Faker');Query OK, 1 row affected (0.00 sec)mysql> insert into test_course values (2, '数学');Query OK, 1 row affected (0.00 sec)mysql> insert into test_score values(1, 1, 90);Query OK, 1 row affected (0.00 sec)mysql> insert into test_score values (1, 2, 99);Query OK, 1 row affected (0.00 sec)mysql> insert into test_score values (2, 1, 50);Query OK, 1 row affected (0.00 sec)mysql> insert into test_score values (2, 2, 60);Query OK, 1 row affected (0.00 sec)mysql> select * from test_student;+----+--------+| id | name   |+----+--------+|  1 | listen ||  2 | Faker  |+----+--------+2 rows in set (0.00 sec)mysql> select * from test_course;+----+--------+| id | name   |+----+--------+|  1 | 数学   ||  2 | 语文   |+----+--------+2 rows in set (0.00 sec)mysql> select * from test_score;+-----------+----------+-------+| studentId | courseId | score |+-----------+----------+-------+|         1 |        1 |    90 ||         1 |        2 |    99 ||         2 |        1 |    50 ||         2 |        2 |    60 |+-----------+----------+-------+4 rows in set (0.00 sec)

————————————————————————
♥♥♥码字不易,大家的支持就是我坚持下去的动力♥♥♥
版权声明:本文为CSDN博主「浦上青天」的原创文章

来源地址:https://blog.csdn.net/partworld/article/details/125120375

您可能感兴趣的文档:

--结束END--

本文标题: MySQL数据库约束,表的设计

本文链接: https://www.lsjlt.com/news/411040.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL数据库约束,表的设计
    ❤️Author: 老九 ☕️个人博客:老九的CSDN博客 🙏 个人名言:不可控之事 乐观面对 😍 系列专栏:MySQL通关系列 文章目录 数据库约束no...
    99+
    2023-09-17
    数据库 mysql database
  • MySQL 数据库的约束及数据表的设计原理
    目录1. 数据库的约束1.1 介绍1.2 约束类型1.3 not null1.4 unique1.5 default1.6 primary key1.7 foreign key1.8...
    99+
    2022-11-12
  • MySQL数据库约束及表的设计实例分析
    这篇“MySQL数据库约束及表的设计实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL数据库约束及表的设计实例...
    99+
    2023-07-02
  • 一文理解MySQL数据库的约束与表的设计
    目录1.数据库约束1.1 约束类型1.2 null 约束1.3 unique 唯一的约束1.4 default 默认值约束1.5 primary key 主键约束1.6 primary key auto_incremen...
    99+
    2022-11-15
  • MySQL示例讲解数据库约束以及表的设计
    目录数据库约束not nulluniquedefaultprimary key 主键foreign key 外键check表的设计一对一一对多多对多数据库约束 not null 指定某列的存储不能为null值 creat...
    99+
    2022-06-16
    MySQL数据库约束 MySQL表的设计
  • MySQL数据库怎么给表设置约束
    今天小编给大家分享一下MySQL数据库怎么给表设置约束的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、PK(主键约束)1、...
    99+
    2023-06-29
  • MySQL数据库表约束讲解
    目录mysql数据库表约束一、主键约束二、外键约束三、非空约束四、唯一约束五、默认约束六、自增约束数据库建表的约束条件常用约束条件及简单介绍MySQL数据库表约束 为了防止往数据表中插入错误的数据,在MySQL中,定义了...
    99+
    2022-06-20
    MySQL数据库 数据库表约束 MySQL表约束
  • 【MySQL】数据库的约束
    MySQL 数据库的约束 文章目录 MySQL 数据库的约束01 数据库的约束1.1 约束类型1.1.1 NOT NULL1.1.2 UNIQUE1.1.3 DEFAULT1.1.4 PRIM...
    99+
    2023-09-12
    数据库 mysql adb
  • MySQL数据库的约束
    文章目录 一、约束是什么?二、约束的具体操作Not NULLUNIQUE约束的组合使用PRIMARY KEYDEFAULTFOREIGN KEY 一、约束是什么? 约束就是,在创建表的时候,对表设置一些规则,只有满足这些规...
    99+
    2023-08-30
    数据库 mysql sql
  • MySQL数据库表中的约束详解
    目录mysql表中的约束(constraint)约束分类非空约束唯一性约束复合约束主键约束自增列-AUTO_INCREMENT外键约束FOREIGN KEY约束CHECK约束DEFAULT约束MySQL表中的约束(con...
    99+
    2023-03-02
    MySQL表中的约束 MySQL数据库约束 MySQL约束的使用
  • MySQL数据库如何给表设置约束详解
    目录一、PK(主键约束)1、什么是主键?2、怎么设置主键?二、FK(外键约束)1、什么是外键2、怎么设置外键三、unique(唯一约束)1、什么是唯一约束?2、如何设置唯一约束四、n...
    99+
    2022-11-13
  • 数据库设计的完整性约束表现有哪些
    这篇文章主要介绍“数据库设计的完整性约束表现有哪些”,在日常操作中,相信很多人在数据库设计的完整性约束表现有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”数据库设计的完整...
    99+
    2022-10-18
  • MySQL数据库表中的约束有哪些
    这篇文章主要讲解了“MySQL数据库表中的约束有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL数据库表中的约束有哪些”吧!MySQL表中的约束(constraint)为了保证数...
    99+
    2023-07-05
  • 从 MySQL 数据库获取约束列表?
    要从 MySQL 数据库获取约束列表,请使用以下语法 -select *from information_schema.table_constraints where constraint_schema = 'y...
    99+
    2023-10-22
  • 【MySQL数据库】一约束
    🍁博客主页:👉@不会压弯的小飞侠 ✨欢迎关注:👉点赞👍收藏⭐留言✒ ✨系列专栏:👉MySQL数据库专栏 ✨欢迎加...
    99+
    2023-09-28
    数据库 mysql java
  • MySQL笔记——表的分组查询、表的分页查询、表的约束、数据库设计
    系列文章目录 MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明 MySQL笔记——表的修改查询相关的命令操作 MySQL案例——多表查询以及嵌套查...
    99+
    2023-10-04
    数据库 mysql 笔记 centos
  • 如何理解数据库设计的完整性约束表现
    这篇文章将为大家详细讲解有关如何理解数据库设计的完整性约束表现,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。数据完整性是指数据的正确性、完备性和一致性,是衡...
    99+
    2022-10-19
  • MySQL总结(七)数据库表的约束-详解
    数据库表的约束 1. 数据库约束的概述 1.1 约束的作用: 对表中的数据进行限制,保证数据的正确性、有效性和完整性。一个表如果添加了约束,不正确的数据将无法插入到表中。约束在创建表的时候添加比较合适。 1.2 约束种类: 约束...
    99+
    2017-04-03
    MySQL总结(七)数据库表的约束-详解
  • MySQL数据库约束详解
    目录基本介绍1.primary key(主键)细节说明2.not null(非空)3.unique(唯一)unique细节4.foreign key(外键)foreign key(外键)语法外键细节说明5.checkch...
    99+
    2022-10-08
  • MySQL:数据类型和表的约束
    1. 数据类型 学习语言的时候首先就是学习数据类型,数据类型起着为变量合理分配空间的作用。数据库同样需要合理使用空间,其次还可以约束SQL语句的正确性,所以同样需要数据类型。 1.0. 数据类型分类 分类数据类型解释数值类型BIT (...
    99+
    2023-08-16
    mysql 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作