sql操作基础学习笔记
来源:互联网 发布:优化最好的安卓系统 编辑:程序博客网 时间:2024/05/19 10:10
//连接符的使用,同时为列定义别名
select count(0)from (select yhnc||'('|| face||')' as line,zcyhid,face from lt_jswz_zcyhzb info)
select yhnc||'('|| inspect||')' as line,zcyhid,face from lt_jswz_zcyhzb
select yhnc ||cast(dj as varchar(10)) as line,zcyhid,face from lt_jswz_zcyhzb
//转译表达式还有一个很好的作用是截取部分某个字段长度的字符,这在对想只显示部分数据的查询时非常的有用
select face,cast(qm as varchar(8)) as line from lt_jswz_zcyhzb
//使用case表达式进行条件查询
select zcyhid,tt=
case
when totle <10 then 100
when 50>totle=>10 then 200
else 0
end
from lt_jswz_zcyhzb
//函数的应用,截取部分的字符串函数,从开始的位置截取多少个字符的内容
select substr(QM,0,3) as line from lt_jswz_zcyhzb
//聚合函数的应用,sum数值列的和
select sum(dj) from lt_jswz_zcyhzb
//max函数,min
select max(dj) from lt_jswz_zcyhzb
select min(dj) from lt_jswz_zcyhzb
//使用count统计多列数据
select count(zcyhid) as a1,count(distinct dj) as a2,count(inspect) as a3 from lt_jswz_zcyhzb where dj>'0'
//使用avg函数求平均值
select avg(dj) as line from lt_jswz_zcyhzb
//使用group by
select * from lt_jswz_zcyhzb group by dj
//group by与having的区别
通常group by于having同时的使用,在having子句中同样的可以使用连接符、通配符、函数等
group by对查询的结果分组
having对查询的结果做更细的筛选,
如果指定了group by则作用于group by分组的结果
如果指定了where子句而没有制指定group by子句则作用于where的结果分组
如果既没有group by子句也没有where子句,则作用于select查询的结果
在数据的聚合分析中having和where子句可以共存,但是where子句早分组之前过滤数据,而having则过滤分组后的数据
//使用inner join内连接查询
select user_id,f.msg_title
from lt_jswz_ft f
inner join lt_jswz_zcyhzb y
on f.user_id = y.zcyhid
inner join lt_jswz_ht h
on f.user_id = h.user_id
//使用union运算符集合查询
select user_id
from lt_jswz_ft
union (all)//加上all表示不去调重复的记录行,没有则相反
select user_id
from lt_jswz_ht
实际操作中的例子:
删除中的一个多表关联查询问题:
表a一对多表b;再由表b的多条件查出表c的多条行;最后删除查出的表c的多行
select * from lt_jswz_ht c where c.msg_id in (select b.msg_id from lt_jswz_ft b where b.board_id ='002')
//这里要说一个in的用法;操作返回多行的条件也就是说in后可以跟着select子查询语句;
//说明,当子条件中只是在查询一行值时,将in换成“=”、*换成需查询的字段名即可
select * from lt_jswz_ht c where c.msg_id = (select b.msg_id from lt_jswz_ft b where b.board_id ='002')
//一个简单的统计表中记录行数的查询语句
select count(*) from lt_jswz_zcyhzb
如果查询含有多列可以使用如下区别
select count(*) as,avg(*) as a2 a1 from lt_jswz_zcyhzb
//统计及日发贴的一个经典例子
select count(*) from LT_JSWZ_FT where to_char(msg_posttime,'yyyy-mm-dd') = '2007-06-06'
由于数据库子段存的长时间格式与当前取得时间条件无法比较,所以这样做:首先将当前时间的年月日取出
String strtime=ds.getDateTime();
String strdate=strtime.substring(0,10);
得到的结果也就是2007-06-06作为查询的条件,而数据库中的字段也必须转换成短格式的字符串型,所以使用to_char(msg_posttime,'yyyy-mm-dd');由于sql中不能使用java的方法;
//sql中模糊查询和精确查询格式上的区别
select * from LT_JSWZ_ZCYHZB a wherea.zcyhid in (select b.zcyhid from zc_jswz_zcyhxx b where b.yhmc like'%税务菜鸟%' ) order by a.dj desc
子条件中的格式用于模糊查询,精确查询需要将(like '%税务菜鸟%')改成(= '税务菜鸟')
//oracle的sql中取得最新纪录的最优化语句
SELECT * FROM LT_JSWZ_ZCYHZB a WHEREa.zcyhid = (select zcyhid from(select * FROM ZC_JSWZ_ZCYHXX b order byzcsj desc) where rownum<=1)
我举此例涉及到两个表条件涉及到两个字段
其中selectzcyhid from(select * FROM ZC_JSWZ_ZCYHXX b order by zcsj desc)whererownum<=1;就是取到最新一位注册用户的id号语句,oracle不同于sql server不支持topn语法;而是使用select * FROM ZC_JSWZ_ZCYHXX b order by zcsjdesc排列记录集,然后使用select * from(...)where rownum<=n来检索你需要的数据;
select * from(select * FROM ZC_JSWZ_ZCYHXX b order by zcsj desc)where rownum<=n
//更新一个表中的某个字段的所有值为一个特定值
update lt_jswz_ft set [字段]='values'
- sql操作基础学习笔记
- [oracle学习笔记]之一:sql/plus基础操作
- SQL学习基础笔记
- 【个人笔记】SQL操作基础
- SQL学习笔记-基础学习
- T-SQL基础 学习笔记
- SQL基础学习笔记【Forward】
- 学习笔记-SQL基础语法
- SQL基本操作<学习笔记>
- SQL学习笔记:基础SQL语句
- SQL学习笔记:常用SQL语句操作
- sql学习笔记(1)-------------学习基础
- Oracle学习笔记二:SQL*PLUS基础
- Oracle学习笔记五:PL/SQL基础
- pl/sql学习笔记之一 语言基础
- PL/SQL学习笔记[1]-基础
- SQL零基础学习笔记(一)
- Oracle基础学习笔记(五) (PL/SQL)
- oracle日常操作总结
- Linux的关机与重启命令
- 郁闷中。。。
- 龚方雄:中国股市仍处牛市初期
- 算术编码
- sql操作基础学习笔记
- 实用windows使用技巧
- asp中application和session的区别
- java调用Shell脚本
- GE To Open Advanced Manufacturing Technology & Software Center in Michigan
- Oracle实用操作
- 院士教我们这样做科研
- Chrome OS 就是“浏览器OS化,OS浏览器化”的最新进展吧
- Huffman编码