Oracle 基本操作--数据类型、修改和删除表、增删改查和复制表
一、Oracle基础数据类型:
数据类型:
- 创建数据表时,设计数据表的结构问题,也就是设计及确定数据表中各个列的数据类型,是数值、字符、日期还是图像等其他类型。
- 因为只有设计好数据表结构,系统才会在磁盘开辟相应的空间,用户才能向表中填写数据。
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 基本操作--数据类型、修改和删除表、增删改查和复制表的更多相关文章
- GZFramwork数据库层《二》单据表增删改查(自动生成单据号码)
运行效果: 使用代码生成器(GZCodeGenerate)生成tb_EmpLeave的Model 生成器源代码下载地址: https://github.com/GarsonZhang/GZCodeGe ...
- GZFramwork数据库层《一》普通表增删改查
运行结果: 使用代码生成器(GZCodeGenerate)生成tb_MyUser的Model 生成器源代码下载地址: https://github.com/GarsonZhang/GZCode ...
- Vc数据库编程基础MySql数据库的表增删改查数据
Vc数据库编程基础MySql数据库的表增删改查数据 一丶表操作命令 1.查看表中所有数据 select * from 表名 2.为表中所有的字段添加数据 insert into 表名( 字段1,字段2 ...
- Django框架(九)—— 单表增删改查,在Python脚本中调用Django环境
目录 单表增删改查,在Python脚本中调用Django环境 一.数据库连接配置 二.orm创建表和字段 三.单表增删改查 1.增加数据 2.删除数据 3.修改数据 4.查询数据 四.在Python脚 ...
- GZFramwork数据库层《四》单据主从表增删改查
同GZFramwork数据库层<三>普通主从表增删改查 不同之处在于:实例 修改为: 直接上效果: 本系列项目源码下载地址:https://github.com/GarsonZhang/G ...
- GZFramwork数据库层《三》普通主从表增删改查
运行结果: 使用代码生成器(GZCodeGenerate)生成tb_Cusomer和tb_CusomerDetail的Model 生成器源代码下载地址: https://github.com/Gars ...
- Django框架(八)--单表增删改查,在Python脚本中调用Django环境
一.数据库连接配置 如果连接的是pycharm默认的Sqlite,不用改动,使用默认配置即可 如果连接mysql,需要在配置文件中的setting中进行配置: 将DATABASES={} 更新为 DA ...
- TESTUSERB 仅能对TESTUSERA 用户下的某些表增删改查、有些表仅能对某些列update,查询TESTUSERB 用户权限,获取批量赋予语句。
TESTUSERB 仅能对TESTUSERA 用户下的某些表增删改查.有些表仅能对某些列update,查询TESTUSERB 用户权限,获取批量赋予语句. select 'grant '|| PRIV ...
- SSH框架下的多表增删改查
下载地址:SSH框架下的多表增删改查 点击进入码云Git下载 点击进入CSDN下载 项目结构: 项目代码就不全部贴出来了,只贴下核心代码.需要项目的自己可以去下载. package com.atgui ...
随机推荐
- P3211 [HNOI2011]XOR和路径
思路 看到异或,容易联想到二进制位之间是相互独立的,所以可以把问题变成每个二进制位为1的概率再乘上(1<<pos)的值 假设现在考虑到pos位,设f[i]为第i个节点期望的异或和第pos位 ...
- log4j2日志xml配置——不同级别的日志分别记录在不同的文件
<?xml version="1.0" encoding="UTF-8"?> <!--日志级别以及优先级排序: OFF > FATAL ...
- 剥开比原看代码09:通过dashboard创建密钥时,前端的数据是如何传到后端的?
作者:freewind 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchai ...
- [Python]IO密集型任务 VS 计算密集型任务
所谓IO密集型任务,是指磁盘IO.网络IO占主要的任务,计算量很小.比如请求网页.读写文件等.当然我们在Python中可以利用sleep达到IO密集型任务的目的. 所谓计算密集型任务,是指CPU计算占 ...
- 一篇很好的java异常框架讲解
https://www.cnblogs.com/itcui/p/6400499.html 其实原作者是csdn的一名博主,实在受不了csdn的广告,所以就摘录这篇
- ISNULL函数的深入讲解
1. 标题有点夸张 2. 今天做统计查询员工加班时长的时,因为要将NULL值导入到decimal类型的字段中,但是发现导入之后得字段不属于NULL也不等于0,因此在接下来的运算过程中就很难继续进行, ...
- R语言矩阵栅格显示矩阵颜色显示
效果如下:
- arcgis10.3 python2.7 开发环境配置
如题: 首先安装arcgis desktop 和 自带的python版本,本楼的是2.7.8,安装地址在E:\PYTHON2.7,安装完成后即可开始安装pythonwin2.7,下载地址为:http: ...
- vue中使用vw适配移动端
推荐看看大漠老师的文章,非常的有收获 如何在Vue项目中使用vw实现移动端适配 1.首先在项目中安装依赖 npm i postcss-aspect-ratio-mini postcss-px-to-v ...
- Android Studio NDK开发-JNI调用Java方法
相对于NDK来说SDK里面有更多API可以调用,有时候我们在做NDK开发的时候,需要在JNI直接Java中的方法和变量,比如callback,系统信息等.... 如何在JNI中调用Java方法呢?就需 ...