当前位置: 首页 > news >正文

MySQL基础知识保姆级教程(四)视图与约束

目录

简介

一、视图

1.视图的定义:

2.创建视图

3.查看视图结构:

4.删除视图:

二、约束

1.约束的含义

2.约束的分类

3.代码分析


简介

继上三篇博客我们继续来说关于MySQL的基础语句,

MySQL基础知识保姆级教程(一)初识MySQL

MySQL基础知识保姆级教程(二)基础语句

MySQL基础知识保姆级教程(三)基础语句

一、视图

1.视图的定义:


        视图是由查询结果形成的一张虚拟的表。
        视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);可以跟基本表一样,进行增删改查操作(ps: 增删改操作有条件限制);

2.创建视图

create view tmp as select * from student_info where age=25;

3.查看视图结构:

desc tmp;
show create table tmp;

4.删除视图:

drop view tmp;

二、约束

1.约束的含义


        一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性。MySQL 数据库通过约束 (constraints) 防止无效的数据进入到表中,以保护数据的实体完整性。

2.约束的分类

在 MySQL 中,主要有六种约束:
        1、NOT NULL:非空约束,用于约束该字段的值不能为空。比如姓名、学号等。
        2、DEFAULT:默认值约束,用于约束该字段有默认值,约束当数据表中某个字段不输入值时,自动为其添加一个已经设置好的值。比如性别。
        3、PRIMARY KEY:主键约束,用于约束该字段的值具有唯一性,至多有一个,可以没有,并且非空。比如学号、员工编号等。
        4、UNIQUE:唯一约束,用于约束该字段的值具有唯一性,可以有多个,可以没有,可以为空。比如座位号。
        5、CHECK:检查约束,用来检查数据表中,字段值是否有效。比如年龄、性别。
        6、FOREIGN KEY:外键约束,外键约束经常和主键约束一起使用,用来确保数据的一致性,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值。在从表添加外键约束,用于引用主表中某列的值。比如学生表的专业编号,员工表的部门编号,员工表的工种编号。

3.代码分析

create table user(id varchar(10) PRIMARY KEY comment '用户编号,主键',name varchar(10) NOT NULL comment '姓名',age int default 0 check(age >=0 and age <= 150) comment '年龄',sid varchar(20) UNIQUE comment '身份证号',pid varchar(20) UNIQUE comment '银行卡号'
);create table students(id bigint PRIMARY KEY, -- 主键约束name varchar(10) UNIQUE not null, -- 非空约束,唯一约束age int default 10 CHECK(age>=1 and age <=100), -- 默认值约束,检查约束sex varchar(2) not null,clazz varchar(10) not null
);-- 插入数据
insert into students(id,name,age,sex,clazz) values(100,'张三',20,'男',"文科一班");
insert into students(id,name,age,sex,clazz) values(200,'李四',1000,'其它',"文科一班");create table scores(sid bigint,cid bigint,score double,CONSTRAINT fk_students_id FOREIGN KEY(sid) REFERENCES students(id) -- 外键约束,分数表的sid依赖学生表的id
);
-- 存数据时,必须指定学生表中已有的学号才可以
  • create table user部分
    • 定义了一个名为user的表。
    • id字段:类型为varchar(10),是主键(PRIMARY KEY),用于唯一标识用户,注释为 “用户编号,主键”。
    • name字段:类型为varchar(10),非空(NOT NULL),用于存储用户姓名,注释为 “姓名”。
    • age字段:类型为int,默认值为0default 0),并且通过check约束限制年龄在0150之间,注释为 “年龄”。
    • sid字段:类型为varchar(20),具有唯一约束(UNIQUE),用于存储身份证号,注释为 “身份证号”。
    • pid字段:类型为varchar(20),具有唯一约束(UNIQUE),用于存储银行卡号,注释为 “银行卡号”。
  • create table students部分
    • 定义了一个名为students的表。
    • id字段:类型为bigint,是主键(PRIMARY KEY),用于唯一标识学生,注释为 “主键约束”。
    • name字段:类型为varchar(10),非空(not null)且具有唯一约束(UNIQUE),用于存储学生姓名,注释为 “非空约束,唯一约束”。
    • age字段:类型为int,默认值为10default 10),并且通过CHECK约束限制年龄在1100之间,注释为 “默认值约束,检查约束”。
    • sex字段:类型为varchar(2),非空(not null),用于存储学生性别。
    • clazz字段:类型为varchar(10),非空(not null),用于存储学生班级。
  • 插入数据部分
    • 使用insert into语句向students表中插入两条数据。第一条数据中,学生id100,姓名为张三,年龄20,性别,班级文科一班;第二条数据中,学生id200,姓名为李四,年龄1000,性别其它,班级文科一班。需要注意的是,第二条数据中年龄1000违反了students表中age字段的CHECK约束(age >= 1 and age <= 100)。
  • create table scores部分
    • 定义了一个名为scores的表。
    • sid字段:类型为bigint,用于关联学生表中的id
    • cid字段:类型为bigint,可用于关联课程等信息(此处未详细说明)。
    • score字段:类型为double,用于存储分数。
    • 通过CONSTRAINT fk_students_id FOREIGN KEY(sid) REFERENCES students(id)定义了外键约束,使得scores表中的sid字段依赖于students表中的id字段,保证了数据的一致性,注释为 “外键约束,分数表的 sid 依赖学生表的 id”。最后注释说明存数据时,必须指定学生表中已有的学号才可以,即插入scores表数据时,sid的值必须在students表的id中存在。
