数值类型
NUMBER(precision,scale)
precision
:指定数字的总位数。
scale
:指定小数点后的数字位数。
--number(5) 最大99999 --number(5,2) 最大999.99 --number(18) 固定长度
字符类型
CHAR(size) --定长字符数据 size --指定字符串的最大长度 size --必须是正整数且不超过32767 VARCHAR2(size) --可变长字符数据 size --指定字符串的最大长度 size --必须是正整数且不超过32767 LONG --可变长字符数据,最大可达到 2G CLOB --字符数据,最大可达到 4G BLOB --二进制数据,最大可达到 4G BFILE --存储外部文件的二进制数据,最大可达到 4G
日期时间类型
--date和timestamp都是既有日期又有时间的日期类型 --DATETIME 需要使用外部传入的日期,如果没传这个值就是 NULL --TIMESTAMP 会使用系统当前的时间作为这个值的默认值
其他类型
--LONG RAW 长二进制数据 --ROWID 行地址,十六进制串,表示行在所在的表中唯一的行地址
创建序列
--创建序列 默认是1
create sequence teacher_seq;
--提取下一个值
select teacher_seq.nextval from DUAL;
--提取当前值
select teacher_seq.currval from DUAL;
--创建序列 从100开始
create sequence teacher_seq2 start with 100;
--创建序列 从5开始超出100无法创建
create sequence teacher_seq3 minvalue 5 maxvalue 100;
--创建序列 从1开始,每次加3
create sequence teacher_seq4 increment by 3;
字符函数
select lpad(id,6,'0')from TEACHER; --左补齐 长度不足6 就用0来补从左边补 ,超过的截取
select rpad(name,6,'-') from TEACHER; --右补齐
select upper(name)from teacher; --转大写
select lower(upper(name))from teacher; --转小写
select initcap(name) from teacher; --首字母大写
select id,name,length(name) from teacher; --获取字符长度
select id,name,pwd,substr(name,1,3)from teacher; --字符串截取 ,从字符的第一位开始截取,截取三个字符
select id,name,pwd,substr(name,-3,3)from teacher; -- -3表示字符串的倒数第三位开始,截取3个字符
select name, instr(name,'a')from teacher; --返回 name 第一次出现’a‘的位置,没找到返回0
select name,reverse(name) from teacher; --字符反转
select name ,concat('hello:',name)from teacher; --字符串拼接
select trim(' hello java '), --去除左右两端的空格
length(' hello java '),
length(trim(' hello java ')),
rtrim(' hello java '), --去除右边空格
ltrim(' hello java ') --去除左边空格
from DUAL;
select name, replace(name,'a','x') from teacher; --替换name里所有’a‘ 换成’x‘
select name,regexp_replace(name,'a.g','x')from teacher; --正则 字段name里边a开头g结尾的字符替换成x
数值函数
select round(12.1284234,2)from DUAL; --四舍五入,2是保留两位小数
select ceil(12.3)from dual; --向上取整
select floor(123.45)from dual; --向下取整
select mod(32,7)from dual; --取模
select abs(-128)from DUAL; --绝对值
select sign(-12) from DUAL; --判断正负,如果数字大于零,则函数返回 1,否则返回 -1。如果指定的数字为零,则函数在结果中返回零
select sqrt(4) from DUAL; --开根号
select power(2,3) from DUAL; --2的3次方
select trunc(123.456,3)from DUAL; -- 保留3位小数 ,不写后面的参数就取整
select to_char(12345678.45,'$00,000,000.00')from DUAL; --将数字转换成字符串 按照'$00,000,000.00'格式转换
日期函数
select last_day(add_months(d1,1))from t_date where id=1; --当前月的最后一天
select trunc(sysdate), sysdate from DUAL; --按日截取
select trunc(sysdate,'yyyy'),sysdate from dual; --当前年份第一天
select trunc(sysdate,'mm'),sysdate from dual; --当前月的第一天
select trunc(sysdate,'hh'),sysdate from DUAL; --按小时截取
select trunc(sysdate,'mi'),sysdate from DUAL; --按分钟截取
select to_timestamp('2022-12-14', 'yyyy-MM-dd hh24:mi:ss:ff') from DUAL; --字符串转日期