四.0 racle查询和函数 1.基本SQL语句 基本SQL语句是指对单表的增、删、改、查等操作。 (1①)查询员工的姓名和薪金 select ename,sal from emp: (2)查询津贴为空的所有员工 select from emp where comm is null: (3)查询姓名以字母‘S'开头的员工 select*from emp where ename like‘s%':(多字符匹配) select*from emp where ename like‘g_';(单字符匹配) 注意:like比较符,如果用的是like"Java企业级开发%",这种方式 会用索引扫描,但如果是1ike"%Java企业级开发%',这种方式会用 表扫描,该字段上的索引不起作用,速度会非常慢。 (④)查询所有的经理((MANAGER)和办事员(CLERK)的员工 select from emp where job in MANAGER','CLERK'): (⑤)按参加工作时问从早到晚显示员工 select from emp order by hiredate asc; (6)增加一个部门 insert into dept values(50,'培训部',’天津'): (7)给员工涨5%的工资 update emp set sal sal*1.05; (⑧)删涮除新增的部门“培训部” delete from dept where dname='培训部'; 所有的关系型数据库都必须遵守ANSI92的SQL语句标准,ANSI92中定 义的一套SQL语句就称为标准SQL,每种关系型数据库都会对标准SQL语句进行 扩展,加入自己专有的SQL语句和自己的-套函数,下面就来看看0 racle中的 函数。 2.0 racle函数 (1)字符函数
四. Oracle 查询和函数 1. 基本 SQL 语句 基本 SQL 语句是指对单表的增、删、改、查等操作。 (1) 查询员工的姓名和薪金 select ename,sal from emp; (2) 查询津贴为空的所有员工 select * from emp where comm is null; (3) 查询姓名以字母‘S’开头的员工 select * from emp where ename like ‘s%’;(多字符匹配) select * from emp where ename like ‘s_’;(单字符匹配) 注意:like 比较符,如果用的是 like "Java 企业级开发%",这种方式 会用索引扫描,但如果是 like "% Java 企业级开发%",这种方式会用 表扫描,该字段上的索引不起作用,速度会非常慢。 (4) 查询所有的经理(MANAGER)和办事员(CLERK)的员工 select * from emp where job in (‘MANAGER’,’CLERK’); (5) 按参加工作时间从早到晚显示员工 select * from emp order by hiredate asc; (6) 增加一个部门 insert into dept values(50,’培训部’,’天津’); (7) 给员工涨 5%的工资 update emp set sal = sal*1.05; (8) 删除新增的部门“培训部” delete from dept where dname=’培训部’; 所有的关系型数据库都必须遵守 ANSI92 的 SQL 语句标准,ANSI92 中定 义的一套 SQL 语句就称为标准 SQL,每种关系型数据库都会对标准 SQL 语句进行 扩展,加入自己专有的 SQL 语句和自己的一套函数,下面就来看看 Oracle 中的 函数。 2. Oracle 函数 (1) 字符函数
concat(char1,char2) 返回将char2拼接在char1之后的字符串,也可以表示为 char2 char1。 initcap(string) 将string的字符全部转化为首字母大写的英文规范格式。 upper(string) 返回全部大写的string。 lower(string) 将string转化为小写字符串。 lpad(char1,n[,char2]) 使用char2的字符补充在charl字符的左边,最终补足n个字符,如 果没有提供char2字符,则用空格补足n个字符。 rpad(char1,n[,char2]) 返回“char1”,右侧用“char2”中的字符补充到n个字符长。如果 “char1'”比n长,则函数返回“charl”的前n个字符。 ltrim(string,trim_set) 从左边删除字符,此处“string”是数据库的列,或者是字面字符串, 而“trim_set”是要去掉的字符的集合。 rtrim(string,trim_set) 类似于1trim函数,从右侧删除字符,此处“string'”是数据库的列, 或者是字面字符串,而“trim_set”是要去掉的字符的集合。 replace(string,if,then) 用0或其他字符代替字符串中的字符。“i”是字符或字符串,对于 每个出现在“string”中的“if”,都用“then”的内容代替。 substr(string.start[,count]) 返回“string'”中载取的一部分。该命令截取“string”的一个子集, 从“start”位置开始,持续“count”个字符。如果我们不指定“count'”, 则从“start”开始载取到“string”的尾部。 chr(n)
concat(char1,char2) 返 回 将 char2 拼 接 在 char1 之 后 的 字 符 串 , 也 可 以 表 示 为 char2||char1。 initcap(string) 将 string 的字符全部转化为首字母大写的英文规范格式。 upper(string) 返回全部大写的 string。 lower(string) 将 string 转化为小写字符串。 lpad(char1,n[,char2]) 使用 char2 的字符补充在 char1 字符的左边,最终补足 n 个字符,如 果没有提供 char2 字符,则用空格补足 n 个字符。 rpad(char1,n[,char2]) 返回“char1”,右侧用“char2”中的字符补充到 n 个字符长。如果 “char1”比 n 长,则函数返回“char1”的前 n 个字符。 ltrim(string,trim_set) 从左边删除字符,此处“string”是数据库的列,或者是字面字符串, 而“trim_set”是要去掉的字符的集合。 rtrim(string,trim_set) 类似于 ltrim 函数,从右侧删除字符,此处“string”是数据库的列, 或者是字面字符串,而“trim_set”是要去掉的字符的集合。 replace(string,if,then) 用 0 或其他字符代替字符串中的字符。“if”是字符或字符串,对于 每个出现在“string”中的“if”,都用“then”的内容代替。 substr(string,start[,count]) 返回“string”中截取的一部分。该命令截取“string”的一个子集, 从“start”位置开始,持续“count”个字符。如果我们不指定“count”, 则从“start”开始截取到“string”的尾部。 chr(n)
返回ASCII值n所对应的字符。 instr(string,set[,start[,occurrence]]) 从string中针对set进行查询,从start位置开始查询,找出set 在se的位置。 length(string) 获得“string”字符串的长度。 例:把员工姓名和工作类型连接在一起,中间用“-”分隔显示。 select enamell'-'job from emp: 例:让员工姓名右对齐显示 select ename,lpad(ename,6,'’)from emp 例:截取员工姓名的前3个字符和第4个字符以后的内容。 select ename,substr(ename,1,3),substr(ename,4)from emp; 例:字母”T”在员工姓名中第一次和第二次出现的位置 select ename,instr(ename,'T',1,1),instr(ename,'T',1.2)from emp: (②)日期和时问函数 sysdate 返回当前的日期和时问 add_months(d,no_of_month) 为日期“d”加上“no_of_month'”的月份,返回加上月数之后的日期, 参数“no_of_month”可以为任何整数。 last_day(month_day) 返回指定日期的本月最后一天的日期。 months_between(dl,d2) 返回日期d1和d2之间的月份数。如果d1晚于d2,结果为正,否则 返回负数。 next_day(d,day_of_week) 指定时间的下一个星期几(由char指定)所在的日期。 day_of_week为l-7或Monday/lon-Sunday
返回 ASCII 值 n 所对应的字符。 instr(string,set[,start[,occurrence]]) 从 string 中针对 set 进行查询,从 start 位置开始查询,找出 set 在 se 的位置。 length(string) 获得“string”字符串的长度。 例:把员工姓名和工作类型连接在一起,中间用“-”分隔显示。 select ename||’-’||job from emp; 例:让员工姓名右对齐显示 select ename,lpad(ename,6,’ ’) from emp; 例:截取员工姓名的前 3 个字符和第 4 个字符以后的内容。 select ename,substr(ename,1,3),substr(ename,4) from emp; 例:字母”T”在员工姓名中第一次和第二次出现的位置 select ename,instr(ename,’T’,1,1),instr(ename,’T’,1,2)from emp; (2) 日期和时间函数 sysdate 返回当前的日期和时间 add_months(d,no_of_month) 为日期“d”加上“no_of_month”的月份,返回加上月数之后的日期, 参数“no_of_month”可以为任何整数。 last_day(month_day) 返回指定日期的本月最后一天的日期。 months_between(d1,d2) 返回日期 d1 和 d2 之间的月份数。如果 d1 晚于 d2,结果为正,否则 返回负数。 next_day(d,day_of_week) 指定时间的下一个星期几(由 char 指定)所在的日期。 day_of_week 为 1-7 或 Monday/Mon-Sunday