首页 > 代码库 > 11-04 C#基础数据库--连接查询、联合查询、索引
11-04 C#基础数据库--连接查询、联合查询、索引
一、子查询补充:
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 条件
11-04 C#基础数据库--连接查询、联合查询、索引