文章目录
一、SQL中常用函数的使用
1、字符< Ltrim、Replace、Rtrim、Substr、Trim>
(1)Ltrim
- 函数形式:Ltrim(X1,X2)
- 函数说明:从X1字符串左边删除X2字符,遇到非X2字符时停止。不指定X2时,默认为空格。
- 举例:select ltrim(‘1hello world1’,‘1’)from dual;
- 运行结果:
- 更多例子:
(2)Replace
- 函数形式:Replace(X,A,B)
- 函数说明:用B字符串取代X中所有的A字符串。
- 举例:select replace(‘11helloworld11’,‘1’,’!’)from dual;
- 运行结果:
(3)Rtrim
- 函数形式:Rtrim(X1,X2)
- 函数说明:从X1字符串右边删除字符X2,遇到非X2时停止.。不指定X2时,默认为空格。
- 举例:select rtrim(‘1hello world1’,‘1’)from dual;
- 运行结果:
- 更多实例:
(4)Substr
- 函数形式:Substr(X,a,b)
- 函数说明:由字符串左边第a个字符开始截取b长度的字符。
- 举例:select substr(‘1hello world1’,2,5)from dual;
- 运行结果:
(5)Trim
- 函数形式:Trim(‘a’from’X’)
- 函数说明:删除X头尾的字符a,遇到非a停止,且字符a只能由一个字符组成。
- 举例:select trim(‘1’from’100hello 1 world111’)from dual;
- 运行结果:
2、日期< Sysdate、next_day>
(1)Sysdate
- 函数形式:sysdate
- 函数说明:得到当前系统的时间。
- 举例:select sysdate from dual;
- 运行结果:
(2)next_day
- 函数形式:next_day(date,day)
- 函数说明:得到指定日期date的下一day的日期。
- 举例:select next_day(sysdate,‘星期一’)from dual;
- 运行结果:
注:如果输入的day是数字的话,从周日算起,周日就为第一天。例如输入select next_day(sysdate,1)from dual;那么显示的就是11-4月 -21。(这里的sysdate是2021/4/8)。
3、转换< To_char、to_date、to_number>
(1)to_char
- 函数形式:to_char(X,’格式’)
- 函数说明:将指定的表达式转变成字符串形式。
- 举例:select to_char(123.123,‘000.00’)from dual;
- 运行结果:
(2)to_date
- 函数形式:to_date(X,’格式’)
- 函数说明:将字符串转化成日期。
- 举例:select to_date(‘2021-04-08’,’yyyy-mm-dd’)from dual;
(3)to_number
- 函数形式:to_number(X,’格式’)
- 函数说明:将制定表达式转化为数值类型。
- 举例:select to_number(‘112233’)from dual;
- 运行结果:
①进制转化;
②格式转换范围错误时会提示错误;
4、统计函数< Sum、Avg、Max、Min、Count>
(1)sum
- 函数形式:sum(数据字段名)
- 函数说明:统计数据累计和。
- 举例:select sum(sal) from scott.emp;
- 运行结果:
(2)avg
- 函数形式:avg(数据字段名) 求取数据平均值
- 函数说明:求取数据平均值
- 举例:select avg(sal) from scott.emp;
- 运行结果:
(3)max
- 函数形式:max(数据字段名) 查找数据最大值
- 函数说明:查找数据最大值。
- 举例:select max(sal) from scott.emp;
- 运行结果:
(4)min
- 函数形式:min(数据字段名)
- 函数说明:查找数据最小值。
- 举例:select min(sal) from scott.emp;
- 运行结果:
(5)count
- 函数形式:对数据进行累计计数
- 函数说明:count(数据字段名)
- 举例:select count(sal) from scott.emp;
- 运行结果:
5、其他< User、Decode、Nvl>
(1)user
- 函数形式:user
- 函数说明:获取当前用户的用户名
- 举例:select user from dual;
- 运行结果:
(2)decode
- 函数形式:decode (expression, search, result)
- 函数说明:将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。
- 举例:select sal,decode(sal,3000,‘工作不易’)from scott.emp;
- 运行结果:
(3)nvl
- 函数形式:nvl(参数1,参数2)
- 函数说明:判断列值是否为空。
- 举例:select ename,nvl(comm,0) from scott.emp;
- 运行结果:
二、dual关键词
1、含义
dual是一个一行一列的虚拟表,为了符合SQL规范而设计的。任何用户均可读取,常用在没有目标表的select语句块中。
2、举例
(1)查看dual表
(2)查看当前连接用户
(3)查看当前日期
(4)当作计算器
三、SQL事务处理
(1)选择SCOTT 下的dept表;
(2)插入两条数据及相应的保存点;
(3)插入数据后,表显示如下;
(4)回退至S1并提交;
(5)查看表以验证是否回退。
四、SQL语言的应用
1、解锁HR模式,对HR模式下的表进行操作:
此操作不记录。
2、以HR身份登录数据库后进行如下操作:
(1)查询HR.EMPLOYEES表的表结构;
(2)查询EMPLOYEES表中每个雇员的姓名(要求将first_name,last_name字段连接在一起显示)、职位、工薪、部门编号;
(3)查询HR.DEPARTMENTS表的表结构;
(4)使用子查询查询属于某一部门员工的姓名、职位、工薪、部门编号的信息(已知的信息为部门名称,部门名称由用户自己给出);
(5)统计某一部门的雇员的最高和最低工薪;
(6)向EMPLOYEES表添加一组数据:
values(600,’LISI’,’lisi@163.com’,sysdate,’SH_CLERK’,1650);通过SELECT查询语句,查看是否在EMPLOYEES表中添加了相应的记录;
(7)使用UPDATE语句更新该记录的SALARY列,为部门编号80的员工上调工薪10%;
(8)删除操作(6)中新增加的那条记录。