DQL语言查询数据
1.DQL语言
DQL:Data Query Language,数据查询语言
1.select 语法
SELECT [ALL | DISTINCT]
{ * | table.* | [ table.field1 [ as alias1] [, table.field2 [as alias2]][, …]] }
FROM table_name [ as table_ alias ]
[ left|out|inner join table_name2 ] #联合查询
[ WHERE … ] #指定结果需满足的条件
[ GROUP BY …] #指定结果按照哪几个字段来分组
[ HAVING …] #过滤分组的记录必须满足的次要条件
[ ORDER BY… ] #指定查询记录按一个或者多个条件排序
[ LIMIT { [ offset,] row_count | row_count OFFSET offset }] ; #指定查询的记录从哪条至哪条
注:
[] 括号代表可选的;
{} 括号代表必须的;
#MySQL语句中的注释符,也可以用 /该处为注释/
2.select语法详解
1.查询表table中所有的数据,效率低,不推荐
select * from table;
2.查询表table中指定的列,column1,column2…,如果几个表中有相同的列名,可以用table.column1的形式来表示
select column1 [as 指定列名],...,column2 [as 指定列名] from table [as t];
3.as
语句 :可以给数据列和表取一个新的别名,也可把经计算或总结的结果用另外一个新名称来代替
4.distinct
关键字:给select查询的结果去重,与之相反的是默认的all,返回所有的数据
5.使用表达式 在返回列中使用
select 表达式 ;//例:select 1+2;
6.where
条件语句:用于检索数据表中符合条件的记录,搜索条件可由一个或多个逻辑表达式组成,结果一般为真或假
逻辑操作符:
比较操作符:
注:
null :NULL代表“无值”,区别于零值0和空符串“”,只能出现在定义允许为NULL的字段
between and :根据一个范围值来检索,是一个闭区间
like :与‘%’连用,表示可以匹配任意多个字符;与‘-’连用,表示匹配单个字符
in() :括号中是一个值的集合,要查询的字段只要与其中至少一个值相同及匹配条件,多个值之间用英文逗号隔开。in 比 or 效率要高得多
7.连接查询:
语法:
select column from table1 join table on column1=column2 where condition;
①内连接:join
或inner join
会展示两表关联上的所有数据,即两个数据交集中的数据
select column from table1 inner join table on column1=column2 where condition; //inner可以省略
②外连接:
左关联:left join
会展示左表的所有数据,右表展示关联上的所有数据,未关联上的用null填充
select column from table1 left join table on column1=column2 where condition;
右关联:right join
会展示右表的所有数据,左表展示关联上的所有数据,未关联上的用null填充
select column from table1 right join table on column1=column2 where condition;
③全连接:mysql 15.8 之后才支持 full join
相当于左关联 union
右关联
④自连接:同一个表格中数据表与自身进行连接
8.group by
列名
对所有的数据进行分组统计
分组的依据字段可以有多个,并依次分组
与HAVING结合使用,进行分组后的数据筛选
9.order by
列名:
表示该列升序排列,省略了默认值ASC;加上DESC,表示降序排列。
字符串也可以比较排序,按位比较ASCII值。
可以比较多字段排序,多个字段用逗号隔开,先排序前面的,钱买你的相同了,在比较后面的。
10.limit
:
方式一:
limit num 表示从0开始显示num行数据,其中0可以省略
limit num1,num2,表示从num+1行开始,显示num+2个数据
方式二:
limit num1 offset num2 表示num2+1行开始,显示num1行数据
11.子查询:
在查询语句中的WHERE条件子句中,又嵌套了另外一个查询语句
嵌套查询可由多个子查询组成,求解的方式是由里及外
子查询返回的结果一般都是集合,故而建议使用 IN 关键字
MySQL函数
①数学函数:
abs(),sqrt(),power(),floor(),ceil(),round(),truncate()
②字符串函数
trim() 去空格,substring() 截取,insert(a,x,y,b),concat() 拼接
③日期函数
now(),year(),month(),date(),unix_timestamp(),from_unixtime(),datediff(),date_add(),date_foamat()
④系统信息函数
version()
⑥统计函数
count(* | 1 | 列名 ),sum(),max(),min(),avg()
字符串函数