Sql常用语句
程序员文章站
2024-01-24 15:36:46
...
基础语句
select、update、insert into、delete 对应查、改、增、删
-- 示例
select * from table
update table set c1=value1 where 条件
insert into table values (value1,value2...)
insert into table(c1,c2,c3...) values (value1,value2,value3...)
delete from table where 条件
其他基础语句
distinct、and&or、order by、group by、like、limit、top、as、between and、in
--distinct 主要作用在于去重
select distinct column_name from table
--and & or 用于多条件判断
--order by 负责查询条件升降序,默认升序,降序使用desc
--group by 多用于聚合函数,对一个或多个结果集进行分组
--like 一般和%一起使用,类似模糊查询,%为占位符
--top、limit、rownum 用于指定返回数目,sql用top、mysql用limit、oracle用rownum
--as 别名
--between and 取规定中间值,但要根据数据库来看·包含·情况
--in 结合where语句使用,给出范围,判断是否在范围内
--having 使用聚合函数的伪字段时使用,having必须是select查询字段时声明过
select c1,c2 from table having c3>100 -- 错误写法,c3并未在查询时筛选出
select c1,avg(c2) as ag from table where ag>100 -- 错误写法,where不能使用聚合伪字段,应用having
where、group by、order by、having 书写顺序和执行顺序
--书写顺序
select 查询 from table
where 条件1
group by 分组
having 过滤组
order by 排序
执行顺序
1.where对全表筛选,返回结果集1
2.对结果集1使用group by分组,返回结果集2
3.对结果集2每一组数据进行select查询,有几组执行几次,返回结果集3
4.对结果集3执行having筛选,返回结果集4
5.对结果集4进行排序,order by
表连接
inner join,left jon,right join,full outer join
结果集连接
union、union all
--union 用于将两个或多个查询结果连接起来,select必须有相同的列和相同的类型(自动过滤重复值)
select column_name(s) from table1
union
select column_name(s) from table2;
--如果允许重复值 使用 union all
sql函数
avg()、count()、max()、min()、sum()、sql-len()、mysql-length()、round()、now()、format()
--avg() 求平均值
--count() 统计个数
--max() 求最大值
--min() 求最小值
--len()、length() 求长度,mysql使用length()
--round() 对数值进行四舍五入round(c1,x) x为小数点位数
--now() 返回当前系统时间
--format() 格式化时间
其他常见语句
--case when then else end
case score when 'A' then '优' else '不及格' end --如果score为A则为优,否则为不及格
case score when 'A' then '优' else 0 end --会报错,因为then和else类型不同
case c_id when '01' then score end --如果c_id为01就记录分数
case when score>60 then 1 else 0 end
(CASE WHEN score = 'A' THEN '优'
WHEN score = 'B' THEN '良'
WHEN score = 'C' THEN '中'
WHEN score IS NULL THEN '缺席考试'
ELSE '不及格' END) AS 成绩
aaa@qq.com 变量
SELECT a.*,@i:aaa@qq.com+1 AS 排名 FROM score a,(SELECT @i:=0) b
WHERE a.c_id='01' ORDER BY a.s_score desc
这里有50道sql查询练习题,都做出来会对查询有更加深刻的了解