Oracle基本的增删改查语句--本人使用scott用户中的表
--感觉有用点个赞^v^
1 --创建表空间
create tablespace mykebai
datafile 'c:\mykebai.dbf' --数据问价存放位置
size 100m --数据文件初始大小
autoextend on --当存储文件满时,自动增长
next 10m --每次增长10m大小 --删除表空间
drop tablespace mykebai; --创建用户
create user mykebai
identified by mykebai --用户名的密码
default tablespace mykebai --用户所对应的表空间名称 grant dba to mykebai; --为创建的用户设置权限
--切换用户到mykebai create table person( --创建一个表结构
pid number(20),
pname varchar2(10)
); drop table person; --删除表结构 --修改表结构
alter table person add(gender number(1)); --添加一列
alter table person modify gender char(1); --修改列类型
alter table person rename column gender to sex; --修改列名称
alter table person drop column sex; --删除一列 --表数据管理
select * from person; --查询表中所有数据 insert into person (pid, pname) values (1,'呵呵'); --插入一条数据
commit;
update person set pname='小李' where pid=1; --修改表中的数据
commit;
delete from person; --删除表中的全部数据,一条一条的逐一删除
truncate table person; --直接 删除表,然后再次创建一个一模一样的表结构 /*
中文乱码问题解决
1.查看服务器端编码
select userenv('language') from dual;
我实际查到的结果为:AMERICAN_AMERICA.ZHS16GBK
2.执行语句 select * from V$NLS_PARAMETERS
查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否和第一步得到的值一样。
如果不是,需要设置环境变量.
否则PLSQL客户端使用的编码和服务器端编码不一致,插入中文时就会出现乱码.
3.设置环境变量
计算机->属性->高级系统设置->环境变量->新建
设置变量名:NLS_LANG,变量值:第1步查到的值, 我的是 AMERICAN_AMERICA.ZHS16GBK
4.重新启动PLSQL,插入数据正常
*/ --序列
create sequence s_person; --序列不属于任何一张表,但是可以和一张表做逻辑的绑定
--序列:默认是从1开始,主要给主键进行赋值操作
select s_person.nextval from dual; --dual:虚表,只是为了补全语法
--nextval:取得序列的下一个内容
--currval:取得序列当前的内容
--使用序列
insert into person (pid, pname) values (s_person.nextval, '小明'); --添加一条纪录
commit;
select * from person; select * from emp --切换到scott用户,EMP雇员表,DEPT部门表,SALGRADE工资等级表,BONUS奖金表
--字符函数
select upper('hello') from dual; --小写转换大写
select lower('HELLO') from dual; --大写转换小写
--数值函数
select round(12.04,1) from dual; --四舍五入
select round(12.05,1) from dual; --向后取一位
--日期函数,Oracle日期可以加减
/*
日期 – 数字 = 日期
日期 + 数字 = 日期
日期 – 日期 = 数字
*/
select hiredate from emp --查询雇员进入公司的周数
select ename,round((sysdate-hiredate)/7) from emp --sysdate:当前系统时间-hiredate员工入职时间/7
--获得两个时间段中的月数:MONTHS_BETWEEN()
select ename, round(months_between(sysdate,hiredate)) from emp --查询所有雇员进入公司的月数
--转换函数
--to_char():字符串转换函数
select ename, --查询所有的雇员将将年月日分开
to_char(hiredate,'yyyy') 年,
to_char(hiredate,'mm') 月,
to_char(hiredate,'dd') 日
from emp select ename,to_char(hiredate,'yyyy-mm-dd') --查询年月日
from emp --使用fm去掉前导零
select ename,to_char(hiredate,'fmyyyy-mm-dd') --查询年月日
from emp --to_date日期转换函数:可以将数字类型转换为日期类型
select to_date('1997-12-15','yyyy-mm-dd')
from emp --通用函数: select ename 姓名, sal 每月工资, comm 奖金, sal*12+nvl(comm,0)--空值处理nvl:null和任何值计算,都为null
from emp select * from emp --decode函数:类似 if...eles if...else
select ename,
decode(
job, --job
'CLERK','业务员', --if
'SALESMAN','销售员', --if else
'无业' --else
)
from emp
--case when函数
select t.empno,
t.ename,
case
when t.job = 'CLERK' then '业务员'
when t.job = 'MANAGER' then '经理'
when t.job = 'ANALYST' then '分析员'
when t.job = 'PRESIDENT' then '总裁'
when t.job = 'SALESMAN' then '销售'
when t.job = 'SALESMAN' then '销售'
else '无业'
end
from emp t; --多行函数(聚合函数)
select count(ename) from emp --查询总数
select min(sal) from emp --查询最小工资
select max(sal) from emp --查询最高工资
select avg(sal) from emp --查询平均工资
select sum(sal) from emp --查询全部工资总和
--分组查询group by
select deptno,
count(ename), --查询每个部门有多少人数
sum(sal), --每个部门的总工资
avg(sal) --每个部门的平均工资
from emp
group by deptno
--按部门分组,查询出部门名称和部门的员工数量
select d.dname,d.deptno,count(ename)
from dept d,emp e
where d.deptno = e.deptno
group by d.deptno, d.dname --查询出部门人数大于 5 人的部门
select d.deptno, e.deptno, count(ename)
from dept d, emp e
where d.deptno = e.deptno
group by d.deptno, e.deptno
having count(ename)>4 --多表查询
select * from dept d,emp e where d.deptno = e.deptno --自关联查询
--查询出每个员工的上级领导
--emp 表中的 mgr字段是当前雇员的上级领导的编号,所以该字段对 emp表产生了自身关联,可以使用 mgr字段和 empno来关联
select e1.empno, e1.ename, e2.empno, e2.ename
from emp e1, emp e2
where e1.mgr = e2.empno --在上一个例子的基础上查询该员工的部门名称
--只要在上一个例子基础上再加一张表的关联,使用deptno 来做关联字段即可
select e1.empno, e1.ename, e2.empno, e2.ename,d.dname
from emp e1, emp e2, dept d
where e1.mgr = e2.empno
and e1.deptno = d.deptno --查询出每个员工编号,姓名,部门名称,工资等级和他的上级领导的姓名,工资等级
select e.empno,
e.ename,
decode(s.grade,
1,'一级',
2,'二级',
3,'三级',
4,'四级',
5,'五级') grade,
d.dname,
e1.empno,
e1.ename,
decode(s1.grade,
1,'一级',
2,'二级',
3,'三级',
4,'四级',
5,'五级') grade
from emp e, emp e1, dept d, salgrade s, salgrade s1
where e.mgr = e1.empno
and e.deptno = d.deptno
and e.sal between s.losal and s.hisal
and e1.sal between s1.losal and s1.hisal --外连接查询
--左右外连接查询 --Rownum与分页查询
--ROWNUM:表示行号,实际上此是一个列,但是这个列是一个伪列,此列可以在每张表中出现。
--查询 emp 表带有 rownum 列
select rownum, t.* from emp t
--rownum 来取结果集的前几行,比如前 5 行
select rownum, e.* from emp e where rownum<6
--但是我们不能取到中间几行,因为rownum不支持大于号,只支持小于号,如果想 实现我们的需求怎么办呢?答案是使用子查询,也正是oracle分页的做法。 --第一种写法:
select *
from (select rownum rm, a.* from (select * from emp) a where rownum < 11) b
where b.rm >5
--第二种写法:
select *
from (select rownum r ,emp.* from emp) b
where b.r >5 and b.r <11
Oracle基本的增删改查语句--本人使用scott用户中的表的更多相关文章
- Java实现mongodb原生增删改查语句
Java实现mongodb原生增删改查语句 2018-03-16 自动化测试时,需校验数据库数据,为了快速自动化,在代码中用原生增删改查语句操作mongodb 结构 代码 0 pom.xml < ...
- 使用C#书写SQLite数据库增删改查语句(以及插入byte[]时遇到的问题总结)
在没有使用SQLite这种轻量级的数据库之前,只使用过Sqlserver2008进行数据的增删改查,公司使用的是大型的ORACLE数据库,还没有真正的会使用它.那时候觉得数据库很庞大,然而遇到SQLi ...
- mysql—增删改查语句总结
关于MySQL数据库——增删改查语句集锦 一.基本的sql语句 CRUD操作: create 创建(添加) read 读取 update 修改 delete 删除 .添加数据 ,'n001','201 ...
- MySQL数据库(增删改查语句)
MySQL数据库(增删改查语句)一.登录数据库:----> mysql -uroot -proot;(对应用户名和密码)二.SQL语句: 数据定义语言DDL 用来定义数据库.表.列,关 ...
- 四种简单的sql语句(增删改查语句)
四种简单的sql语句(增删改查语句) 一.插入语句 insert into [table] ([column],[column],[column]) values(?,?,?) 二.删除语句 dele ...
- 数据库基本查询语句(SQL常用增删改查语句 简单复习 mark)
SQL常用增删改查语句 1增 1.1[插入单行]insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) ...
- SSMybatis整合 --详细解读Mybatis对oracle数据库进行增删改查(一)
Mybatis是现在主流的持久化层框架,与Hibernate不同的是,它鼓励程序员使用原声SQL语句对数据库进行操作.因此提供了非常灵活的功能.特别是当数据库同时访问数过多,需要进行优化时,使用sql ...
- MYSQL的常用命令和增删改查语句和数据类型
连接命令:<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库 ...
- MYSQL的常用命令和增删改查语句和数据类型【转】
连接命令:<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库 ...
随机推荐
- 问题 L: 「Usaco2005 Feb」竞选划区O(∩_∩)O 纯属的暴力
题目描述 农场被划分为5x5的格子,每个格子中都有一头奶牛,并且只有荷斯坦(标记为H)和杰尔西(标记为J)两个品种. 如果一头奶牛在另一头上下左右四个格子中的任一格里,我们说它们相连. 奶牛要大选了. ...
- 数据结构--树链剖分准备之LCA
有关LCA的模板题 传送门 题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数.询问的个数和 ...
- 《吊打面试官》系列-Redis常见面试题(带答案)
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源,有面试点思维导图,欢迎[Star]和[完善] 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在 ...
- [转载]1.2 UiPath第一个案例Hello World
1.弹出框Hello World 在弹出的窗口中创建序列 在新建的序列中,在搜索框中输入“Message Box”,Studio自动搜索出结果. 选中“Message Box”,然后拖拽到界面带+号区 ...
- 演示vsftpd服务匿名访问模式、本地用户模式的配置
文件传输协议(FTP,File Transfer Protocol) 即能够让用户在互联网中上传.下载文件的文件协议,而FTP服务器就是支持FTP传输协议的主机,要想完成文件传输则需要FTP服务端和F ...
- K8S入门系列之集群二进制部署-->master篇(二)
组件版本和配置策略 组件版本 Kubernetes 1.16.2 Docker 19.03-ce Etcd 3.3.17 https://github.com/etcd-io/etcd/release ...
- 提交代码到github托管
廖雪峰官网:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000,感觉初学很棒的一个地 ...
- MD5 加盐加密
一.概述 MD5(Message Digest Algorithm 5),是一种散列算法,是不可逆的,即通过md5加密之后没办法得到原文,没有解密算法. 在一般的项目中都会有登录注册功能,最简单的, ...
- 一、netcore跨平台之 Linux上部署netcore和webapi
这几天闲着的时候在linux上部署了一下netcore webapi,下面就纪要一下这个过程. 中间遇到不少的坑,心里都是泪啊. 话不多说,开始干活. ------------------------ ...
- [学习笔记] 在Windows 10上安装 WebLogic 12.2.1.3
本文适用于学习目的而撰写.截止目前WebLogic已经有12.2.1.4.0了. 在安装WebLogic 12.2.1.3.0 首先要在Windows10之上Oracle JDK 1.8. 当前认证 ...