sql 24小时格式_OCP学习笔记——SQL基础知识0405(连载)

612553c8eeb07e057089e4f20dff72ff.gif

1.1.1 oracle去重方法

https://blog.csdn.net/xumajie88/article/details/38756973

1. 用rowid方法

delete from table1 a where rowid !=(select max(rowid)

from table1 b where a.name1=b.name1 and a.name2=b.name2……)

2. 用group by方法

delete from student

group by num

having count(num) >1

3.用distinct方法

1.1.2 日期格式错误

执行第七页的sql,出错。

SELECT last_name

FROM   employees

WHERE  hire_date = '17-OCT-03' ;

ORA-01843: 无效的月份

01843. 00000 -  "not a valid month"

*Cause:    

*Action:

修改这个参数nls_date_language

alter session set nls_date_language='AMERICAN';

完成。

1.1.3 单引号与双引号

在ORACLE中,单引号有两个作用:

          1:字符串是由单引号引用---字符串引用。

          2:转义。

转义时:单引号的使用是就近配对,即就近原则

双引号:

① 表示其内部的字符串严格区分大小写

② 用于特殊字符或关键字

③ 不受标识符规则限制

④ 会被当成一个列来处理

⑤ 当出现在to_char的格式字符串中时,双引号有特殊的作用,就是将非法的格式符包装起来

SELECT last_name, department_id, salary*12

FROM   employees

WHERE  job_id = '&job_title' ;

以下是2个错误:() 

SELECT last_name, department_id, salary*12

FROM   employees

WHERE  job_id = "&job_title" ;  

SELECT last_name, department_id, salary*12

FROM   employees

WHERE  job_id = &job_title ;

1.1.4 替代变量

执行语句,每次遇到&salary,都需要重新输入值,值可以不一样;

SELECT last_name, department_id,salary+&salary

 FROM   employees

WHERE  salary < &salary

把&&salary换成&salary,执行语句发现,只需要输入一次值。在这个会话中,不需要再次输入。

SELECT last_name, department_id,salary+&&salary

 FROM   employees

WHERE  salary < &&salary;

在同一会话中,执行上一语句后,执行这个语句,发现变量也不需要输入。这是因为变量salary的值已经被定义。

select first_name,salary

from employees

where salary < &salary;

把&&salary的功能等同于define

define salary =3000;

取消已定义的替代变量;

undefine salary;

verify的作用

执行语句。

SQL> select first_name,salary

  2  from employees

  3  where salary < &salary;

Enter value for salary: 3000

old   3: where salary < &salary

new   3: where salary < 3000

查看verify的设置。如果把verify设为off,红色部分不出现;

SQL> show verify

verify ON

SQL> set verify off

1.1 lession 04

1.1.1 字符函数

lower

upper

initcap

concat  ,||

substr

length

instr(指定字符的位置)

lpad,rpad(lpad,从左边取n个字符,不足n个,用空格或第三个参数填充)

trim

replace

  select lpad(first_name || last_name,12,'-'),instr(first_name || last_name,'A')

    from employees

  fetch first 3 row only;

1.1.2 数值函数

round

trunc

ceil

floor

mod

1.1.3 日期函数

参考https://www.cnblogs.com/aipan/p/8080151.html

select sysdate from dual;

dual是哑元表,用来凑语法的;

trunc

 trunc(sysdate,'day')            //返回当前星期的星期天,无时分秒

取年月日

select extract(year from sysdate), extract(month from sysdate), extract(day from sysdate)

from dual;

1.1.4 数值日期字符的转换

to_char

to_date

to_number

1.2 lesson05

1.2.1 转换函数

隐式转换:

字符到数值或日期

数值到字符;

日期到字符;

日期与数值之间是显示转换

显示转换:

to_char

to_date

to_number

1.2.2 TO_CHAR

https://www.cnblogs.com/aipan/p/7941917.html

to_char函数的功能是将数值型或者日期型转化为字符型;

日期转换为字符:可以得到世纪、年、月、日、周、季度、小时、分钟、秒,以及相应的大写、名称等;

数值转换为字符:可以指定格式,如小数位数、前导、分割符、货币符等

1.2.3 to_number

字符转换为数值。

可以做进制转换;

一个错误语句,分析原因

select to_char(1235678.4,'L9999.00') from dual;

1.2.4 to_date

https://www.cnblogs.com/fmxyw/archive/2008/08/26/1276850.html

Oracle的SQL采用了mi代替分钟。

1.2.5 nvl

NVL(expr1,expr2)

第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。

注意:两个参数类型必须匹配;

1.2.6 NVL2(expr1,expr2, expr3)

如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值。

1.2.7 NULLIF(exp1,expr2)

如果exp1和exp2相等则返回空(NULL),否则返回第一个值。

1.2.8 Coalesce(expr1, expr2, expr3….. exprn)

返回表达式中第一个非空表达式

所有表达式必须是相同类型,或

de2f381b9dd31cc2d5c2cbc0ed837728.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值