zoukankan      html  css  js  c++  java
  • Oracle简单操作语句(增删改查),和代码例子

    //创建用户 :
        
            create user c##名字 identified by 密码 ;
            //命名规则 :
                1 名字必须以字母开头,
                2 长度不能超过30个字符(60字节),
                3 不能使用oracle的保留字<
                4 只能使用a-z,A-Z, 0-9,$,#,_,等...

    //切换当前用户 :

                connect 用户名/密码@网络服务器(orcl);

    //oracle数据类型 :
        
            number : 整型值  插入值的时候 直接 (22,33,4,45,...就行)
            varchar2 : 字符型 插入值的时候 '必须用单引号括起来';
        number :

            number(5,2);//一共5位数字,其中有两位是小数,范围是(-10^38 ~ 10^38);
            number(5);//就是规定有五位数字,没有小数 默认是number(5,0);
        
        char :

            //查询快,但是浪费空间
            char:定长,2000字符(4000字节),字符串char(5);//可以设置5可 但是内容必须是 '内容',用单引号括起来

        varchar2 :

            varchar2:变长,4000字符(8000字节);
            varchar2(20 byte);//规定能写20个字符 但是只能是byte类型(字节型),但是内容必须是 '内容',用单引号括起来

        clob :

            clob(characterlarge object);//字符型大对象,最大4G

        date :

            date;//时间格式,values()赋值的时候,可以用这个更改格式 : to_date('20-2-81','DD-MON-RR');

        blob :
            blob://二进制数据电影,图片,音乐,4G不会放到数据库里面,文件服务器

    //创建表单 :
        在当前用户下创建表单
        create table 表名字(id number(5,2), name varchar2(20 byte));//创建一个表单,里面有两列,第一列是id 是数值型 切共有5位数字,并有两位是小数,三位是整数 ,第二列是name 字符型,能输入20个字节,必须是字节

    //更改表名字 :

        rename 旧表名 to 新表名;

    zeng :
    //增 :
        //创建用户 :
        
            create user c##名字 identified by 密码 ;
            //命名规则 :
                1 名字必须以字母开头,
                2 长度不能超过30个字符(60字节),
                3 不能使用oracle的保留字<
                4 只能使用a-z,A-Z, 0-9,$,#,_,等...

        //为用户授权 : 权限

            grant connect,resource,unlimited tablespace to c##名字 container=all;//所有权限

        //grant 权限 to c##用户名:

            connect:链接(登陆) 权限
            resource:数据/源 权限 (对数据的 增 删 改 查 )
            unlimited tablespace : 表空间 权限

        // grant 权限 传递
            
            grant 权限 to 用户名 with grant option;//它也就有给别人权力的权力,但是权力不能超过他自己(本身)

        //设置用户使用的表空间 :
            
            alter user 用户名 default tablespace users;
            alter user 用户名 temporary tablespace temp;//临时表空间

        //创建表单 :

            create table 表名(属性 number(5,0)/*数据类型五位数,且没有小数*/ , 属性 varchar2(4 byte)/*数据类型,字符型,只能输入4位,必须是字节格式*/)

        //往表里面添加行(内容) :
            
            insert into 用户名.表名(属性1,属性2.../*可选的*/)values(值,值...);

        //往表单里添加一个字段 : (添加一个列/属性)

            alter table 表名 add ("名字" number(3)/*类型,规定内容格式*/);

        //多个插入 :

            insert into 新表名(字段名) select 列 from 表名 where 行限定条件(不是所有数据,年龄段,某个部门)//
        如 : insert into emp(id) select age from emp where id = 33;//把emp表中 id列值为33,对应的那些age的值,添加到emp表的id列中

        //备份表 :

            create table 表名 as select * from 表名;

        //模拟中的数据复制 :

            insert into 表1(属性1,属性2...) select * from 表2;//表1后面属性个数是多少,表2就必须是多少,而且数据类型也必须完全相同 , 然后把表2里面列的数据类型的值,添加到和表1中对应列的数据类型相同的那一列的后面(追加行 )
            1 insert into emp (id/*我这个id是number(5)类型,并且只能写5个数字*/) select * from emp2;//表2 里面必须有一个number(5)类型的列,并且也只能写5个数字
            2 insert into emp (id/*我这个id是number类型*/) select hao from emp2;//hao这个列 必须和id列的数据类型完全相同,然后把hao那一列的数据,在id哪一列的后面,追加

    shan :
    //删 :

        //删除用户和表 :
          
            //删除用户 只能用sys用户才能删除,因为只有sys用户有删除别的用户的权利
            drop user 用户名 cascade;//用户和表一起删除

        //删除表 :

            drop table 用户名.表名;//删除表

        //删除权限 :

            revoke 操作名(权限) on 表名 from 用户名;

        //删除一个表的字段 : (删除一个列/属性)

            alter table 表名 drop column 列名;    //强烈建议不要对成熟的系统这么做

        //删除行 : 不定条数
        
            delete from 表名 where 行限定条件;
                限定条件 如 : name那一列为Kay的 全部删除
            delete from emp where name = 'Kay';

        //删除表的数据

            truncate table 表名;    //相当于删除表和数据然后重建表.

    gai :
    //改 :

        //更改表名字 :
            
            rename 旧表名 to 新表名;

        //切换当前用户 :

            connect 用户名/密码@网络服务器(orcl);

        //更改字段(列)的类型或者名字 :

            alter table 表名 modify (属性 类型);
                如 : alter table student modify (sex number(1));

        //更改列上的值 :

            update 表名 set 列名=列值改变量(+-*/), 字段2,字段3, where 行限定条件;
                如 :  update 表名 set 列名='值' where id='B0002'(限定条件,id为B0002的 都会把前面指定的属性的值更改);

                1  update 表名 set (job,sal,comm/*列名*/)= (select job,sal,comm from/*查看三个列*/ emp where ename='clock'/*ename为'clock'*/) where ename ="scott"/*enamel为'Scott'的*/;//

                1 --> update 表名 set (job,sal,comm)= (select job,sal,comm from emp where ename='clock') where ename ="scott";//先查ename为'clock'的(区分大小写),获取job,sal,comm,对应的值,再把这些值更改(赋值)到 ename为'scott' 对应的job,sal,comm的列值中

    cha :
    //查 :

        //查看当前登陆用户 :
            
            show user;

        //查看当前用户下所有的表单 :

            select * from user_tables;

        //查看你能管理的所有用户 :
        
            select * from all_users;

        //查看数据库里面的所有用户 :

            select * from dba_users;//前提是 你登陆的是sys或system号(用户);

        //查看数据库里面的所有表

            select 表名 from dba_tables;//数据库所有表,包括系统表,前提是 你登陆的是sys或system号(用户);

        //查看表头 :

            desc 表名;//查看表头(也就是列)
    where_and :
        //筛选数据,多选, 查询空值 (后面只能用null 这是一个语句)

            select * from 表名 where 列(属性) is not null;//不为空的
            select * from 表名 where 列(属性) is  null;//为空的
            //查看某列的属性为空(不为空)的所有数据

    where_and_or :
            or : 或者 或
            >,>=,<,<=,= : 大于,大于等于,小于,小于等于,等于;
        select * from 表 where (列 >/*</>/=(大于或等于或小于)*/值 or 列 = 值) and 列 like 'j%';//
            如 : select * from emp where (id>20 or age = 19)and name like 'j%';//查看emp表中 id列的值大于20或age列的值为19的 并且 name列的值以j开头的所有的行的属性

        //指定查询 :

            select 列限定(就是列) from 表限定(就是表) where 行限定(就是一行中某一个属性);    //数据限定条件区分大小写,java限定大小写,select什么就输出什么
            1 select id,name from emp where job = 'CLERK';//查看 job(列)为'CLERK'的哪一行(或多行)的id值和name值

            2 select * from 表 where 列(列限定/表头) < 7800 and 列>2000;//(*就代表输出所有列的属性) 输出 某表中 某列上的值小于7800 且 某列的值大于2000 的所有列的属性

        //查询特定列 :

            select 列1,列2,列3... from 表 where 行限定;(行限定 : 就是某一列上的值 )
            如 :
                select id,name from emp where sex = '男';//查看性别为'男'的 id和name属性

    distinct :
        //单列查询 : (去除重复)

            select distinct 列限定 from 表名 where 行限定(z只能单行查询)
        
    like :

        //匹配字符查询 : (就是筛选)

            % : 匹配多个字符 有两个意思 1 可以匹配任意位字符
                                        2 可以匹配每位上面的任意字符
            _ : 匹配一个字符

           1 select * from 表名 where 限定列 like ''%k%';//查看某个表中某个列的属性值,包含k的所有的行的属性

           2  select * from 表名 where 限定列 like '__k%';//两个下划线(代表两位) 查看某个表的某个列的值, 值的第三位是k的所有的行的属性

    in :

        //枚举查询

            select * from 表 where 列 in(值(1),值(2),值(3)...);//输出某表中 某列的值为 1 或者 2 或者 3 的所有的行的属性
            select * from emp id in(22,42,66);//输出emp表中 id 列的值为22或42或66的所有的行的属性

        in_and :
            >,>=,<,<=,= : 大于,大于等于,小于,小于等于,等于;
            select * from 表 where 列 in(值(1),值(2),值(3)) and 列 >/</=(大于或小于或等于) 值;
            如 : select * from emp where id in(22,33,44) and age >19;//查看emp表中 id列的值为22或33或44 并且 age(年龄)列的值 大于19的 所有的行的属性

        //对查看到值进行运算 :
                
                +*-/ : 运算查看的值(查是查 算是算 不是一回事,并不会改变表单里面的值,只是更改了输出方式)//但是 该列的数据类型必须是数字(number类型)
                select 列+20 '年终奖' , name from 表名;
                select 列+(加/减/乘/除)20(加减乘除对应的值) '年终奖'(给算好的结果(输出时候的列)起个名字) ,name from 表名;
                select sal+20 '年终奖' , name from emp;//查看emp表中的sal值和name值 ,并且把sal的值都加20 然后起个列名为年终奖

        nvl :
            //!!!!重点 : 如果 某列某行 有个空值 , 那么运算结果肯定为空值
            nvl(列,0) : 把某列上的空值 赋值为0
            select 运算列1 + nvl(运算列2,0)*12 "年工资",列 from 表;
            select sal(工资) + nvl(jiang(奖金列),0) '年工资' ,name from emp;//查看emp表中的sal列,和jiang列,和name列 , 并把sal列的值和jiang列的值相加(有的人奖金为空 , 就是没有,然后通过nvl(),就把空值赋值为0),然后算出来的结果起名(输出时候的列名)为 年工资 ,

    order_by :

        desc :

            //给查到的数据,进行从大到小排序(是查到后,在排序,和表内容没关系)
            select * from 表名 order by  列 desc;//某列从大到小排序(只是输出的时候排序而已)

        asc :

            //给查到的数据,进行从小到大排序(是查到后,在排序,和表内容没关系)
            select * from 表 order by 列 asc;//某表的某列输出的时候从小到大排序(只是输出的时候排序)

        as : (起名)

            select 列,列*12 + nvl(列*12,0) as sy,  列 from emp order by sy 排序(asc/desc);//查看某个表的某些列,并对某些列进行了算数操作,并给算的结果起个别名 叫 sy列 ,然后再给这个sy列进行排序 asc(从小到大)/desc(从大到小)

    //子查询 : 分页
        
        //几个查询运算,只能是number类型 ,返回值也都为int类型
        max :

            max();//获取某一列的最大值  返回值为int类型
                如 : max(id);//获取id那一列的最大值

        min :

            min();//获取某一列的最小值  返回值为int类型
                如 : min(id);//获取id那一列的最小值

        avg :

            avg();//获取某一列的平均值  返回值为int类型
                如 : avg(id);//获取id那一列的平均值

        sum :

            sum();//获取某一列的值的总和    返回值为int类型
                如 : sum(id);//获取id那一列的值的总和

        count :

            conut();//当前列下有多少个值    返回值为int类型
                如 : conut(id);//获取id那一列有几个值
        
        group_by :

        //以单列为标准分组

            group by ;//以某一列为标准,进行分组   分组标准必须是查询条件中的列
            select 操作(列),操作(列).... ,分组列 from 表 group by 分组列;//分组列就是以某个列为标准分组,去除这一列的重复数据(是把相同数据的行,分为一组)
            select avg(sal),max(sal),deptno from emp group by deptno;

         //以多列为标准分组

            group by ;//以某几个列为标准,进行分组   分组标准必须是查询条件中的列
            select 操作(列),操作(列).... ,分组列1,分组列2 from 表 group by 分组列1,分组列2;//以多列为标准进行分组,就是分组列1进行分组(把相同的数据分为一组,并且 每个组里面不能有分组列2相同的数据 , 如 : id , name  每个id分组里面,不能有相同的name)
            select min(sal),avg(sal),max(sal),deptno,job from emp group by deptno,job;

    having :

            having ;//对统计结果进行过滤
            select 操作(列),操作(列).... ,分组列 from 表 group by 分组列 having 操作(列) 比较符 值;//就是限定条件  但是是对结果集进行的限定查询, 先分组,在从分组的基础上,进行限定
            select avg(sal),max(sal),deptno from emp emp group by deptno having avg(sal)>2000;(平均工资低于2000的部门号和平均工资)


    //为用户授权 : 权限

            grant connect,resource,unlimited tablespace to c##名字 container=all;//所有权限

        //grant 权限 to c##用户名;
            connect:链接(登陆) 权限
            resource:数据/源 权限
            unlimited tablespace : 表空间 权限

        //设置用户使用的表空间 :
            
            alter user 用户名 default tablespace users;
            alter user 用户名 temporary tablespace temp;//临时表空间


                                   JDBC请看下一篇~

  • 相关阅读:
    Learn Orleans 04
    Learn Orleans 03
    Learn Orleans 02
    Learn Orleans 01
    Python 导入 Excel 到数据库
    visio 2016/2019 时序图/序列图,修改消息的实线/虚线 箭头问题 返回消息状态
    steeltoe简单使用
    AOP in .NET
    centos 8 docker安装以及兼容性问题处理
    ef core SoftDelete Multi-tenancy 软删除、多租户实现 Global Query Filters
  • 原文地址:https://www.cnblogs.com/xrmqbl/p/4833366.html
Copyright © 2011-2022 走看看