查询操作
1.检索信息
SELECT * FROM table_name;
SELECT * FROM table_name WHERE (条件) AND (条件);
SELECT clo_name1,clo_name2 FROM table_name WHERE (条件);
2.对查询结果的排序
SELECT * FROM table_name ORDER BY clo_name;(默认升序)
SELECT * FROM table_name ORDER BY clo_name desc;(降序)
注:对于升序排列,NULL值总是出现在开头,对于降序排列,它总是出现在末尾;
3.限制查询结果
(1)SELECT * FROM table_name where (条件) ORDER BY clo_nume LIMIT num;
(2)SELECT * FROM table_name LIMIT num1,num2;
第一个值,给出从查询结果的开头部分跳过的行数,第二个,返回的行数
(3)如果想从某个表里随机取出一行或者几行,可以联合使用LIMIT子句和ORDER BY RAND()子句
SELECT * FROM table_name ORDER BY RAND() LIMIT num;
4.对输出进行计算和命名
(1)CONCAT合并字段
SELECT CONCAT(clo1,clo2,...) FROM table_name;
(2)利用as name 为列分配一个别名,可以省略as
SELECT CONCAT(clo1,clo2,...) as name FROM table_name;
SELECT 1 one , 2 two;
注:如果一个查询的列名有误或者丢失,请检查在某两个列之间是否丢失了逗号
5.处理日期,日期格式“2017-01-01”
(1)将某个DATE列与日期值进行比较
SELECT * FROM table_name where date='2017-01-01';
注:比较运算符< , > , = , <= , >= , <>
(2)检索日期的某个部分,YEAR() , MONTH() , DAYOFMONTH()
SELECT * FROM table_name WHERE MONTH(birth)='2';检索出生在二月的数据
(3)关于日期的其余函数
CURDATE()返回当前的日期
TIMESTAMPDIFF()计算两个日期的差值
TO_DAYS() 将日期转换为天数
DATE_ADD() 日期加,DATE_SUB() 日期减
SELECT (TIMESTAMPDIFF (YEAR,birth,YEAR(CURDATE())))+1 AS age
WHERE name=‘person_name’;
SELECT DATE_ADD('1970-01-01' , INTERVAL 10 YEAR); INTERVAL 间隔
6.模式匹配
模式匹配需要使用 LIKE 或 NOT LIKE 那样的运算符
“-”代表任意的一个字符,“%”代表任意的多个字符,包括空序列
SELECT * FROM table_name WHERE cloumn1 LIKE 'w%';
7.生成统计信息
COUNT() , DISTINCT()去重 ,GROUP BY 分组 , HAVING
(1).SELECT COUNT(*) FROM table_name;
(2).select sex,count(*)from tab_name group by sex;
(3)SELECT state,COUNT(*) AS count FROM tab_name GROUP BY state
ORDER BY count LIMIT 4; 找出4个州人数最多的
(4).HAVING语句与WHERE语句相似,都可以用来设定输出行所必须满足的查询条件。
与WHERE不同之处在于,它可以使用COUNT()那样的汇总函数的结果。带有HAVING语句的查询,
特别适合用于查找在某个数据列里重复出现的值,也可用于查询不重复的值,
此时使用HAVING count=1即可
8.多表查询
网友评论