当前位置:数据库 > Oracle >>

Oracle_DAY 03操作语句

Oracle_DAY 03操作语句
 
1.用子查询,查询谁是普通员工
    select first_name,id from s_emp where id in (领导的id);
    select first_name,id from s_emp where id in (select distinct manager_id from s_emp);
    select first_name,id from s_emp where id in (1,2,3,黑盒子);
    select first_name,id from s_emp where id not in (select distinct manager_id from s_emp);
    注意:not  in  使用时要注意NULL值
 
    select first_name,id from s_emp where id     not in (select distinct manager_id from s_emp where manager_id is not null);
 
    select first_name,id  from s_emp where id     not in (select distinct nvl(manager_id,-1) from s_emp );
 
    select first_name,id  from s_emp where id     not in (select distinct nvl(manager_id,1) from s_emp );
 
    select first_name,id  from s_emp where id not in (select distinct nvl(manager_id,25) from s_emp );
    //logic  error
 
    找出和id 是1的职位相同的员工
    select title  from  s_emp where id=1;
    select  first_name,title from s_emp where title=(select title from s_emp where id=1) and id!=1;
 
 
------------------------------------------
SQL数据类型:
    number       数字类型
    varchar2(n)  变长字符串
    char(n)      定长字符串  4k
    date         日期类型
    CLOB         大字符类型  4g
    BLOB         大二进制类型 4g 
 
日期类型:
    表达系统当前时间   sysdate
    和语言相关的-------NLS_LANG
 
英文默认格式
    DD-MON-YY
    07-NOV-12
    07-11月-12
 
处理日期的函数
    语言环境
    时间的表达问题
    to_date(要转换的日期字符串,格式字符串)
    建表   字段  都要遵循标识符的定义
    create table 表名(
        字段名    类型,
        字段名    类型,
        字段名    类型
    );
    create table  testtype(
        id     number,
        fname  varchar2(10),
        sname  char(10),
        birday date
    );
 
插入语句
    insert into testtype values(1,'xsy','xsy',sysdate);
    insert into testtype values(9527,'zxc','zxc','01-NOV-08');
    insert into testtype values(9527,'zxc','zxc','01-11月-08');
   
    to_date
    insert into testtype values(1,'abc','abc',to_date('2008-08-08 08:08:08','yyyy-mm-dd hh:mi:ss'));
 
    yyyy   四位年
    mm     二位月
    dd     日
    hh     12小时的   hh24
    mi     分钟
    ss     秒
    day    表达星期几
    mon    月的英文缩写
    month   
 
    to_char(日期,'日期格式')
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss day mon') from dual;
 
    to_date  就是按照格式放入日期
    to_char  按照格式来显示日期
日期的加减法:
    select to_char(sysdate-1,'yyyy-mm-dd hh24:mi:ss day mon') from dual;
 
向前走一个小时
select to_char(sysdate+1/24,'yyyy-mm-dd hh24:mi:ss day mon') from dual;
 
往前加一个月   往后推一个月
select to_char(add_months(sysdate,1),'yyyy-mm-dd hh24:mi:ss day mon') from dual;
select to_char(add_months(sysdate,2),'yyyy-mm-dd hh24:mi:ss day mon') from dual;
 
next_day  下一个星期几是几号
select next_day(sysdate,'星期五') from dual;
select next_day(next_day(sysdate,'星期五'),'星期五') from dual;
 
last_day  本月的最后一天
select to_char(last_day(sysdate),'yyyy-mm-dd hh24:mi:ss day mon') from dual;
 
补充:
round(日期)
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss day mon'),to_char(round(sysdate+1/24),'yyyy-mm-dd hh24:mi:ss day mon') from dual;
 
默认对天进行四舍五入 
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss day mon'),to_char(round(sysdate,'mm'),'yyyy-mm-dd hh24:mi:ss day mon') from dual;
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss day mon'),to_char(round(sysdate,'y'),'yyyy-mm-dd hh24:mi:ss day mon') from dual;
 
trunc(日期)
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss day mon'),to_char(trunc(sysdate,'mm'),'yyyy-mm-dd hh24:mi:ss day mon') from dual;
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss day mon'),to_char(trunc(sysdate,'y'),'yyyy-mm-dd hh24:mi:ss day mon') from dual;
 
在一个月的任何时间执行一条语句,得到的都是下一个月的开始的时间
to_char()
trunc(add_months(sysdate,1),'mm')
trunc(last_day(sysdate)+1)
 
----------------------------------------------
SQL约束的种类
    主键    ------primary key
    唯一    ------unique
    非空    ------not null
    检查    ------check
    外键    ------foreign key  references
 
表上建立约束:对数据的最后一道屏障  
    主键    ------唯一  且 非空,一个表最多只能有一个主键
    唯一    -----------不能有重复的
    非空    -----------不能有NULL值
    检查    ------字段要符合检查条件
    外键    ------------涉及到两张表
 
     s_dept  -----id  (主表)
     s_emp   -----dept_id(子表)
    定义了外键的表就是子表
     s_dept  -----region_id
     s_region ----id(主键)
 
    外键:引用主表的字段,必须有唯一性限制。外键的取值只能是主表字段的值,要么是NULL,这样能保证子表数据的完整性,一旦违反外键约束,就会报数据完整性约束。
约束的语法:
列级约束:在
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,