• Oracle 基本操作--数据类型、修改和删除表、增删改查和复制表


    一、Oracle基础数据类型:
    数据类型:

    1. 创建数据表时,设计数据表的结构问题,也就是设计及确定数据表中各个列的数据类型,是数值、字符、日期还是图像等其他类型。
    2.  因为只有设计好数据表结构,系统才会在磁盘开辟相应的空间,用户才能向表中填写数据。 

    4类:
       字符型:字符串
        char(最大2000), nchar(最大1000, 支持Unicode)--->固定长度的字符串。
        varchar(最大4000), nvarchar2(最大2000, 支持Unicode)--->可变长度的字符串。

       数字类型
        包括整数和小数
        number(有效数字, 总位数);
                      声明语法:NUMBER(p,s)

            •   p表示精度,s表示小数点的位数
            •   可以存储整数、浮点数等数值类型,最高精度为38位。

                        例如:NUMBER(5,0) 最多可存储五位整数
                                    NUMBER(5,2) 最多可存储999.99的浮点数
         flaot-->存储二进制类型的数据, 1-126位0.30103
         日期类型:时间
         date:取值范围:公元前4712年1月1号---公元9999年12月31号, 可以直接精确到秒
         timestamp(时间戳: 更精确的数据, 可以精确到毫秒)
       其它类型:大文本, 文件
         blob(binary LOB): 最大4G, 以二进制的形式来存放数据,可以存储较大的二进制对象,如:图形、视频剪辑和声音文件。
         clob(charcater LOB): 最大4G, 以字符串的形式存放,它能够存储大量字符数据。

      Oracle运算符和表达式

        表达式类似于java, 可以是常量, 可以是变量, 也可以是表中的一个字段
        算术运算符(+ - * /)
        比较运算符(> >= < <= = <>/!=)
        逻辑运算符(and or not)
        字符串连接符(||)

    常用关键字:
        insert into----insert into  表名 values ();

        delete-----DELETE 表名 WHERE 列名 运算符 条件

        update----UPDATE 表名 SET 列名=值 WHERE 限制条件

        select---尽量不要写*

        where

        in

        like(%, _)---模糊查询,%表示0个或多个;_表示一个;

        order by----SELECT * FROM emp ORDER BY deptid DESC, ID DESC(排序,加上desc成倒序)

        group by--(group by 增强)-------结合分组函数使用 SELECT deptid FROM emp GROUP BY deptid

        having

        case...when...--------SELECT CASE E.SSEX WHEN 1 THEN '男' WHEN 0 THEN '女' ELSE '不详' END bb FROM EMP E;

        set

        distinct----去除一列中的重复;

        between...and(闭合区间, 即包括前面的数, 也包括后面的数)

        all-------SELECT * FROM emp e WHERE e.intime>=ALL(SELECT e1.intime FROM emp e1);

    二、Oracle基本操作

    1、创建表:

    通过create table语句

    语法结构如下:

    create  table  table_name(

    column_name datatype;

    )

    2、修改和删除表

    • 添加列:

    语法结构:alter table 表名 add 新增列名 数据类型

     如:alter table student add tel varchar2(11);

    •  修改列:

    语法结构:alter table 表名 modify 列名 新数据类型;

    如:alter table student modify tel number(11,0);

    • 删除列:

    语法结构:alter table 表名 drop colunm 列名;

    如:alter table student drop column tel;

    • 修改列名:

    语法结构:alter table 表名 rename column 列名 to 新列名;

    如:alter table student rename column sex to gender;

    • 修改表名:

    语法结构:rename 表名 to 新表名

    如:rename student to studentinfo;           

     3、增删改查

    DML基本操作:添加信息insert 

                             查询信息selete 

                             修改信息update

                             删除信息delete

    添加信息:

    语法结构:insert into 表名[(列1,列2,...,列n)] values(值1,值2,...,值n);

    如:insert into student(sid,name,sex) values(2001,'张三','女');

           insert into student(sid,name,sex,address,brithday) values(2001,'张三','女','北京',to_date('19900909','YYYYMMDD'));

           insert into student values(2001,'张三','女','北京',to_date('19900909','YYYYMMDD'));

    查询信息:

    语法格式:selete *|column[...]  from 表名;

    如:1、查询全体学生的学号和姓名

                 selete sid,name from student;

           2、查询全体学生

                 selete * from student;

           3、查询学号不等于20的学生 !=

                 selete * from student where sid!=20;

            4、查询学号在20-30范围的学生 between and | in

                 selete name from student where sid>=20 and sid<=30;

                 selete name from student where sid between 20 and sid 30;

                  selete name from student where sid in (20,30);

           5、模糊查询,查询以s开头的学生姓名 xx%

                 selete name from student where name like 'S%';

                查询姓名含有S的学生

                 selete name from student where name like '%S%';

                 说明:与like搭配用,'s%'中的字母区分大小写。

           6、占位查询,查询名字为5个字母,并且第二位是的学生姓名

                 selete name from student where name like '_o____';

           7、notnot null,查询没有学号|有学号的学生

                 selete * from student where sid is null|not null;

          8、查询学生的出生日期

                selete * from student where birthday between  '10-1月-90' and '10-12月-90';

          9、查询学生信息

                selete sid,name,sex,to_char(date,'yyyy-mm-dd hh24:mm:ss')  as 入职时间 from student;

          10、查询系统时间

                selete sysdate from sys.dual;

          11、任意字段与null都为null  null+1000=null

                selete sid+1000,name,sex from student;

          12、nvl()函数设置null为0,nvl(sid,0)

                selete nvl(sid,0)+1000,name,sex from student;

          13、|| 每个字段可以通过||进行拼接

                selete sid,name,sid||'---'||sex from student;

          14、查询学生不重复的地址 去重复distinct

                selete distinct address from student;

          15、按学号升序查询 order by asc升序(默认隐藏)/desc降序

                selete * from student order by sid asc

    修改信息:

    语法格式:update table 

                      set column=value[column=values,...]

                       [where condition];

    如:update student set tel='123' where sid=2001;

           update student set address='北京朝阳';

    删除信息:

    语法格式:delete from table[where condition];

    如:delete from student;

    delete from student where sid=2001;

    • delete命令(数据操作语言DML)

                  格式:delete 表名;

                  如:删除学生表  delete student;

                      注意:1、用delete删除表,只是删除表中的数据,表结构不会被删除。

                                 2、虽然是删除整个表的数据,但是删除过程是系统一行一行地删,效率比truncate低。

                                 3、delete删除是不释放空间的,删除后数据库容量大小不变。

                                 4、delete 语句每次删除一行,并在事务日志中为所删除的每行记录一项。所以可以对delete操作进行Rollback回滚数据信息。

    •  truncate命令(数据定义语言DDL)也叫截断表

      格式:truncate  table 表名;

       如:删除学生表  truncate table student;

         注意:1、用truncate删除表,只是删除表中数据,表结构不会被删除,删除内容、释放空间但不删除定义,还可以新增元素。

                    2、删除整 个表的数据时,删除过程是系统一次性进行删除数据,效率比较高。

                    3、truncate删除会释放空间,不会触动任何delete触发器。

                    4、Rollback无效。

                    5、truncate 将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过 truncate 操作后的表比Delete操作后的表要快得多。 

                    6、不能清空父表。

    truncate与delete比较:


     

               1、truncate table 在功能上与不带 WHERE 子句的 delete语句相同,二者均删除表中的全部行。

               2、 truncate 比 delete速度快,且使用的系统和事务日志资源少。

               3、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。

     

     

     

     

     

     

     

     

     

     

    •  drop命令(数据定义语言DDL)

                     格式:drop table 表名

                     如:删除学生表   drop table student 

                       注意:1、用drop删除表数据,不但会删除表中数据,也会将表结构删除。

                                  2、自动提交,Rollback无效,不会触动触发器,会将空间释放出来。

    4、复制表

    可以从其他用户,选用已存在的表。

    如:scott中的dept表,拖拽到右侧显示栏,弹出框选择单个语句,显示2-7行,再添加1行,就能将此表dept中所有信息复制到本地表depts中。

    1 create table depts as
    2   SELECT
    3     deptno,
    4     dname,
    5     loc
    6   FROM
    7     scott.dept;
  • 相关阅读:
    新项目反思
    nei网访问
    react
    css沉默
    沉默
    node准备
    C++学习(八):删除文件
    利用工具格式化日期文本
    PageHelper 记录总条数不正确问题处理
    tk.mybatis 多个or条件拼接
  • 原文地址:https://www.cnblogs.com/echola/p/9505453.html
Copyright © 2020-2023  润新知