数据查询之单表、连接、嵌套、集合(上)

查询语句一般格式([ ]里面表示如果不需要可不写的):

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子句中不能用聚集函数作为调节表达式的*/

 

你可能感兴趣的:(数据查询之单表、连接、嵌套、集合(上))