Oracle读书笔记(一)


前言

   sqlplus sys/所设定的密码 as sysdba(用管理员登陆)
   alter user scott account unlock;(解锁scott账户)

1. table structure

   描述某一张表:desc 表名
   select * from 表名

2. select 语句

     计算数据可以用空表:比如:select 2*3 from dual  
     select ename,sal*12 annual_sal from emp;与select ename,sal*12 "annual sal" from emp;区别,加双引号保持原大小写。不加全变大写。
     select ename || "abcd" 如果连接字符串中含有单引号,用两个单引号代替一个单引号。(||代表连接符)

3. distinct

      select deptno from emp;
      select distinct deptno from emp;
  
      select distinct deptno from emp;
      select distinct deptno ,job from emp
      去掉deptno,job两者组合的重复。更多的项,就是这么多项的组合的不重复组合。

4. where

      select * from emp where deptno =10;
      select * from emp where deptno <>10;不等于10        
      select * from emp where ename ='bike';
      select ename,sal from emp where sal between 800 and 1500 (>=800 and <=1500)空值处理:
      select ename,sal,comm from emp where comm is (not) null;
      select ename,sal,comm from emp where ename ( not)in ('smith','king','abc');
      select ename from emp where ename like '_A%';_代表一个字母,%代表0个或多个字母. 如果查询%
      可用转义字符.\%. 还可以用escape '$'比如:select ename from emp where ename like '%$a%' escape '$';

5. orderby

       select * from dept; 
       select * from dept order by dept desc;(默认:asc)
       select ename,sal,deptno from emp order by deptno asc,ename desc;

