Oracle数据库-DML的介绍与使用(数据操作语言)

DML:数据操作语言
注意:增加改查中查询最为重要,是核心,也最有含金量。
就是说,这节!很重要

一。选择【查询】
先说选择的语法结构[最简版]
1。查询所有字段

select * from 表名;

2.查询指定字段
从表名中选择字段名,字段名,字段名;
3.获取系统时间【通过sysdate来获取系统时间】
从双重选择sysdate;

二。算术操作符【+ - * /】
这节也很简单
列如:

select studentname,(studentage/2)+2-18/3 from t_student;

首先他也是执行算术操作符优先级的,其他的没什么了

。别名三
首先说别名就要注意两点
1.别名要用双引号括起来
2.通过作为别名起

起别名的英文分给字段与表两个的
首先是字段
还是用刚刚的例子

select studentname "stuName",(studentage/2)+2-18/3"age" from t_student;

这里面的“stuName”与“age”是可以换我们怎样正确书写分类中翻译的
或者查询的英文的所有信息
选择学生名为“stuName”,(学生/ 2)+ 2-18 / 3作为“年龄”来自t_student;
然后说表起别名

select s.字段名1,s.字段名2 from 表名 s;

四。连接操作||
【在oracle中字符串用单引号括起来】
列如:
select表段名1 ||':'||字段名2“编写的字段名字”来自表名;
这样他就输出的是:以“编写的名字“为字段名,表里面是”字段名1:字段名2“
||其实起到的效果相当于java里的+

五。其中子句【凡后面加查询条件】
其中子句里右分两组
1.比较操作符【=,>,<,> =,<=,!=,<>}
2.逻辑操作符【or,and,not,in,like,between ... and,null】

先说说比较操作符,
这里面其实都很简单,有但两个需要说一下其他的举个例子就一带而过了
列:查询年龄为20岁的学生的信息

SELECT * FROM t_student from studentage=20; 

而这里面主要说“!=”与“<>”
这两个都是不等于的意思

列如:
查询年龄不等于20的学生的信息
(他是有三种解决方案的)

select * from t_student where studentage<>20;
select * from t_student where studentage!=20;
select * from t_student where studentage>20 or studentage<20;

然后说说逻辑操作符
首先说这些单词都是什么意思
or(或者),

and(并且),

not(不),

in(在..里面),

like(像),
beteen ..and..(在......之间),

null(空值),

null(默认)

那我们就再举个例子
如:查询学生姓名为张三并且年龄大于20岁的人

SELECT * FROM t_student where studentname='张三' and studentage>20; 

或者:查询年龄为18,27,30的学生的信息

SELECT * FROM t_student where studentage in (18,27,30); 
select * from t_student studentage=18 or studentage=27 or studentage=30; 

这样类似的方法,其他的我就不细说了,还是主要说说一些不太好理解的
like(像)可以理解为:模糊查询
他的英文有俩符号的
%:代表0个或多个字符
_:代表任意一个字符

怎么用?还是用例子
列如:查询所有姓张的学生的信息

select * from t_student where studentname like '张%'; 
select * from t_student where studentname like '张__'; 

或者是包涵某个字的,这些是都可以实现找到的

between...and... 
还是例子说话
查询年龄在18-25之间的学生信息

select * from t_student where studentage>=18 and studentage<=25;

然后就是空值null
列:查询生日为空的学生的信息

select * from t_student where birthday is null;

当然他也可以和别的搭配
如:和是null是为空值,不是null是不为空值,或者不null不为空值,等等,

六。order by排序
排序也分俩个
asc:升序[默认]
desc:降序

不废话,上例子:按照年龄对学生进行降序排列

select * from t_student order by studentage asc;
select * from t_student order by studentage desc;

按照年龄对学生进行降序排列并且按照体重进行升序排列[多字段排序]

select * from t_student order by studentage desc,weight asc;


七。聚合函数
额...这个就分的多咯
min():最小值
max():最大值
avg():平均值
sum():求和
count():总个数

例如:
查询班级中最小的年龄
 

select min(studentage)from t_student;


最大值,最小值,求和和平均值都一样
查看个个班中学生的总个数

select count(*) from t_student;
select count(id) from t_student;
select count(1) from t_student;
select count(birthday) from t_student;


有人要问了*是什么?
上面忘了说,*代表的是全部字段
还有,那为什么id和1也可以实现与*相同的作用?
为什么在别处找不到或没见过别人用?
这因为我在数据库管理员在数据库上写在程序时看到的
照他解释,1个与ID也可以实现一样的作用,
但要注意,ID是自己定义出来的字段,
还要自己去定义添加数字,不是凭空出来的,,,


