11-04 SQLserver基础--连接查询、联合查询、索引

一、子查询补充:

Exists的用法:

select*from haha where exists(select*from bumen where bumen.code=haha.bumen,and bumen.name='销售部')and age>35--相当于循环嵌套语句

一般用法:=

select*from haha where bumen=(select code from bumen where name='销售部')and age>35--括号里面查询出来的当作参数使用

二、连接查询

子查询不仅能放在where后当作条件使用

原句:句式一:Select name,sex,age,bumen from haha

替换句,将haha里的bumen替换成bumen里的code:句式二:Select name,sex,age,(select name from bumen where bumen.code=haha.bumen)as 部门,(select ceo from bumen where bumen.code=haha.bumen) from haha

以上就是连接查询的格式。

简化连接查询语句格式:Select.haha.name,sex,age,bumen.name,ceo from haha,bumen where haha.bumen=bumen.code

还能放在select.和from 中间使用。相当于一个转换函数,查询出来的必须是一行一列。

表与表哪个表在前面就先执行哪个表的查询,必须在表与表之间存在连接关系时才能使用。

1、横向联合

拼接查询--join...on...(将两个表拼在一起显示,最多三个表)

Select haha.name,sex,age,bumen.name,ceo from haha

Join bumen on haha.bumen=bumen.code--将join之后的语句加入到上面的表中。

【注意事项】查询到的结果必须是在select..from之间写出来才能显示。

Join前面可以加三种修饰符:

1)Full join...on

加full:全部列出数据,把两个表中的数据全部显示出来,即使其中一个表中的数据与另一表没有任何关系。

2)Left join..on

加Left:(通过关系显示)显示左边表中的全部数据,按照左边表的顺序排列,而右边表的数据则通过关系排列,右边没有关系的不显示。

3)Right join..on

加right:(通过关系显示)显示右边表的全部数据,按照右表的顺序排序,而左边表的数据通过关系排列,左边没有关系的不显示。

2、纵向联合union:

一个表存放现有数据,另一个表存放已删除的数据.

列必须要对应一致。

1)、将haha表中年龄>40岁或者年龄

Select * from haha where age>40

Union

Select * from haha where age<30

2)、将haha表中name,bumen和bumen表中的ceo,code查询,同时出现在同一个表中

  select name,bumen from haha

  Union

  Select ceo,code,from bumen

【注意事项】1.具备自动去重的功能。

                 2.数据类型必须对应一致

【案例1】--创建学生信息表:学号、姓名、班级、性别、语文教师编号、数学教师编号、英语教师编号


 --创建教师表:教师编号、姓名、课程、性别、出生日期


 --创建分数表:语文分数、数学分数、英语分数、学生学号


 --分别插入虚拟数据,之后进行查询操作:

约束 除了主键/外键约束,还有其他的约束

1、设置唯一性约束(作为候选索引)提前设置好,防止录入出错;

只要是设置了唯一性的列都可以作为外键使用。

方法二:需要设置唯一键的列名直接加unique.

 例:cid varchar(50) unique

 

2、查看查询代码

3、check约束

 表达式可以用and连接(可以加多个表达式),等同于where 条件

 

 

 

 

原文地址:https://www.cnblogs.com/xiaoqingshe/p/4077327.html