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

时间:2021-10-21 00:11:05

一、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、not 与not 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中。

 create table depts as
SELECT
deptno,
dname,
loc
FROM
scott.dept;

Oracle 基本操作--数据类型、修改和删除表、增删改查和复制表的更多相关文章

  1. GZFramwork数据库层《二》单据表增删改查&lpar;自动生成单据号码&rpar;

    运行效果: 使用代码生成器(GZCodeGenerate)生成tb_EmpLeave的Model 生成器源代码下载地址: https://github.com/GarsonZhang/GZCodeGe ...

  2. GZFramwork数据库层《一》普通表增删改查

    运行结果:     使用代码生成器(GZCodeGenerate)生成tb_MyUser的Model 生成器源代码下载地址: https://github.com/GarsonZhang/GZCode ...

  3. Vc数据库编程基础MySql数据库的表增删改查数据

    Vc数据库编程基础MySql数据库的表增删改查数据 一丶表操作命令 1.查看表中所有数据 select * from 表名 2.为表中所有的字段添加数据 insert into 表名( 字段1,字段2 ...

  4. Django框架(九)—— 单表增删改查,在Python脚本中调用Django环境

    目录 单表增删改查,在Python脚本中调用Django环境 一.数据库连接配置 二.orm创建表和字段 三.单表增删改查 1.增加数据 2.删除数据 3.修改数据 4.查询数据 四.在Python脚 ...

  5. GZFramwork数据库层《四》单据主从表增删改查

    同GZFramwork数据库层<三>普通主从表增删改查 不同之处在于:实例 修改为: 直接上效果: 本系列项目源码下载地址:https://github.com/GarsonZhang/G ...

  6. GZFramwork数据库层《三》普通主从表增删改查

    运行结果: 使用代码生成器(GZCodeGenerate)生成tb_Cusomer和tb_CusomerDetail的Model 生成器源代码下载地址: https://github.com/Gars ...

  7. Django框架(八)--单表增删改查,在Python脚本中调用Django环境

    一.数据库连接配置 如果连接的是pycharm默认的Sqlite,不用改动,使用默认配置即可 如果连接mysql,需要在配置文件中的setting中进行配置: 将DATABASES={} 更新为 DA ...

  8. TESTUSERB 仅能对TESTUSERA 用户下的某些表增删改查、有些表仅能对某些列update,查询TESTUSERB 用户权限,获取批量赋予语句。

    TESTUSERB 仅能对TESTUSERA 用户下的某些表增删改查.有些表仅能对某些列update,查询TESTUSERB 用户权限,获取批量赋予语句. select 'grant '|| PRIV ...

  9. SSH框架下的多表增删改查

    下载地址:SSH框架下的多表增删改查 点击进入码云Git下载 点击进入CSDN下载 项目结构: 项目代码就不全部贴出来了,只贴下核心代码.需要项目的自己可以去下载. package com.atgui ...

随机推荐

  1. 用Unity写一个12306验证器的恶搞图生成软件

    前言 前一阵子是买火车票的高峰期,然后12306的验证码就遭到各种吐槽.其实大部分验证码没有那么难,大家只是因为买不到票 发泄一下不满的情绪.于是各种恶搞的图就出现了,比如找二次元里人物的矮子,找好男 ...

  2. linux命令(2):df 磁盘占用

    在这里先讲讲linux命令df的资料: df 命令: linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信 ...

  3. 【CSS3】---only-child选择器&plus;only-of-type选择器

    only-child选择器 “:only-child”选择器选择的是父元素中只有一个子元素,而且只有唯一的一个子元素.也就是说,匹配的元素的父元素中仅有一个子元素,而且是一个唯一的子元素. 示例演示 ...

  4. WPF中实现根据拼音查找汉字

    1.WPF的一个触摸屏项目,需要输入姓名,但是屏幕不支持汉字输入,使用虚拟键盘不稳定,为了解决该问题特此进行处理. 2.新建一个类转换类,里面初始化一个数组,数组包含拼音,以及拼音下的常用的汉字. 3 ...

  5. JS分段上传文件(File)并使用MD5&period;js加密文件段用来后台校验

    HTML <form method="POST" name="form1" action="/mupload/upload/" enc ...

  6. 文件上传的三种模式-Java

    文件上传的三种方式-Java 前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方 ...

  7. 手机连接WiFi有感叹号x怎么回事?如何消除手机WiFi感叹号?

    经过多年的革新,现在的安卓系统已经非常优秀了,某些程度已经超越iOS,卡顿和耗电也不再是安卓系统的代名词了.而为了体验到最优秀的安卓系统,不少人都会购买海外的手机,因为海外手机的安卓系统都比较精简,非 ...

  8. 小白学习 Redis 数据库日记&lpar;2017-06-13&rpar;

    redis 127.0.0.1:6379> LPUSH runoobkey redis(integer) 1redis 127.0.0.1:6379> LPUSH runoobkey mo ...

  9. &lbrack;LeetCode&rsqb; 796&period; Rotate String&lowbar;Easy &ast;&ast;KMP

    We are given two strings, A and B. A shift on A consists of taking string A and moving the leftmost ...

  10. (转)ngui3&period;5&period;7 版本Scroll View实现方法

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xyo123.blog.51cto.com/6369437/1405861 现在网 ...