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

学习MySQL的第十一天

逆风执炬,向光而行

一、补充

        我们首先对之前的文章进行一下补充

        1.1 check约束

        我们通过具体的案例来对这check约束进行一下讲解

CREATE TABLE gardens(id INT CHECK(id<10),name VARCHAR(255) UNIQUE,garden INT DEFAULT 100
);DESC gardens;INSERT INTO gardens
VALUES(1,'t',100)

        此时,如果你要添加的数据中,id 大于等于10,将会显示插入失败;如果garden没有具体数据,则garden默认为是100

INSERT INTO gardens(id,name)
VALUES(2,'p')INSERT INTO gardens(id,name)
VALUES(40,'t')SELECT * FROM gardens

Check constraint 'gardens_chk_1' is violated

        1.2 在 ALTER TABLE时添加约束

ALTER TABLE gardens
MODIFY `name` VARCHAR(255) DEFAULT 'Me'DESC gardens

        1.3 在 CREATE TABLE时删除约束

ALTER TABLE gardens
MODIFY `name` VARCHAR(255);DESC gardens
这里的删除其实同样是一种修改

二、视图

        2.1 视图的理解

        1.视图是一种虚拟表,本身是不具有数据的,占用很少的内存空间,它是SQL中的一个重要概念,可以将视图理解为存储起来的SELECT 语句
        2.视图中的select语句涉及到的表,称为基表,针对视图做DML操作,会影响到对应的基表中的数据,反之亦然
        3.视图本身的删除,不会导致基表中数据的删除
        4.视图的应用场景:针对小型项目,不推荐使用视图
        5.视图的优点:简化查询、控制数据访问权限

        2.2 创建视图

        在 CREATE VIEW语句中嵌入子查询
        方式为:CREATE VIEW 视图名称
        AS 查询语句

        准备工作:

    CREATE DATABASE test1;USE test1;CREATE TABLE empsASSELECT *FROM emp.departments;CREATE TABLE deptsASSELECT *FROM emp.department_position;SELECT * FROM emps;SELECT * FROM depts;

        2.3 创建视图

	CREATE VIEW empss ASSELECT emps.id,emps.`name`,depts.positionFROM emps,depts# 因为这里只是为了展示一下单表的情况,所以就没有加入多表的连接条件

        2.4 针对于多表

	CREATE VIEW empsssASSELECT emps.id,emps.`name`,depts.positionFROM emps,deptsWHERE emps.id = depts.id

        2.5 添加视图字段的别名

	CREATE VIEW empsss(emp1_id,depts_position)ASSELECT emps.id,depts.positionFROM emps,deptsWHERE emps.id = depts.id;SELECT * FROM empsss;

        2.6 视图的优化

	CREATE VIEW emp_deptASSELECT CONCAT(emp1.`name`,'(',depts.position,')') '姓名(部门)',emp1.salaryFROM emp1 JOIN depts ON emp1.id = depts.id;SELECT * FROM emp_dept;

        2.7 基于视图创建视图

 CREATE VIEW f_emp_deptASSELECT emp_dept.salaryFROM emp_dept;SELECT * FROM emp_dept;

        2.8  查看视图

 # 查看数据库的表对象、视图对象SHOW TABLES;# 查看视图结构DESC emp_dept;# 查看视图属性信息SHOW TABLE STATUS LIKE 'emp_dept'; # 查看视图的详细定义信息SHOW CREATE VIEW emp_dept;
查看数据库的表对象、视图对象
查看视图结构

查看视图属性信息
查看视图的详细定义信息

        2.9 更新视图中的数据

        更新表中的数据会导致视图中的数据改变;同理,更新视图中的数据也会导致表中的数据改变

 UPDATE emp_deptSET salary = 1000WHERE salary IS NULL;SELECT * FROM emp_dept;

        当视图中的字段在及原表中不存在,则不更新视图中的数据

 USE testCREATE VIEW avgASSELECT student.Sname,avg(sc.grade)FROM student,sc,courseWHERE student.Sno = sc.Sno AND sc.`课程号` = course.`课程号`GROUP BY student.Sname

        在这里进行错误展示

 UPDATE avgSET avg(sc.grade) = 100WHERE Sname = '周九'SELECT * FROM avg;

三、结语

        风起青萍,浪成微澜

须知少日拏云志,曾许人间第一流。我们还年轻,我们还有无限可能!

http://www.xdnf.cn/news/115507.html

相关文章:

  • 秒出PPT推出更强版本,AI PPT工具进入新纪元!
  • 养生之道:在岁月里雕琢健康之美
  • HarmonyOs @hadss/hmrouter路由接入
  • 【C++】模版初阶:函数模板、类模板
  • 机器学习基础 - 分类模型之SVM
  • 解决vue3写echarts不能根据屏幕大小缩
  • k8s 1.26版部署
  • TiDB 深度解析与 K8S 实战指南
  • centos挂载新的硬盘
  • Linux学习笔记之动静态库
  • 全行业软件定制:APP/小程序/系统开发与物联网解决方案
  • 机器人操作中的生成式 AI:综述(上)
  • 鸿蒙-状态管理V1和V2在ForEach循环渲染的表现
  • 查看系统是debian还是redhat
  • Android学习总结之Room篇
  • 第四章: 服务集成抽象
  • 把一个 PyTorch 的图像张量转换成 NumPy 格式,并按照正确的维度顺序显示出来
  • 《Pinia 从入门到精通》Vue 3 官方状态管理 -- 进阶使用篇
  • 【数据结构】哈希表
  • 使用深度 Q 学习解决Lunar lander问题
  • Linux424 chage密码信息 gpasswd 附属组
  • 数据库数据删除与修改实验
  • Flink 消费 Kafka 数据流的最佳实践
  • 4.ArkUI TextInput的介绍和使用
  • 多语言虚拟币海外游戏娱乐平台源码详解(整合篇)
  • 上岸率85%+,25西电先进材料与纳米科技学院(考研录取情况)
  • 【投屏软件】手机投屏软件
  • 省时省力的AI批量原创SEO文章生成工具解放双手
  • CentOS 7 基于 Nginx 的 HTML 部署全流程指南
  • 18.应用聚合、指标显示、应用状态,从Heimdall说起(二)