6. sql function1

      select ename,sal*12 annual_sal from emp
      where ename not like '_A%' and sal>800
      order by sal desc;
  
      select lower(ename) from emp;
  
      select ename from emp 
      where lower(ename) like '_a%';等同于
      select ename from emp where ename like '_a%' or ename like '_A%';
  
      select substr(ename,2,3) from emp;从第二字符截,一共截三个字符.
      select chr(65) from dual 结果为:A
      select ascii('a') from dual 结果为:65
      select round(23.652,1) from dual; 结果为: 23.7
      select round(23.652,-1) from dual; 20
    
      select to_char(sal,'$99_999_999') from emp;
      select to_char(sal,'L99_999_999') from emp;人民币符号,L:代表本地符号
  
      这个需要掌握牢:
      select birthdate from emp;
      显示为:
      BIRTHDATE
      ----------------
      17-12月-80
      ----------------
  
      改为:
      select to_char(birthdate,'YYYY-MM-DD HH:MI:SS') from emp;
      
      显示:
       
      BIRTHDATE
      -------------------
      1980-12-17 12:00:00
      -------------------
      
      select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual; //也可以改为:HH12
      TO_CHAR(SYSDATE,'YY
      -------------------
      2017-07-15 14:46:14  
      to_date函数:
      select ename,birthdate from emp where birthdate > to_date('1981-2-20 12:34:56','YYYY-MM-DD HH24:MI:SS');
      如果直接写 birthdate>'1981-2-20 12:34:56'会出现格式不匹配,因为表中的格式为: DD-MM月-YY. 
      select sal from emp where sal>888.88 无错.但
      select sal from emp where sal>$1,250,00;
      会出现无效字符错误. 
      改为:
      select sal from emp where sal>to_number('$1,250.00','$9,999.99');s
      
      把空值改为0
      select ename,sal*12+nvl(comm,0) from emp;
      这样可以防止comm为空时,sal*12相加也为空的情况.

7. Group function 组函数

      max,min,avg ,count,sum函数 
      select to_char(avg(sal),'99999999,99') from emp;       
      select round(avg(sal),2) from emp;
      结果:2073.21
        
      select count(*) from emp where deptno=10;
      select count(ename) from emp where deptno=10; count某个字段,如果这个字段不为空就算一个.
      select count(distinct deptno) from emp;
      select sum(sal) from emp;

前言

   sqlplus sys/所设定的密码 as sysdba(用管理员登陆)
   alter user scott account unlock;(解锁scott账户)

1. table structure

   描述某一张表:desc 表名
   select * from 表名

2. select 语句

     计算数据可以用空表:比如:select 2*3 from dual  
     select ename,sal*12 annual_sal from emp;与select ename,sal*12 "annual sal" from emp;区别,加双引号保持原大小写。不加全变大写。 
     select ename || "abcd" 如果连接字符串中含有单引号,用两个单引号代替一个单引号。(||代表连接符)

3. distinct

      select deptno from emp;
      select distinct deptno from emp;
  
      select distinct deptno from emp;
      select distinct deptno ,job from emp
      去掉deptno,job两者组合的重复。更多的项,就是这么多项的组合的不重复组合。

4. where

      select * from emp where deptno =10;
      select * from emp where deptno <>10;不等于10        
      select * from emp where ename ='bike';
      select ename,sal from emp where sal between 800 and 1500 (>=800 and <=1500)空值处理:
      select ename,sal,comm from emp where comm is (not) null;
      select ename,sal,comm from emp where ename ( not)in ('smith','king','abc');
      select ename from emp where ename like '_A%';_代表一个字母,%代表0个或多个字母. 如果查询%
      可用转义字符.\%. 还可以用escape '$'比如:select ename from emp where ename like '%$a%' escape '$';

5. orderby

       select * from dept; 
       select * from dept order by dept desc;(默认:asc)
       select ename,sal,deptno from emp order by deptno asc,ename desc;

6. sql function1

      select ename,sal*12 annual_sal from emp
      where ename not like '_A%' and sal>800
      order by sal desc;
  
      select lower(ename) from emp;
  
      select ename from emp 
      where lower(ename) like '_a%';等同于
      select ename from emp where ename like '_a%' or ename like '_A%';
  
      select substr(ename,2,3) from emp;从第二字符截,一共截三个字符.
      select chr(65) from dual 结果为:A
      select ascii('a') from dual 结果为:65
      select round(23.652,1) from dual; 结果为: 23.7
      select round(23.652,-1) from dual; 20
    
      select to_char(sal,'$99_999_999') from emp;
      select to_char(sal,'L99_999_999') from emp;人民币符号,L:代表本地符号
  
      这个需要掌握牢:
      select birthdate from emp;
      显示为:
      BIRTHDATE
      ----------------
      17-12月-80
      ----------------
  
      改为:
      select to_char(birthdate,'YYYY-MM-DD HH:MI:SS') from emp;
      
      显示:
       
      BIRTHDATE
      -------------------
      1980-12-17 12:00:00
      -------------------
      
      select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual; //也可以改为:HH12
      TO_CHAR(SYSDATE,'YY
      -------------------
      2017-07-15 14:46:14  
      to_date函数:
      select ename,birthdate from emp where birthdate > to_date('1981-2-20 12:34:56','YYYY-MM-DD HH24:MI:SS');
      如果直接写 birthdate>'1981-2-20 12:34:56'会出现格式不匹配,因为表中的格式为: DD-MM月-YY.  
      select sal from emp where sal>888.88 无错.但
      select sal from emp where sal>$1,250,00;
      会出现无效字符错误. 
      改为:
      select sal from emp where sal>to_number('$1,250.00','$9,999.99');s
      
      把空值改为0
      select ename,sal*12+nvl(comm,0) from emp;
      这样可以防止comm为空时,sal*12相加也为空的情况.

7. Group function 组函数

      max,min,avg ,count,sum函数  
      select to_char(avg(sal),'99999999,99') from emp;      
      select round(avg(sal),2) from emp;
      结果:2073.21
        
      select count(*) from emp where deptno=10;
      select count(ename) from emp where deptno=10; count某个字段,如果这个字段不为空就算一个.
      select count(distinct deptno) from emp;
      select sum(sal) from emp;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值