SQL五个集合函数:SUM,AVG,COUNT,MAX,MIN
通配符的一些用法:(关键字:like % [] -)
select * from tablename where column1 like '[A-M]%'
这样可以选择出column字段中首字母在A-M之间的记录
select * from tablename where column1 like '[ABC]%'
这样可以选择出column字段中首字母是A或者B或者C的记录
select * from tablename where column1 like '[A-CG]%'
这样可以选择出column字段中首字母在A-C之间的或者是G的记录
select * from tablename where column1 like '[^C]%'
这样可以选择出column字段中首字母不是C的记录
脱字符(关键字:like _)
通过使用下滑线字符(_),可以匹配任意单个字符
select * from tablename where column1 like 'M_crosoft'
匹配特殊字符:([ ] _ - %)
把他们都放到[]中就行了,比如:
select * from tablename where column1 like '%[%]%'
匹配发音(关键字:SOUNDEX DIFFERENCE)
如果不知道一个名字确切的发音,但是又多少知道一点,可以考虑使用SOUNDEX DIFFERENCE函数。
select * from tablename where DIFFERENCE(column1,'Laofei'>3)
DIFFERENCE返回0-4之间的数字,4是非常接近,0是差异非常大
要深入了解DIFFERENCE函数的工作原理,使用SOUNDEX函数返回DIFFERENCE函数所使用的音标码
select column1 as column,SOUNDEX(column1) 'sound like'
注意:
DIFFERENCE函数比较两个字符串的第一个字母和所有的辅音字母,该函数忽略任何元音字母(包括Y),除非元音字母是该字符串的第一个字母。
使用这两个函数在where中执行效果并不好,所以尽量少使用。
在大的数据库应用中,经常因为各种原因遇到重复的记录,造成数据的冗余和维护上的不便。
1.用rowid方法
2.用group by方法
3.用distinct方法
1。用rowid方法
据据oracle带的rowid属性,进行判断,是否存在重复,语句如下:
查数据:
select * from table1 a where rowid !=(select max(rowid)
from table1 b where a.name1=b.name1 and a.name2=b.name2......)
删数据:
delete from table1 a where rowid !=(select max(rowid)
from table1 b where a.name1=b.name1 and a.name2=b.name2......)
2.group by方法查数据:
select count(num), max(name) from student --列出重复的记录数,并列出他的name属性
group by num
having count(num) >1 --按num分组后找出表中num列重复,即出现次数大于一次
删数据:
delete from student
group by num
having count(num) >1
这样的话就把所有重复的都删除了。
3.用distinct方法 -对于小的表比较有用
create table table_new as select distinct * from table1 minux
truncate table table1;
insert into table1 select * from table_new;
浙公网安备 33010602011771号