http://www.dtcms.com/a/362025.html

相关文章:

  • 浅谈中断控制器:从 IRQ 到 IRR、IMR、In-Service Register
  • 软考-操作系统-错题收集(3)文件系统的索引节点结构
  • 【前端】《手把手带你入门前端》前端的一整套从开发到打包流程, 这篇文章都会教会你;什么是vue,Ajax,Nginx,前端三大件?
  • ComPE for win 纯净的PE系统
  • 软考中级数据库系统工程师学习专篇(67、数据库恢复)
  • Spring Security 深度学习(四): 会话管理与CSRF防护
  • 2025 数字化转型期,值得关注的 10 项高价值证书解析
  • Linux笔记---计算机网络概述
  • 视频动作识别模型-C3D
  • 线程池项目代码细节5(解决linux死锁问题)
  • 关系型数据库——GaussDB的简单学习
  • 《投资-43》- 自然=》生物=》人类社会=》商业=》金融=》股市=》投资的共同逻辑:生存竞争与进化论
  • 前端实现查询数据【导出】功能
  • 自制扫地机器人(二) Arduino 机器人避障设计——东方仙盟
  • A股大盘数据-20250901 分析
  • 设计模式:代理模式(Proxy Pattern)
  • HOW - 前端团队组长提升(沟通篇)
  • kubectl-etcd
  • RSA的CTF题目环境和做题复现第1集
  • nacos微服务介绍及环境搭建
  • linux 函数 kthread_should_stop
  • 「Unity3D」RectTransform的AnchorMin与Max直接定位到Rect四角,使得Left-Top-Right-Bottom都为0
  • 【Spark Core】(三)RDD的持久化
  • MT-Workflow: Odoo 可视化工作流引擎
  • 程序员与杀毒软件:一场不必要的“战争”?程序员用什么杀毒软件?-优雅草卓伊凡
  • 人工智能语音交互开发(五)麦克风频率响应范围
  • PostgreSQL 索引大全
  • 奇偶破题:当反函数撞上奇函数
  • Nano Banana一战封神,我总结了10种官方不会告诉你的神级技巧。
  • 太浅显数学常识暴露太重大数学真相:同样是有首项的无穷数列,此列的项可多于彼列的项