别名有表别名和列别名
就是个表取名字和列取名字
列别名
表别名
(字句限定返回值)
—— 非(不是) 和 或
< >= <= =<>(!=)基本比较运算符 判断字符串 数字 日期的大小。
赋值运算符 :=
语句:**where 列名 between val1 and val2**是一个闭区间
语句: where 列名 in (值1, 值2, ...) 判断列的值是否在指定的集合中
判断列的值是否为空
语句:**where 列名 is null**
语句:**where 列名 is not null**
% 表示零或多个任意的字符
_ 表示一个任意的字符
语法:**where 列名 like '_%'**
语法: order by 列名
order by(升序)asc 可省略
order by desc 降序
注意:当 order by 子句中有使用了带引号的别名时,无法排序
如果数据量小则在内存中进行,如果数据量大则需要使用磁盘
Limit 显示数据个数
Limit 起始位置,显示数据个数
select 列表中的字段,
要么使用聚合函数或 group_concat() 包起来 ,
**要么必须出现在 group by子句中 **
having 与group by结合使用,用于将分组后的结果进一步过滤
-count(*)可以获取查询的结果记录条数
-- max():获取最大值
-- min():获取最小值
-- avg():获取平均值
-- sum():指定字段求和
有时需要将表中的记录去掉重复后显示出来,可以用distinct关键字来实现,例如执行语句 SELECT * FROM user返回结果如下:
此时看到id=2,3的记录username字段相同,如果想查询所有不重复的username,可以执行如下:
SELECT distinct username FROM user
例如执行排序语句: SELECT * FROM user order by id asc得到三条升序的数据,如果想限制只显示2条,可以使用LIMIT关键字: SELECT * FROM user order by id asc limit 0,2。LIMIT后面跟着的表示起始偏移量和前N行记录,默认起始偏移量为0,所以这句话也可以写为: SELECT * FROM user order by id asc limit 2。 LIMIT经常和order by一起配合使用来进行分页显示。
聚合 *** 作的语法涉及下面几个参数:
示例:
表连接从大类上分为内连接和外连接。二者区别在于内连接只选出两张表中互相匹配的记录,外连接会选出其他不匹配的记录。
示例:
创建一个雇员表deployee,有五个人:
再创建一个部门表,有4个部门:
某些情况下,查询的条件是另外一个select语句的结果,这时用到子查询。子查询关键字有in,not in,= ,!=,exists,not exists等。
如执行 select * from deployee where deployee.dep_id in (select dep_id from department)也表示查询有部门的雇员。如果子查询记录数唯一,可以使用=代替in:
select * from deployee where deployee.dep_id in (select dep_id from department where dep_id = 'sale') 由于子查询只有一条记录,所有可以用等号
如果要求将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来,需要使用union和union all关键字来实现。
union 和 union all的主要区别是union all是把结果集直接合并在一起,而union 是将union all后的结果进行一次distinct,去除重复的记录。
示例:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)