zoukankan      html  css  js  c++  java
  • Oracle ——————建表、select、视图

    --建表
      --  关键字 : create
      --  用法 :   
      /* 
      create table table_name 
      (
             lie1_name  数据类型  是否为空,
              lie2_name  数据类型  是否为空,
               lie3_name  数据类型  是否为空,
               ……………………………………
      );
      
      */
    create table infos
    (
          stuid varchar2(7) not null ,
          
          stuname varchar2(10) not null ,
         
          gender varchar2(2) not null ,
          
          age number(2) not null ,
          
          seat number(2) not null ,
          
          enrolldate date ,
          
          studress varchar2(50) ,
          
          classno varchar2(4) not null
    ) ;
    
    -- 添加约束
    
    --添加主键
    alter table infos add constraint pk_infos primary key(stuid) ;
    
    --check 约束
            -- 性别只能是男或女
            --作用: 条件限制
    alter table infos add constraint ck_infos_gendertest check(gender='' or gender='') ;
    
    --唯一约束
          --作用:使该列内容不重复
    alter table infos add constraint un_stuname unique(stuname) ;
    
    --日期格式转换
    select to_char(sbirthday , 'yyyy-mm-dd hh24:mi:ss') from student ;
    
    --查询系统时间
    select sysdate from dual ;
    
           -- dual 伪列 ,只有一行一列数据
           
    --绝对值函数
                   --abs() 括号内是数值型或可以隐形转换成数值型
    select abs(122),abs(-123),abs(0) from dual ;
    
    --数据添加
    
                        -- insert into 表名 valus
    insert into student(sno,sname,ssex) values ('122','小明','') ;
    
           --添加日期   
           --需要类型转换     to_date
    insert into student values(to_date('1990/2/3','yyyy/mm/dd')) ;
    
    
    --提交事务
    
    commit ;
    
    --回滚事务
    
    rollback ;
    
    --数据的复制
    
             -- insert into 新的表名 select * from 要复制的表名 ;
             
    --查询数据去除重复
                       --distinct
                       --select distinct 列名 from 表名 ;
                       -- * 代表所有字段信息
                       -- != 或 <> 表示不等于
                       --|| 表示拼接
             
    --修改表
                           --update 表名 set 条件或添加内容
    update student set sclass = '666' where sname='小明' ;                      
    
    update student set sclass = '666' where sclass is null ;
    
    
    --删除表
                   --delete 
    delete student where sname = '小明' ;
    
    --快速清空一个表
                      --truncate 
    --truncate table 表名 ;              
                          
    --排序
    
               --order by asc/desc  正序/倒序  
               --放于where条件后
         
    
    --分组
               --group by 列名
    
    
    --查询位于两个数值之间的记录
               --两种方法
               
               select degree from score where  degree >70 and degree < 85 ;
               --between 后面必须是小的数值
               select degree from score where degree between 70 and 85 ;          
         
    --查询 位于66,77,88 中的成绩
    
    select degree from score where degree=66 or degree=77 or degree=88 ;
    
    select degree from score where degree in (66,77,88) ;         
    
    
    /*         
        排序用法  order by
    
                 asc 正序,默认 ,可不加
          
                  desc 降序 ;
          
                   语法: order by 字段名1 asc/desc ,字段名2 asc/desc ...
          
                     字段在前的优先级高,  先按字段1排序,再按字段2排序      
                     
                     有条件限制语句的话,放在where语句后面
    
    */
    
    
    --               去除查询数据中的重复记录
    --distinct
    --用法
    --select distinct lie_name from  biao_name ;
    --实例
    select distinct depart from teacher ;
    
    
    --     查询两个数据之间
    
    --     比较运算     例:
    select * from score where degree > 60 and degree < 80 ; 
    
    --    关键字:between 小值 and 大值  。 例:
    select * from score where degree between 60 and 80 ;
    
    
    --     内置函数
    
    --     聚合函数   返回单个值
    ---    记录条数(列名内容不为空,一般统计主键列)
    
    select count(*) from student where sclass = '95031';
    
    --     成绩求和
    
    select sum(degree) 总成绩 from score ;
    
    --     平均成绩
    
    select avg(degree) 平均值 from score ;
    
    --     最高分
    
    select max(degree) 最高分 from score ;
    
    --     最低分
    
    select min(degree) 最低分 from score ;
    
    --     伪列
                       --       rownum  内置列
    select * from score where rownum = 1 ;  
    
    --查询每门课的平均成绩大于80的
                   --   先cno 分组,在 内置函数
    select cno , avg(degree),count(cno) from score group by  cno having avg(degree) > 80 ;
    
    select * from (select cno , avg(degree) a,count(cno) from score group by  cno )  where a> 80 ;
    
    
    --纵向查询
    --两个表之间查询的列数要相同,对应列数的数据类型要相同
    
    select sname,ssex,sbirthday from student 
    union 
    select tname,tsex,tbirthday from teacher ;
    
    
    --模糊查询
    
           --查询姓王的学生信息
    select * from student where sname like '王%' ;
           --% 代表任意个数的字符
           --  一个下划线代表一个字符 _
    
    
    -- 内置函数
    
                       --下限值
                       
                       select floor(123.12) from dual ;
                       
                       --上限值 
                       
                       select ceil(123.12) from dual ;
                        
                       --四舍五入
                       
                       select round(123.89) from dual ;
                       
                              --保留位数四舍五入
                              
                              select round125.456,2from dual ;
                              
                       --直接舍掉
                                     --作用: 格式化数据,统一格式
                       
                       select trunc(123.456) from dual ;
                              --并不会四舍五入
                       select trunc(123.456,2) from dual ;
                       
                       --绝对值
                       
                       select ABS(-23) from dual ;
                       
                       --求余数 ,求模
                       
                       select mod(78,69) from dual ;
                       
                       --计算字符串长度
                       
                       select tname,length(tname) from teacher ;
                       
                       --去空格
                              --去前后空格
                       select trim(' a b cf  ') from dual ;
                              --去前空格 ltrim
                              select ltrim(' sdf ') from dual ;
                              --去后空格 rtrim
                              select rtrim(' sdf ') from dual ;
                              
                       --查找替换
                       
                       select replace(' s df g  ',' ') from dual ;
                       
                       select sname,replace(sname,'','') from student ;
                       
                       --查找字符串(空格也算一个),从1开始,找不到返回0
                       
                       select instr('sd  wef','w') from dual ;
                       
                       --截取字符串
                                         --3 第几位开始截取
                                         --5 截取长度
                       select substr('sdfga fgh',3,5) from dual ; 
                       
                       select sname,substr(sname,1,1) || '同学' from student ;
                       
                       --null值处理
                       
                       select nvl(degree,0) from score ;
                       
                       select nvl2(degree,55,0) from score ;
                       
                       select t.*,decode(ssex,'','1','','2') from student t ;
                       
                       --返回当前用户登录名
                       
                       select user from dual ;
                      
    
    
    ---取得序列的当前值
    select sq_test.nextval from dual ;
    
    select sq_test.currval from dual ;
    
    insert into weadafa values(sq_test.nextval,'王五') ;
    commit ;
    select * from weadafa ;
    
    --视图
    
    create or replace view v_score as
      select t.*,s.sname,c.cname
        from score t,student s,course c where t.sno=s.sno and t.cno=c.cno ;
  • 相关阅读:
    「UVA12293」 Box Game
    「CF803C」 Maximal GCD
    「CF525D」Arthur and Walls
    「CF442C」 Artem and Array
    LeetCode lcci 16.03 交点
    LeetCode 1305 两棵二叉搜索树中的所有元素
    LeetCode 1040 移动石子直到连续 II
    LeetCode 664 奇怪的打印机
    iOS UIPageViewController系统方法崩溃修复
    LeetCode 334 递增的三元子序列
  • 原文地址:https://www.cnblogs.com/20gg-com/p/5972083.html
Copyright © 2011-2022 走看看