Mysql技术(二)

查询操作

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.多表查询

你可能感兴趣的:(Mysql技术(二))