select distinct *from user
查询user表中的所有字段的值都一样只显示一条记录
select distinct password from user
查询user表中的password字段值相同的只显示一条记录
select distinct username,passwordfrom user;
查询user表中username和password字段值都相同的只显示一条记录。
10、条件
10.1: is null 和is not null
null是一种状态,不是里面的字符串为空。
通配符:
10.2,% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表 示。
比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'
将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。
另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件
SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'
若使用 SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'
虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。
10.3,_ :表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:
比如 SELECT * FROM [user] WHERE u_name LIKE '_三_'
只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;
再比如 SELECT * FROM [user] WHERE u_name LIKE '三__';
只找出“三脚猫”这样name为三个字且第一个字是“三”的;
10.4,[ ] :表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
比如 SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'
将找出“张三”、“李三”、“王三”(而不是“张李王三”);
如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'
将找出“老1”、“老2”、……、“老9”;
10.5,[^] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
比如 SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'
将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;
SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';
将排除“老1”到“老4”,寻找“老5”、“老6”、…
10.6:逻辑复合条件关键字
and:
or:
注意:where后的条件中出现的字段必须是表中的字段
10.7:排序
ORDER BY
asc desc 当对多个字段排序时,只作用前面的一个字段。
order by :排序字段可以查询字段的别名,先查后排序,where条件中不能用查询字段的别名。
SELECT *FROM emp ORDER BY deptno ASC,sal DESC;
对emp 表 中两个字段排序,先对deptno的值进行升序排列,在先对deptno字段的值排序好的基础上再对sal字段的值进行降序排列11、模糊查询:
关键字LIKE
例如查询user表中userName字段值最后一个字符是‘东’的,语句如下:
select *from user from userName LIKE ‘%东’;
例如查询user表中userName字段值中包含'东'的,语句如下:
select *from user from userName LIKE ‘%东%’
;注:"%"表示零个或者多个字符.我这里只介绍了模糊查询中的一种通配符的使用,具体的看上面的通配符使用。
12、常用的函数:
1、lower(字段或者字符串):把字段或字符串转换为小写。
2、upper(字段或字符串):把字段转换为大写.
3、concat(字段或字符串):连接两个字段或者字符串。
4、length(字段或字符串);得到字段或者字符串的长度。
5、substr(字段或者字符串,start,length):截取字符串, 第二个参数是开始截取的位置,mysql中从1开始,第三个参数是截取的长度。
6、分组函数:计算的结果是一个查询的,不是某一行的
avg(字段):计算出查询结果中该字段的平均数。
例如我要查询emp中工资(sal)高于平均工资的工资信息
selecsal from emp where sal>(select avg(sal) from emp) ;
注:这里用到了子查询,select avg(sal) from emp先查询出emp表中sal的平均工资,条件比较查询。
max(字段):计算出查询结果中该字段的最大值。
min(字段):计算出查询结果中该字段的最小值。
sum(字段):计算出查询结果中该字段的和。
count(字段):计算出查询结果中该字段的条数。
注:分组函数不能用在where条件中,只能用在select后。
今天就先写到这了,后面会慢慢补充mysql的知识!!!