1.注意点
在查询过程中,不确定数据库表中的数据量,先查询数据量,数据量较大,则不能直接查询(select * from emp),如果数据量较大,直接查询容易造成死机或者数据读取较慢,如果较小可以查询。
查询数据量 count(*)
select count(*) from emp; 从emp表中查询数据量(也就是数据记录数量)
2.表别名
访问表字段时通常会使用“表名.字段”的显示方法,假设表名很长时,可以给表名起一个别名,用别名.字段名表示。
select * from user-dep-leader e where e.name="liu"
将表名user-dep-leader起一个别名e,用e.name 表示user-dep-leader.name
3.查询多表
当查询多表时,例如有两个表,emp和dept,数据量分别为2和3,则直接查询的数据量为6,这种操作叫做笛卡尔积。(多张表的数据乘积)
select * from emp,dept; 数据量为6;
因此,要多表查询,首先要消除笛卡尔积。
(1)采取关联字段
select e.name , e.job,m.name from dept e, emp m where e.deptno=m.empno
(2)左右连接
左右连接,简单的理解就是查询的参考的方向。如果dept表中某些部门没有员工,使用内连接,没有员工的部门就没有显示,因此要使用以dept表为基准的外连接。而“(+)”就用于左、右连接的更改,这种符号有以下两种使用情况:
- (+)=:放在了等号的左边,表示的是右连接;也就是以右边的列名为参考
- =(+):放在了等号的右边,表示的是左连接;也就是以左边的列名为参考
但是不用去刻意的区分是左还是右,只是根据查询结果而定,如果发现有些需要的数据没有显示出来,就使用此符号更改连接方向。
如何查询数据库表中是否有重复数据
比方说
在A表中存在一个字段“name”,
而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select Name,Count(*) From A Group By Name Having Count(*) > 1
同时多参数查询是否有重复数据
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1