千千梦丶琪 发表于 前天 12:35

学习MySQL的第十一天

https://i-blog.csdnimg.cn/direct/54e6246df9b84940bcedd1dc5d91b558.png

逆风执炬,向光而行

一、补充

        我们首先对之前的文章进行一下补充
        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 https://i-blog.csdnimg.cn/direct/f00daa5038654f34adc52a63247dffdf.png
      https://i-blog.csdnimg.cn/direct/b1145b360df446ef9d1caaddfcb78605.png       Check constraint 'gardens_chk_1' is violated               1.2 在 ALTER TABLE时添加约束

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

DESC gardens https://i-blog.csdnimg.cn/direct/1889af523ae34f58926925ad2af548bb.png
        1.3 在 CREATE TABLE时删除约束

ALTER TABLE gardens
MODIFY `name` VARCHAR(255);

DESC gardens      https://i-blog.csdnimg.cn/direct/623d9c414c624cc5924b6d079cc4277f.png       这里的删除着实同样是一种修改       二、视图

        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 emps
        AS
        SELECT *
        FROM emp.departments;
       
        CREATE TABLE depts
        AS
        SELECT *
        FROM emp.department_position;

        SELECT * FROM emps;
        SELECT * FROM depts; https://i-blog.csdnimg.cn/direct/27f57885e51c46029365ad5dddaa9f12.pnghttps://i-blog.csdnimg.cn/direct/300058988de240a6b2873d5389f2cde9.png
        2.3 创建视图

        CREATE VIEW empss
        AS
        SELECT emps.id,emps.`name`,depts.position
        FROM emps,depts

    # 因为这里只是为了展示一下单表的情况,所以就没有加入多表的连接条件
https://i-blog.csdnimg.cn/direct/4be1a6a954d74e13bc57476e996f9ed1.png
        2.4 针对于多表

        CREATE VIEW empsss
        AS
        SELECT emps.id,emps.`name`,depts.position
        FROM emps,depts
        WHERE emps.id = depts.id         2.5 添加视图字段的别名

        CREATE VIEW empsss(emp1_id,depts_position)
        AS
        SELECT emps.id,depts.position
        FROM emps,depts
        WHERE emps.id = depts.id;

    SELECT * FROM empsss; https://i-blog.csdnimg.cn/direct/aea33709773246ca82a9b640a4e95dd7.png
        2.6 视图的优化

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

    SELECT * FROM emp_dept; https://i-blog.csdnimg.cn/direct/c51288b3e4064446a0005df03d64eb44.png
        2.7 基于视图创建视图

CREATE VIEW f_emp_dept
AS
SELECT emp_dept.salary
FROM emp_dept;

SELECT * FROM emp_dept; https://i-blog.csdnimg.cn/direct/2535df7dd1e843f6bb32d666565956f0.png
        2.8  查察视图

# 查看数据库的表对象、视图对象
SHOW TABLES;
# 查看视图结构
DESC emp_dept;
# 查看视图属性信息
SHOW TABLE STATUS LIKE 'emp_dept';
# 查看视图的详细定义信息
SHOW CREATE VIEW emp_dept;   https://i-blog.csdnimg.cn/direct/9c5839beebc547929eb119f348fdabc3.png   查察数据库的表对象、视图对象         https://i-blog.csdnimg.cn/direct/f826d84522cb4e279b985beb5b76a6d4.png       查察视图结构       https://i-blog.csdnimg.cn/direct/ac53df6567fd4c1aa7dc906990f2b02b.png
      https://i-blog.csdnimg.cn/direct/d2875edcc37343c3bf1c4f4599fed303.png       查察视图属性信息         https://i-blog.csdnimg.cn/direct/11231f0486944bc7a023f13008e2ba18.png   查察视图的详细定义信息            2.9 更新视图中的数据

        更新表中的数据会导致视图中的数据改变;同理,更新视图中的数据也会导致表中的数据改变
UPDATE emp_dept
SET salary = 1000
WHERE salary IS NULL;

SELECT * FROM emp_dept; https://i-blog.csdnimg.cn/direct/ace54c315f904c57a4f4210f5ef7387b.png
        当视图中的字段在及原表中不存在,则不更新视图中的数据
USE test
CREATE VIEW avg
AS
SELECT student.Sname,avg(sc.grade)
FROM student,sc,course
WHERE student.Sno = sc.Sno AND sc.`课程号` = course.`课程号`
GROUP BY student.Sname https://i-blog.csdnimg.cn/direct/4b9c1763308947f4a59ade8d464e036e.png
        在这里进行错误展示
UPDATE avg
SET avg(sc.grade) = 100
WHERE Sname = '周九'
SELECT * FROM avg; https://i-blog.csdnimg.cn/direct/7cf65d93a14e4aaca90247c7f9ceb588.png
三、结语

        风起青萍,浪成微澜
须知少日拏云志,曾许人间第一流。我们还年轻,我们还有无限大概!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 学习MySQL的第十一天