当前位置: 首页 > 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.xdnf.cn/news/1425295.html

相关文章:

  • Chrome 如何清除浏览器缓存
  • 【开题答辩全过程】以 基于SpringBoot的校园一卡通管理系统的设计与实现为例,包含答辩的问题和答案
  • ESP32驱动数字麦克风INMP441
  • A2A + MCP 的python实现的最小可运行骨架
  • Jmeter实现参数化的4种方式
  • 构建AI智能体:二十、妙笔生花:Gradio集成DashScope Qwen-Image模型实现文生图
  • 人脸识别备案的重要意义
  • ES6新特性:JavaScript的进化装备箱[特殊字符]
  • 记一次使用函数式接口
  • A股大盘数据-20250901 分析
  • GD32入门到实战25--独立看门狗
  • JAVA后端开发——MyBatis 结合 MySQL JSON 类型查询详解
  • 【STM32】贪吃蛇 [阶段 3] 增强模块结构(架构优化)
  • curl 介绍及使用教程
  • python爬虫之selenium库进阶(小白五分钟从入门到精通)
  • 基本渗透概念
  • Raft 协议在 Nacos 中的实现
  • 从零开始实现Shell | Linux进程调度实战
  • Product Hunt 每日热榜 | 2025-09-01
  • 基于YOLOv11的脑卒中目标检测及其完整数据集——推动智能医疗发展的新机遇!
  • 齿轮里的 “双胞胎”:分度圆与节圆
  • [React]监听Form中某个字段的变化
  • 微算法科技(NASDAQ:MLGO)张量网络与机器学习融合,MPS分类器助力顶夸克信号识别
  • deepseek doubao chatgpt 优缺点分析
  • 并发--并发中的线程状态及不同状态下线程所在队列
  • React学习教程,从入门到精通, React 入门指南:创建 React 应用程序的语法知识点(7)
  • OpenCV-CUDA 图像处理
  • 数据库常见故障类型
  • 知识产品和标准化
  • 在 Qt 中加载 .qm 翻译文件