当前位置: 首页 > 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/361403.html

相关文章:

  • 人工智能学习:NLP文本处理的基本方法
  • C++函数执行时间统计工具:轻量级性能分析的最佳实践
  • 触想轨道交通应用案例集锦(一)
  • PAT 1089 Insert or Merge
  • G156HAN04.0 宽温域高亮工业屏技术白皮书
  • 矩阵中寻找好子矩阵
  • leetcode5( 多数元素)
  • 力扣 23 912题(堆)
  • MySQL 体系结构
  • 09.《路由基础知识解析和实践》
  • 【C#实战】使用ListBox控件与生成器模式构建灵活多变的金融资产管理系统
  • 金融数据安全
  • 云原生新手入门完整学习指南
  • 基于单片机智能家居语音控制系统
  • 《IC验证必看|随机稳定性 / 再现性》
  • 手把手教你搭建 UDP 多人聊天室(附完整源码)
  • 网络层和数据链路层
  • 【LeetCode热题100道笔记+动画】乘积最大子数组
  • 构建深度学习音频识别模型:从数据预处理到性能评估
  • PitVis-2023挑战赛:内镜下垂体瘤手术视频中的手术流程识别|文献速递-深度学习人工智能医疗图像
  • 1. 从零开始搭建微服务架构1.0(登录模块)
  • 安科瑞微电网智慧能源平台:构建源网荷储一体化新型电力系统
  • RAG初筛混合方案 - bm25+vector
  • 大规模异构数据挖掘与数据架构
  • 56_基于深度学习的X光安检危险物品检测系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
  • 无需服务器也能建网站:Docsify+cpolar让技术文档分享像写笔记一样简单
  • Typescript入门-泛型讲解
  • Ansible 变量全解析与实践
  • UniApp + SignalR + Asp.net Core 做一个聊天IM,含emoji 表情包
  • 53_基于深度学习的野生菌菇检测识别系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)