逆风执炬,向光而行
一、补充
我们首先对之前的文章进行一下补充
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 emps
- AS
- SELECT *
- FROM emp.departments;
-
- CREATE TABLE depts
- AS
- SELECT *
- FROM emp.department_position;
- SELECT * FROM emps;
- SELECT * FROM depts;
复制代码
2.3 创建视图
- CREATE VIEW empss
- AS
- SELECT emps.id,emps.`name`,depts.position
- FROM emps,depts
- # 因为这里只是为了展示一下单表的情况,所以就没有加入多表的连接条件
复制代码
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;
复制代码
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;
复制代码
2.7 基于视图创建视图
- CREATE VIEW f_emp_dept
- AS
- SELECT emp_dept.salary
- FROM 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_dept
- SET salary = 1000
- WHERE salary IS NULL;
-
- SELECT * FROM emp_dept;
复制代码
当视图中的字段在及原表中不存在,则不更新视图中的数据
- 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
复制代码
在这里进行错误展示
- UPDATE avg
- SET avg(sc.grade) = 100
- WHERE Sname = '周九'
- SELECT * FROM avg;
复制代码
三、结语
风起青萍,浪成微澜
须知少日拏云志,曾许人间第一流。我们还年轻,我们还有无限大概!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |