SQL语言基础(4)
UNION将两个或两个以上的查询结果合并为一个结果集,它与使用连接查询合并两个表的列是不同的,使
用UNION合并查询必须遵守:1列的数目和顺序必须一致;2数据的类型必须兼容。
select 语句
UNION [all]
select 语句
可以看到,只要对应字段的类型相同就可以完成合并操作,但是为了有意义,两个查询的结果应该为相同
的含义,否则没有意义。
结果字段名称和union之前的字段名称相同,默认情况下删除结果集中的重复记录,如果希望保留所有记
录,则必须使用all关键字。
使用union时单独的select语句不能包含自己的order by或compute子句,只能在最后使用order by和
compute语句,对最终结果集进行作用。
若需要对查询结果进行分组以及在分组后对结果使用having子句进行过滤,则必须在单独的select语句中
指定group by和having子句。
查询计算机系的学生或者年龄不大于19岁的学生,并按年龄倒排序
select * from student where sdept="计算机"
union
select * from student where sage<=19
order by sage desc
连接查询
根据数据表的逻辑关系从两个或多个数据表中检索数据
定义数据表之间的关联方式:1指定用于联结的字段,典型的联结条件是在一个数据表中指定外键,同事
在另一个数据表中指定与其关联的主键。2在select语句中指定比较各字段值时要使用的逻辑运算符。
联结的类型:内联结;外联结(左向外连接,右向外连接,完整外连接);交叉连接
内联结格式:数据表1 inner join 数据表2 on 联结表达式
指定返回两个表中所有匹配的行。inner是缺省的连接方式
外连接:数据表1 left (outer) join 数据表2 on 联结表达式
左联结数据表1的所有记录都返回,右边字段没有匹配时为空值。
数据表1 right (outer) join 数据表2 on 联结表达式
右联结数据表2的所有记录都返回,左边字段没有匹配时为空值。
完整联结:数据表1 full join 数据表2 on 联结表达式
结果集包括所有记录,没有匹配记录时则将另一数据表选择列表字段置空。
交叉联结:数据表1 cross join 数据表2 (没有where子句的情况下返回笛卡尔乘积)
嵌套查询:外层查询是主查询,内层查询是子查询。SQL允许多层嵌套,order by 子句只能对最终查询结
果进行排序。
比较常用的子查询:where 表达式[not] in (子查询)
&
相关文档:
首先:分离数据库
企业管理器--右键suspect的数据库--所有任务--分离数据库然后备份你的suspect数据库的文件,再按下面的步骤处理:
1.新建一个同名的数据库
2.再停掉sql server
3.用suspect数据库的文件覆盖掉这个新建的同名数据库
4.再重启sql server
5.此时打开企业管理器时新建的同名数据库会出现置疑,先不 ......
if(query.getIsScrapAlert()!=null&&query.getIsScrapAlert()==1){
//criteria.add(Expression.sql(" add_months(this_.D_RECEIVE_DATE,this_.N_DEPRECIABLE_LIFE*12)<add_months(sysdate,-3) "));
criteria.add(Expression.sql(" ((add_months(this_. ......
修改数据库对象所有人
今天帮朋友传数据库报错,提示 "
[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]登陆 xxx 失败",正好前段时间碰到同样问题,尝试删除用户 xxx , 又报错,提示" 用户拥有对象,所以无法删除". 查看数据库,发现该用户拥有很多存储过程,一个一个改太麻烦,从网上找到如下方法,恰好解决此问题:
CR ......
from子句指定需要进行数据查询的表,视图等数据源,用逗号分隔。
from子句还可以指定数据表或视图之间的连接类型,类型取决于on子句中指定的连接条件。
T-SQL可以支持在from子句中指定除数据表或视图外的其他对象构成派生表。
例如:select emp.员工编号,emp.员工姓名,sp.部门名称
fr ......