在这里我插一句
教大家一个decode的相关资料:(值,值1,结果1,值2,结果2,最终结果)
列如:

select decode(10,1,'a',2,'b',3,'c','kong') from dual;

意思很简单,在值10中,符合哪个输出哪个值后对应的结果,否则,输出最终结果,比如:
还可以这样用:

select decode(性别,1,'男','女')as sex,count(id)from t_student group by sex;


八。数学函数
分五个:
abs()绝对值
ceil()向上取整
floor()向下取整
trunc()截断函数
round()四舍五入函数
就先拿:abs()说

select abs(-3) from dual;
select abs(studentage-100) from t_student;


向上取整与向下取整和四舍五入就不用我说了吧?
trunc()截取

select dual(3.98)from dual; \\ 输出的是3
select dual (3.98,1)from dual; \\ 输出的是3.9(保留一位小数)
select trunc(334.98,-1)from dual; \\ 输出的是330(向前取整!!)



九。字符串函数
重点来了啊!

1.concat(字符串1,字符串2)

连接两个字符串

select concat(studentname,'来到某某')||'公司' from t_student;

2.initcap( '字符串')
使字符串首字母变为大写

3.instr(源字符串,要搜索的字符)
在一个字符串中搜索指定的字符,发现报道查看指定的字符的位置
里面的字符可以多写,但里面的要用逗号隔开,相当于java中indexOf

4.length(字符串)
返回字符串的长度

5.lower(字符串)
返回字符串,并将所有的字符小写

select lower('AbFCV') from dual;



6.upper (字符串)
返回字符串,并将所有的字符大写

select upper('abcdFG') from dual;


7.rpad | lpad(源字符串,总长度,填充的字符)
在字符串的右(左)边粘贴字符

select replace('abcdeaa' ,'a','M')from t_student; \\输出为MbcdeMM

8.rtrim | ltrim(源字符串,查找的字符串)
删除右(左)边出现的字符串

select ltrim('abcd','ab'); \\输出为:bc

9.substr(源字符串,开始位置,要截取的个数)
取子字符串,从开始开始,取计数个

select substr('abcd',1,2)from dual; \\输出为:ab
select substr('abcd',2,2)from dual; \\输出为:bc

10.replace(源字符串,要查找的字符串,替换的字符串)
替换字符串

select replace('abcdeaa', 'a', 'M') from dual;

11.reverse(源字符串)
反转字符串中的每个字符

select reverse('abc') from dual;



十。转换函数
1.to_char():将其转换为字符串类型
在实战中通常通过to_char()将日期类型转换为字符串类型

例如:
 

select to_char(sysdate,'yyyy-MM-dd')from dual; \ \输出为:当前时间的年月日
select to_char(sysdate,'yyyy-MM-dd HH:mi:ss')来自双重; \\输出为:当前时间的年月日时分秒(12小时制)
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss')from dual; \\输出为:当前时间的年月日时分秒(24小时制)


2.to_date():其将转换为日期类型
在日常开发中通常通过TO_DATE()将字符串类型转换为日期类型

例如:

select to_date('2017-10-13','yyyy-MM-dd')from dual; \\输出为:2017 \ 10 \ 13
select to_date('2017-10-13 15:23:10', 'yyyy-MM-dd HH24:mi:ss')from dual; \\输出为:2017/10/13 15:23:10


十一。日期和时间函数
三个
1.add_months()增加或者减去月份
例如:

select add_months(sysdate, 2) from dual;\\输出为:当前时间加两个月的时间

2.last_day()返回所在月份的最后一天

例如:

select last_day(sysdate) from dual;
select last_day(to_date('2017-02-10','yyyy-MM-dd')) from dual;

3.next_day()给出日期和星期之后计算下一个星期的日期
例如:

select next_day(sysdate, '星期五') from dual;


十二。其他函数
1.nvl(值1,值2)如果值1不为空则显示值1,否则显示值2

举个例子:

select nvl(birthday,sysdate) from t_student;\\输出为:如果生日不为空则显示生日,否则显示sysdate(当前时间的意思)


2.nvl2(值1,值2,值3)如果值1不为空则显示值2,如果为空显示值3
例如:

select nvl2(birthday,sysdate,to_date('2017-02-10', 'yyyy-MM-dd')) from t_student;
\\输出为:如果生日不为空则显示SYSDATE(当前时间的意思),如果为空显示2017年2月10日

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

槐序二十四

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值