orcal学习笔记(一)

CREATE TABLE STU(
  STUID NUMBER(10) PRIMARY KEY, //申明为主键
  STUNAME VARCHAR2(20) NOT NULL , //不为null
  STUSEX VARCHAR2(2) DEFAULT ''   CHECK(STUSEX IN('男','女')) 
);
CREATE TABLE STU_COURSE(
  ID NUMBER(10) PRIMARY KEY,
  STUID NUMBER(10) REFERENCES STU(STUID), //外键
  COURSEID NUMBER(10),
  CONSTRAINT FF_COURSEid FOREIGN KEY(COURSEID) REFERENCES COURSE(COURSEID)
  ON DELETE CASCADE //级联删除
)
 
 
create table test(
        students_id number(10) primary key ,
        stu_n  varchar2(20) not NULL ,
    sut_ex varchar(2) default ''
)  ;
 

inset into STU(id,name) values(1,'张三');

insert all
into stu(sid,sname) values(ssid,ssname)
into tea(tid,tname) values(ttid,ttname)
select INITCAP(名字) AS 名字, LENGTH(名字) AS 名字
FROM 表
WHERE  SUBSTR(名字,开始,截取多少位数) IN('J','H','P');
SELECT 名字 ,奖金
FROM 表
WHERE COMM IS NULL;
格式一:instr( string1, string2 )    /   instr(源字符串, 目标字符串)
格式二:instr( string1, string2 [, start_position [, nth_appearance ] ] )   /   instr(源字符串, 目标字符串, 起始位置, 匹配序号)
解析:string2 的值要在string1中查找,是从start_position给出的数值(即:位置)开始在string1检索,检索第nth_appearance(几)次出现string2。
  注:在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,也就是说从字符的开始到字符的结尾就结束。
1、substr函数格式   (俗称:字符截取函数)
  格式1: substr(string string, int a, int b);
  格式2:substr(string string, int a) ;
解释:
    格式1:
        1、string 需要截取的字符串 
        2、a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)
        3、b 要截取的字符串的长度

    格式2:
        1、string 需要截取的字符串
        2、a 可以理解为从第a个字符开始截取后面所有的字符串。

ROUND(数,小数位)表示四舍五入到帝即位小数

TRUNC(同上),截取小数位

M

如果员工试用期6个月,查询职位不是MANAGER的员工姓名,入职日期,转正日期,入职日期后的第一个星期一,入职当月的最后一天日期。(提示:使用add_months,next_day,last_day)
 

SELECT ADD_MONTHS(实习日期,6),NEXT_DAY(ADD_MONTHS(入职日期,6),‘星期一’)AS 入职后第一个星期一,LAST_DAY(ADD_MONTHS(入职日期,6))AS 入职当月最有一天
from emp
where job not in ('manager')
查询部门10,20的员工截止到2000年1月1日,工作了多少个月,入职的月份。(提示:使用months_between,extract)
SELECT ROUND(MONTHS_BETWEEN('1-1月-2000',入职日期)) AS  MONTHS ,EXTRACT(MONTH FROM 日期) AS 入职日期

OD(A,B)取m/n后的余数

猜你喜欢

转载自www.cnblogs.com/elric-cs/p/11906738.html