查询语句一般格式([ ]里面表示如果不需要可不写的):
select [all(有重复)或者distinct(去重复)] *或者目标列表达式/*查询的内容,结果*/
from 表名或者视图名或者(select语句的结果集合)[as 别名]/*从哪里查询,数据源*/
[where 条件表达式]/*条件筛选*/
[group by 列名 [having 条件]]/*按什么条件再按照什么列进行分组*/
[order by 列名 [asc或desc]]/*将查询出来的内容进行升序或者降序排列*/
以下均为使用mysql数据库操作验证过的sql语句
单表查询(一)
/*未切换数据库访问其他数据库*/
- /*升序:查询crm数据库的base_dict表全部列并且按照dict_type_code列的升序进行排序*/
select * from crm.base_dict order by dict_type_code asc;
- /*降序*/
select * from crm.base_dict order by dict_type_code desc;
/*切换当前数据库到crm*/
use crm;
- /*从base_dict表中查询部分列的数据并且dict_id的数值范围不在1~20之间*/
select dict_id,dict_type_name from base_dict where dict_id not between 1 and 20;
/*谓语in*/
- /*and后面另一个条件子句:查询出的结果的dict_type_code列不包含001、002、004这三个值*/
select * from base_dict where (dict_id between 1 and 20) and (dict_type_code not in(001,002,004));
- /*谓语like,与通配符一起使用,%代表任意长度字符,_代表单个字符*/
- /*查询出的结果为dict_type_name列的值以 客户开头 后面接任意长度字符的字符串*/
select * from base_dict where dict_type_name like '客户%';
- /*一般转义符为/,如果需要修改则使用escape*/
/*错误转义写法:查询第二个字符为%的字符串的记录*/
select * from test where name like '_%%';
/*正确写法一*/
select * from test where name like '_\%%';
/*正确写法二*/
select * from test where name like '_*%%' escape '*';
/*常用聚集函数count\sum\avg\max\min*/
- /*查询元组个数*/
select count(*) from base_dict;
- /*查询某列值的个数:31*/
select count(dict_type_code) from base_dict;
- /*查询数量去重: 9*/
select count(distinct dict_type_code) from base_dict;
- /*查询列dict_type_code中的最大值*/
select max(dict_type_code) from base_dict;
- /*group by子句*/
/*查询dict_type_name的数量以及数值并按照不同的dict_type_name分类*/
select count(dict_type_name),dict_type_name from base_dict group by dict_type_code;
/*查询dict_type_name的数量以及数值并按照不同的dict_type_name分类,并且要元组数量大于3的,*/
select count(dict_type_name),dict_type_name from base_dict group by dict_type_code having count(*)>3;
- /*注意:使用聚集函数作为条件以后而使用having的原因是:where子句中不能用聚集函数作为调节表达式的*/