-
数据查询语句进行查询
(1)使用select语句进行查询
语法select<列名|表达式|函数|常量>
From <表名>
[where <查询条件表达式>]
[order by <排序的列名>[asc或desc]];
(2) 查询所有数据行或列
Select *from 表名;
(3 )查询部分行或列
Select 字段1,....,字段n from 表名 where 条件;
(4)查询使用列的别名
Select 字段1 as 字段1别名,字段n as 字段n别名 from 表名 where条件;
(5) 查询空值
Select 字段 from 表名 where 字段is null;
(6)在查询中使用常量列
Select 字段 as字段别名,’字段名’ as 字段名 from 表名 ;
-
(1)聚合函数
Avg()返回字段平均数 count()返回字段行数max()最大值
Min()最小值 sum()某字段的和
例:Select sum(studentresult)from result;
(2)字符串函数
Concat(str1,...,strn)连接字符串
Insert(str,pos,len,newstr)pos为从什么位置开始
Lower(str)所有变小写
Upper(str)所有变大写
Substring(str,num,len)返回字符串str的第num个位置开始长度为len
的子字符串
例:select upper(studentname)from student;
(3)时间日期函数 例:在前面加select now();
Curdate()获取当前时间
Curtime()获取当前时间
Now()获取当前日期和时间
Week(date)返回日期date为一年中的第几周
Year(date)返回日期date的年份
Hour(time)返回时间time的小时值
Minute(time)返回时间time的分钟值
Datediff(date1,date2)返回日期相隔天数
Adddate(date,n)计算加上n天后的日期
date_add(date,interval 多长时间例1 year) 多长时间以后的时间
date_sub(date,interval 多长时间例1 year)多长时间之前的时间
例:Select year(borndate) from student;
timestampdiff(返回格式如hour,timestamp1,timestamp2):相差多久
to_days(now()):到现在多少天
(4)数学函数
Ceil(x)返回大于或等与x的最小整数 (向上取整)
Floor(x)返回小于或等于x的最小整数(向下取整)
Rand()返回0~1之间的随机数
例:Select ceil(studentresult)from result;
(5)流程控制函数
if(1=0,'真','假');成立输出第二个不成立输出第三个
ifnull(expr1,expr2):如果为空expr1换位erpr2
DISTINCT去除重复项
select distinct 字段 from 表名 [where 条件];
分组查询:select camp,count(1) '阵营人数' from star group by camp;
select camp,count(1) '阵营人数' from star group by camp having count(1)>15;
-
order by子句
Selet studentID AS 学生编号,(studentResult*0.9+5) AS 综合成绩
From result
Where (studentResult*0.9+5)>60
Order by studentResult(+desc)降序(+asc)升序默认;
-
LIMIT子句(翻页)
Selet<字段名列表>
From <表名或视图>
Where <查询条件>
Order by <排序的列名>
Limit[位移偏移量,]行数];
-
子查询
(1) 简单子查询
分两步:select....from 表1 where 条件;
Select....from表1where条件
一步:Select ... from 表1 where 字段1 比较运算符(子查询);
模糊查询:between:在什么之间 like:像 (like ‘李%’)in:在什么中
Is null :操作符为null is not null:操作符不为null
%:0到任意个字符 含某字(%字%) _: 1个字符(可以写多个_)
\:转义字符 escape ‘:’:自己定义转义字符
连接查询:1.内连接:inner join查询两表查询的交集2. 外连接 outer join
2.1 left join左连接:以左表作为基准右表一一匹配,匹配不上返回左表记录, 右表以null填充
2.2 right join右连接:以右表作为基准左表一一匹配,匹配不上返回右表记 录,左表以null填充
3. 自连接、等值非等值连接
等值连接where 字段(表一)=字段(表二)
(2)in子查询
(2) not in子查询
-
等值转换:
select distinct s_name,case when s_sex=1 then '男' else '女' end '性别' from stu;
select distinct s_name,if(s_sex=1,'男','女') from stu;
-
范围转化
select s_name,s_score,
case
when s_score>=90 then '优'
when s_score>=80 and s_score <90 then '良'
when s_score>=60 and s_score <80 then '及格' else '不及格'
end '成绩等级'
from stu;
-
行转列
select
s_name '姓名',
case s_course when '语文' then s_score end'语文',
case s_course when '数学' then s_score end'数学',
case s_course when '英语' then s_score end'英语'
from stu;
union
select
s_name'姓名',
max(case s_course when '语文' then s_score end)'语文',
max(case s_course when '数学' then s_score end)'数学',
max(case s_course when '英语' then s_score end)'英语'
from stu group by s_name;
mysql使用DQL查询数据
最新推荐文章于 2024-11-08 22:59:30 发布