MySQL数据库(4)

子查询:

在一个 select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select 语句称之为子查询语句

主查询:

主要查询的对象,第一条select语句

主查询和子查询的关系:

子查询是嵌入到主查询中,子查询是辅助主查询的,要么充当条件,要么充当数据源,子查询是可以独立存在的语句,是一条完整的 select 语句

子查询分类:

标量子查询: 子查询返回的结果是一个数据(一行一列)    一般使用的是比较运算符

select * from student where age > (select avg(age) from student);

列子查询: 返回的结果是一列(一列多行)    一般使用in

select * from student where tid in (select id from teacher);

行子查询: 返回的结果是一行(一行多列)          需求: 查找班级年龄最大,身高最高的学生

              行元素: 将多个字段合成一个行元素,在行级子查询中会使用到行元素

select * from student where (height,age) = (select max(height),max(age) from student);

完整的select语句:

select distinct *

from 表名

where ...

group by ... having ...

order by ...

limit start,count 

执行顺序为:

from 表名

where ....

group by ...

select distinct *

having ...

order by ...

limit start,count

实际使用中,只是语句中某些部分的组合,而不是全部。

外键:

外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。

由数据库自身保证数据一致性,完整性,更可靠,因为程序很难100%保证数据的完整性,而用外键即使在数据库服务器当机或者出现其他问题的时候,也能够最大限度的保证数据的一致性和完整性;设置外键约束的两个表之间会具有父子关系,即子表中外键的字段的取值范围由父表所决定;设置外键一定程度上降低数据库的速度;子表的外键字段的数据类型和父表中要一致。

视图:

通俗的讲,视图就是一条SELECT语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性;

创建视图:

create view 视图名称 as select 语句;           定义视图建议以v_开头

查看视图:

show tables;

查询视图:

select * from v_s;

删除视图:

drop view 视图名称;

修改视图:

create or replace view v_s as select id,name from student;

视图的作用:

提高了重用性,就像一个函数,  对数据库重构,却不影响程序的运行,  提高了安全性能,可以对不同的用户,  让数据更加清晰

原文地址:https://www.cnblogs.com/onerose/p/10054693.html