oracle基础_字符_数字_日期_转换-函数
Oracle 基础
关键字: orcale基础
一、关系数据库的一些概念
1、主键的值一般不可以改变
2、外键:指向另一个表或本表的主键或唯一键的字段。外键的值一定要和某一主键相同,或者为空。
3、数据库对像:表,视图,序列,索引,同义词,程序(进程,函数,sql和pl/sql数据)4、sql command 类别
data retrieval数据检索:select
data manipulationlanguage (DML)数据操作语言:insert,update,delete
data definition language (DDL)数据定义语言:create,alter,drop,rename,truncate
transaction control事务控制:commit,rollback,savepoint
data control language(DCL)数据控制语言:grant,revoke
DCL 和DDL命令的执行会导致一次隐式提交,之前未提交的操作(包括DML
命令)都会提交写入日志文件,并在适当地时候写入数据文件。
二、SQL的语法
1) 连接号:||
2) 把两个字符连接起来
eg:select game_card_type_id||name from game_card_type;
3) select distinct dept_id,title from emp: 对多个字段的唯一
4) order by desc(降序)
order by asc(升序)
5) where column is (not) null
6) like ‘_a%’ _表示一个字符。%表示多少字符
like ‘%x\_y%’ escape ‘\’:显示包括x_y的字符
7) where table1.column(+)=table2.column
place the operator on the side of the join where there is no value
to join to.
把(+)放在可能没有值的位置.
8) 联接类型:
equijoin:等式查询
non_equijoin:不等式查询
self:自己和自己建立关联
out join:where a.column=b.column(+)
可以用的操作符是:’=’,’and’,不可以用’or’,’in’
9) COUNT 函数所用的列包含空值时,空值行被忽略。
10) where 后的in | any | all 的区别
in : 等于子查询的任何一个数
any : 与子查询的每一个值相比,只要比其中一个大(小)就可以了
all : 与子查询的所有值相比要比所有的的都大(小)
!=ALL作用跟NOT IN 一样
三、SQL*PLUS的环境(可以在glogin.sql中定义初始参数)
1) START 命令用以执行一个已储存的文件,等同于@
2) SAVE命令用以创建一个文件
3) EDIT命令用以调用编辑器编辑已存文件的内容
4) CHANGE 是SQL*Plus的编辑命令,用于在当前一行把旧文段转换为新文段
5) DEL 命令用以删除文本中一行或多行文字
6) SPOOL命令用以把查询结果储存在一个已有文件中,注意与SAVE区别
7) GET命令用以一个文件的内容写进一个SQL块中
8) SPOOL OUT命令用以把文件的结果发送到系统打印机。
9) set pause off/on:设置页面的滚动。按enter看下一页。
10) PAGESIZE:指定每页显示的行的数值,
11) LONG:设置LONG类型数据显示的最大宽度
12) FEEDBACK:设置查询返回记录的最大值
13) DESCRIBE :用于显示表和视图的结构,同义词,或指定函数和过程的详述。
14) Timing:可以看到语句执行的时间
15) Autotrace:可以看到sql的执行计划,sysdba执行/home/oracle/product/9.2.0/sqlplus/admin/plustrce.sql脚本,而且必须把plustrace角色赋给执行用户。执行用户必须运行/home/oracle/product/9.2.0/rdbms/admin/utlxplan.sql
16) 在各种数据类型中,只有NUMBER数据类型的默认显示是靠右对齐的,而CHAR, DATE和VARCHAR2是靠左对齐的
17) QUIT 是SQL*PLUS命令,用以结束一个SQL*PLUS的对话。
18) ttitle:
ttitle ‘selina’ 设select 的结果的抬头为selina
tti :显示ttitle的状态
tti off/on
btitle ‘end’ 设结果的尾部
19) Column:
a) column name heading ‘名字’format a15
b) column id justify left format 999999
c) column start_date format a9 null ‘not hired’//当字段为空的时候则显示成not hired
d) column :显示所有的column设置
e) column columnname:显示某一个字段的设置
f) clear column :清除所有column设置
g) column columnname clear:清除某一字段的设置
h) 以上的column可用col代替.clear可以用cle代替
13)定义变量
用&:由用户输入变量值,此变量可以存在于where后,做为整个查询语句的变量。也可以在order by 后。做为字段的变量。也可以放在select 后,做为字段或表达式的变量。
用&&:如果多个地方引用此变量。。只用输入一次
SQL> SELECT empno, ename, job, &&column_name
FROM emp
ORDER BY &column_name;
accept:由用户输入变量值
accept 变量名 datatype prompt ‘告诉用户需要输入的信息:’ hide
引用的时候:&变名
define(undefined):一开始就定义变量值
四、函数:
1、字符函数
.lower:把字符转成小写
.upper:把字符转成大写
.initcap:把单词的第一个字母变成大写
.concat:连接字符 concat(‘good’,’morning’)=goodmoring
.SUBSTR (column\expression, m[,n]) 用于对字符串进行截取操作,从第m个位置开始,把其后的连续n个字符的部分截取下来,如果m位负值,则从末尾开始计算。
eg:substr(‘string’,1,3) =str
substr(‘string’-3,3)=ing
.INSTR('String', 'r')=3 返回子字符串所在的位置.
.LPAD(sal,10,'*') =*******sal 函数将左边的字符串填充一些特定的字符
.length: 用于返回表达式中的字符数,注意返回的是NUMBER。
.NVL(expression1, expression2)
NVL 函数用以把一个空值转换为一个实值,如:
NVL(100/quantity, 0) ,要是quantity为空值,该函数返回一个0。
如果两个字段类型不同必须进行转换。
.Min():返回最小值。。如果是字符。。A
2、数学函数
.round:四舍五入
round(2.566,2)=2.27
round(45,-1)=50
.trunc: 截断
trunc(2.566,2)=2.56
trunc(45,-1)=40
.mod:
mod(m,n):m-n*flood(m/n) file://flood是取整数
3、日期函数:
a) months_between(date1,date2):算date1和date2之间的月的数量,可以是小数可以是负数
months_between(’01-sep-95’,’11-jan-94’)=1.9774194
b) add_months(date,n):为date加上N个月,N只可以是整数
c) next_date(date,’char’):查找date的下一个星期N
next_date(’01-sep-95’,’FRIDAY’)=08-SEP-95
d) last_day(date):查找date月的最后一天。
e) rount(date):把日期四舍五入
rount(25-MAY-95’,’MONTH’)=01-JUN-95
rount(25-MAY-95’,’YEAR’)=01-JAN-95
f) trunc(date):把日期截断
trunc (25-MAY-95’,’MONTH’)=01-MAY-95
trunc (25-MAY-95’,’YEAR’)=01-JAN-95
g) 日期中RR与YY的区别,RR格式对日期作类似于舍入的操作,YY格式对日期作类似于截取的操作
RR YY
1995 27-oct-95 1995 1995
1995 27-oct-17 2017 1917
2001 27-oct-17 2017 2017
2001 27-oct-95 1995 2095
用法:select to_char(sysdate, 'YY') from dual;
select to_char(to_date('95-11-27', 'RR-MM-DD'), 'YYYY-MM-DD') from
dual;
select to_char(to_date('95-11-27', 'YY-MM-DD'), 'YYYY-MM-DD') from
dual;
4、转换函数
1)TO_CHAR:
TO_CHAR(date,’fmt’):fm前缀用来去除首尾的空字符或0
TO_CHAR(total,’fm$999999’)
如果想转成$0.25,那就要写成fm$9999990.99
Oracle 日期时间函数的用法
Oracle 日期时间函数的用法
在oracle中处理日期大全 TO_DATE格式 Day: dd number 12 dy abbreviated fri
day spelled out friday ddspth spelled out, ordinal twelfth Month: mm
number 03 mon abbreviated mar month spelled out march Year: yy two digits
98 yyyy four digits 1998
在oracle中处理日期大全
TO_DATE格式
Day:
dd number 12
dy abbreviated fri
day spelled out friday
ddspth spelled out, ordinal twelfth
Month:
mm number 03
mon abbreviated mar
month spelled out march
Year:
yy two digits 98
yyyy four digits 1998
24小时格式下时间范围为: 0:00:00 - 23:59:59....
12小时格式下时间范围为: 1:00:00 - 12:59:59 ....
1.
日期和字符转换函数用法(to_date,to_char)
2.
select to_char( to_date(222,'J'),'Jsp') from dual
显示Two Hundred Twenty-Two
3.
求某天是星期几
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;
星期一
select
to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE =
oraclecast函数用法
oraclecast函数用法
Oracle的CAST函数是用来将一个表达式转换为指定的数据类型。它可以在SELECT、INSERT、UPDATE和DELETE语句中使用。语法如下:
```
CAST (expression AS data_type)
```
expression是需要转换的表达式,data_type是转换的目标数据类型。
Oracle中支持的数据类型包括数字类型、字符类型、日期类型等。下面详细介绍一些常见的使用情况。
1.数字类型转换:
-将字符类型转换为数字类型:
```
SELECTCAST('123'ASNUMBER)FROMDUAL;
```
结果为:123
-将日期类型转换为数字类型:
```
SELECTCAST(SYSDATEASNUMBER)FROMDUAL;
``` 结果为:转换为对应的数值类型,时间戳在Oracle中是以1970年1月1日午夜(GMT)以来的秒数表示的。
2.字符类型转换:
-将数字类型转换为字符类型:
```
SELECTCAST(123ASVARCHAR2(10))FROMDUAL;
```
结果为:'123'
-将日期类型转换为字符类型:
```
SELECTCAST(SYSDATEASVARCHAR2(10))FROMDUAL;
```
结果为:转换为指定格式的字符串,根据当前NLS_DATE_FORMAT的设置来确定日期格式。
3.日期类型转换:
-将字符类型转换为日期类型:
```
SELECTCAST('2024-01-01'ASDATE)FROMDUAL;
``` 结果为:2024-01-01
-将数字类型转换为日期类型:
```
```
结果为:2024-01-01
4.其他类型转换:
-将字符串类型转换为CLOB类型:
```
SELECT CAST('Hello' AS CLOB) FROM DUAL;
```
-将BLOB类型转换为RAW类型:
oracle date函数使用方法
oracle date函数使用方法
Oracle数据库中的日期函数用于处理和操作日期和时间数据。以下是一些常用的Oracle日期函数及其使用方法:
1. `SYSDATE`:返回当前系统日期和时间。
```sql
SELECT SYSDATE FROM dual;
```
2. `TO_DATE`:将字符串转换为日期格式。
```sql
SELECT TO_DATE('', 'YYYY-MM-DD') FROM dual;
```
3. `ADD_MONTHS`:在给定日期上添加指定的月份数。
```sql SELECT ADD_MONTHS(TO_DATE('', 'YYYY-MM-DD'), 3) FROM dual;
```
4. `MONTHS_BETWEEN`:返回两个日期之间的月份数。
```sql
SELECT MONTHS_BETWEEN(TO_DATE('', 'YYYY-MM-DD'), TO_DATE('',
'YYYY-MM-DD')) FROM dual;
```
5. `NEXT_DAY`:返回给定日期后的下一个指定工作日。
```sql
SELECT NEXT_DAY(TO_DATE('', 'YYYY-MM-DD'), 'MONDAY') FROM
dual;
```
6. `LAST_DAY`:返回给定日期的月份的最后一天。
```sql
SELECT LAST_DAY(TO_DATE('', 'YYYY-MM-DD')) FROM dual; ```
7. `ROUND`:将日期舍入到指定的精度。
```sql
SELECT ROUND(TO_DATE(' 14:30:45', 'YYYY-MM-DD HH24:MI:SS'),
'MONTH') FROM dual;
```
8. `TRUNC`:将日期截断到指定的精度。
```sql
SELECT TRUNC(TO_DATE(' 14:30:45', 'YYYY-MM-DD HH24:MI:SS'),
Oracle中的TODATE和TOCHAR函数
Oracle 中的 TO_DATE 和 TO_CHAR 函数
30分钟:sysdate+1/48
1个小时:sysdate+1/24 一天:sysdate+1
一个星期: sysdate+7
每个星期五中午:
NEXT_DAY(TRUNC(SYSDATE),'星期五') + 12/24
一个月:add_months(sysdate,1) --可以为正负数 一年:add_months(sysdate,12)
月份加减:select to_char(add_months(sysdate-1),'yyyymm') from dual;
日期加减:select to_char(sysdate-1,'yyyymmdd') from dual;
select sysdate from dual;得到是当前时间。如果不加任何转化的话,默认的天。 select syddate+1 from dual;--后一天
select sydate-1 from dual;--前一天
select sysdate+30/60/24 from dual;--后30分钟
select sysdate-30/60/24 from dual;--前30分钟
oracle to_char 时间格式
日期格式参数 含义说明
D 一周中的星期几
DAY 天的名字,使用空格填充到9个字符
DD 月中的第几天
DDD 年中的第几天
DY 天的简写名
IW ISO标准的年中的第几周
IYYY ISO标准的四位年份
YYYY 四位年份
YYY,YY,Y 年份的最后三位,两位,一位
HH 小时,按12小时计
HH24 小时,按24小时计
MI 分
SS 秒
MM 月
Mon 月份的简写
Month 月份的全名
W 该月的第几个星期 WW 年中的第几个星期
Oracle中TO_DATE函数
Oracle中TO_DATE函数
Oracle中TO_DATE格式
TO_DATE格式(以时间:2007-11-02 13:45:25为例)
Year:
yy two digits 两位年 显示值:07
yyy three digits 三位年 显示值:007
yyyy four digits 四位年 显示值:2007
Month:
mm number 两位月 显示值:11
mon abbreviated 字符集表示 显示值:11月,若是英文版,显示nov
month spelled out 字符集表示 显示值:11月,若是英文版,显示november
Day:
dd number 当月第几天 显示值:02
ddd number 当年第几天 显示值:02
dy abbreviated 当周第几天简写 显示值:星期五,若是英文版,显示fri
day spelled out 当周第几天全写 显示值:星期五,若是英文版,显示friday
ddspth spelled out, ordinal twelfth
Hour:
hh two digits 12小时进制
oracle的cast语法
oracle的cast语法
Oracle的CAST语法是一种数据转换函数,用于将一个数据类型转换为另一个数据类型。在Oracle数据库中,CAST函数可以帮助我们将一个数据类型转换为另一个数据类型,比如将一个字符串转换为数字,或将一个日期转换为字符串。CAST函数的语法如下:
```sql
CAST (expression AS data_type)
```
在这里,expression是需要转换的数据,data_type是需要转换成的数据类型。下面是一些常见的CAST函数的用法:
1. 将字符串转换为数字:
```sql
SELECT CAST('123' AS NUMBER) FROM dual;
```
这个例子中,将字符串'123'转换为数字类型,并输出结果为123。
2. 将数字转换为字符串:
```sql
SELECT CAST(123 AS VARCHAR2(10)) FROM dual;
```
这个例子中,将数字123转换为字符串类型,并输出结果为'123'。
3. 将日期转换为字符串: ```sql
SELECT CAST(sysdate AS VARCHAR2(20)) FROM dual;
```
这个例子中,将当前日期转换为字符串类型,并输出结果为日期的字符串表示。
4. 将字符串转换为日期:
```sql
SELECT CAST('2022-01-01' AS DATE) FROM dual;
```
这个例子中,将字符串'2022-01-01'转换为日期类型,并输出结果为2022-01-01这个日期。
需要注意的是,使用CAST函数进行数据类型转换时,需要确保转换是合法的,否则可能会出现转换错误。另外,CAST函数只能转换数据类型,而无法转换数据格式。因此,在进行数据转换时,需要注意数据的合法性和准确性。
总的来说,Oracle的CAST语法提供了一种简单有效的数据类型转换方法,可以帮助我们在数据处理过程中进行类型转换,提高数据处理的灵活性和效率。通过合理使用CAST函数,可以更好地满足数据处理的需求,实现数据类型的转换和处理。
oracle字符集转换的函数
oracle字符集转换的函数
一些常见的Oracle字符集转换函数如下:
1. CONVERT:用于转换字符串的字符集。
用法:CONVERT(string, destination_character_set,
source_character_set)
示例:SELECT CONVERT('你好', 'UTF8', 'AL32UTF8')
FROM dual;
2. NLS_CHARSET_ID:返回给定字符集名称的标识。
用法:NLS_CHARSET_ID(character_set_name)
示例:SELECT NLS_CHARSET_ID('UTF8') FROM dual;
3. NLS_CHARSET_NAME:返回给定字符集标识的名称。
用法:NLS_CHARSET_NAME(character_set_id)
示例:SELECT NLS_CHARSET_NAME(871) FROM dual;
4. NLS_CHARACTERSET:返回当前数据库的默认字符集名称。
用法:SELECT NLS_CHARACTERSET FROM dual;
5. NLSSORT:用于在指定字符集下对字符串进行排序。
用法:NLSSORT(string, 'NLS_SORT=sort_sequence')
示例:SELECT NLSSORT('你好',
'NLS_SORT=CHINESE_STROKE_M') FROM dual;
需要注意的是,在进行字符集转换时,可能会出现数据丢失或乱码的情况。
Oracleto_date函数的用法介绍
Oracleto_date函数的用法介绍
to_date(string, format)
其中,string是要转换为日期的字符串,而format是可选的日期格式,用于指定字符串的解析方式。如果不提供格式参数,则to_date(将使用默认的日期格式。
下面让我们来详细介绍to_date(函数的用法和注意事项。
1.简单日期转换:
to_date(函数可以将包含日期信息的字符串转换为日期类型。例如,我们有一个字符串'2024-07-15',并希望将其转换为日期类型。可以使用以下语句实现转换:
```
SELECT to_date('2024-07-15', 'YYYY-MM-DD') FROM dual;
```
这将返回一个日期类型的值,该值为2024年7月15日。
2.解析日期和时间:
to_date(函数还可以用于解析包含日期和时间信息的字符串。例如,我们有一个字符串'2024-07-15 10:30:00',并希望将其转换为日期类型。可以使用以下语句实现转换:
``` SELECT to_date('2024-07-15 10:30:00', 'YYYY-MM-DD
HH24:MI:SS') FROM dual;
```
这将返回一个日期类型的值,该值为2024年7月15日10:30:00。
3.默认日期格式:
如果在to_date(函数中未指定格式参数,则会使用默认的日期格式。默认格式由Oracle数据库的NLS_DATE_FORMAT参数控制。可以使用以下语句查看默认日期格式:
```
SELECT value FROM v$parameter WHERE name = 'nls_date_format';
```
例如,默认格式可能是'MM/DD/YYYY'。在这种情况下,执行以下语句:
```
SELECT to_date('07/15/2024') FROM dual;
```
oracle常用sql函数
oracle常用sql函数
Oracle是一款非常优秀的数据库管理系统,它提供了很多强大的功能与工具,其中最基本而实用的功能就是SQL函数了。下面我们将重点介绍一些常用的Oracle SQL函数,帮助读者更好地了解和掌握这些常用的函数,从而更加有效地处理和管理数据。
一、数值型函数
1. ABS()函数:用于计算数值的绝对值,比如ABS(-10)会返回10。
2. CEIL()函数:用于向上取整,比如CEIL(3.14)会返回4。
3. FLOOR()函数:用于向下取整,比如FLOOR(3.14)会返回3。
4. MOD()函数:用于求模,比如MOD(12,5)会返回2。
5. ROUND()函数:用于四舍五入,比如ROUND(3.49)会返回3,而ROUND(3.51)会返回4。
二、字符型函数
1. CONCAT()函数:用于连接两个字符串,比如CONCAT('hello','world')会返回helloworld。
2. SUBSTR()函数:用于截取字符串,比如SUBSTR('hello',2,3)会返回ell。
3. UPPER()函数:用于将字符串转换成大写,比如UPPER('hello')会返回HELLO。
4. LOWER()函数:用于将字符串转换成小写,比如LOWER('HELLO')会返回hello。
5. TRIM()函数:用于去掉字符串首尾的空格,比如TRIM('
hello ')会返回hello。
三、日期型函数
1. CURRENT_DATE函数:用于获取当前日期,比如SELECT
CURRENT_DATE FROM DUAL会返回当前日期。
2. SYSDATE函数:用于获取系统当前时间,比如SELECT SYSDATE FROM DUAL会返回系统当前时间。
3. TO_CHAR()函数:用于将日期转换成字符型,比如TO_CHAR(SYSDATE,'yyyy-mm-dd')会返回当前日期的年月日格式。
Oracle的todate函数
0 Oracle的to_date函数 日期格式参数 含义说明 D 一周中的星期几 DAY 天的名字,使用空格填充到9个字符 DD 月中的第几天 DDD 年中的第几天 DY 天的简写名 IW ISO标准的年中的第几周 IYYY ISO标准的四位年份 YYYY 四位年份 YYY,YY,Y 年份的最后三位,两位,一位 HH 小时,按12小时计 HH24 小时,按24小时计 MI 分 SS 秒 MM 月 Mon 月份的简写 注:在不同的语言下显示出来的数据不同,在中文下显示为5月,在英文下显示为MAY Month 月份的全名 W 该月的第几个星期 WW 年中的第几个星期 1.日期时间间隔操作 当前时间减去7分钟的时间 select sysdate,sysdate - interval’7’MINUTE from dual 当前时间减去7小时的时间 select sysdate - interval’7’hourfromdual 当前时间减去7天的时间 select sysdate - interval’7’dayfromdual 当前时间减去7月的时间 select sysdate,sysdate - interval’7’month from dual 当前时间减去7年的时间 select sysdate,sysdate - interval’7’yearfromdual 时间间隔乘以一个数字 select sysdate,sysdate - 8 *interval’2’hourfromdual 2.日期到字符操作 select sysdate,to_char(sysdate,’yyyy-mm-ddhh24:mi:ss’)fromdual select sysdate,to_char(sysdate,’yyyy-mm-ddhh:mi:ss’)fromdual select sysdate,to_char(sysdate,’yyyy-dddhh:mi:ss’)fromdual select sysdate,to_char(sysdate,’yyyy-mm iw-dhh:mi:ss’)fromdual 参考oracle的相关关文档(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)
