Oracle基本的增删改查语句--本人使用scott用户中的表

--感觉有用点个赞^v^  1 --创建表空间
  2 create tablespace mykebai
  3 datafile ‘c:\mykebai.dbf‘  --数据问价存放位置
  4 size 100m                  --数据文件初始大小
  5 autoextend on              --当存储文件满时,自动增长
  6 next 10m                   --每次增长10m大小
  7
  8 --删除表空间
  9 drop tablespace mykebai;
 10
 11
 12 --创建用户
 13 create user mykebai
 14 identified by mykebai       --用户名的密码
 15 default tablespace mykebai  --用户所对应的表空间名称
 16
 17 grant dba to mykebai;       --为创建的用户设置权限
 18 --切换用户到mykebai
 19
 20 create table person(        --创建一个表结构
 21        pid number(20),
 22        pname varchar2(10)
 23 );
 24
 25 drop table person; --删除表结构
 26
 27 --修改表结构
 28 alter table person add(gender number(1));   --添加一列
 29 alter table person modify gender char(1);   --修改列类型
 30 alter table person rename column gender to sex; --修改列名称
 31 alter table person drop column sex;         --删除一列
 32
 33 --表数据管理
 34 select * from person;                                 --查询表中所有数据
 35
 36 insert into person (pid, pname) values (1,‘呵呵‘);    --插入一条数据
 37 commit;
 38 update person set pname=‘小李‘ where pid=1;           --修改表中的数据
 39 commit;
 40 delete from person;                                   --删除表中的全部数据,一条一条的逐一删除
 41 truncate table person;                                --直接 删除表,然后再次创建一个一模一样的表结构
 42
 43                   /*
 44                      中文乱码问题解决
 45                     1.查看服务器端编码
 46                     select userenv(‘language‘) from dual;
 47                     我实际查到的结果为:AMERICAN_AMERICA.ZHS16GBK
 48                     2.执行语句 select * from V$NLS_PARAMETERS
 49                     查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否和第一步得到的值一样。
 50                     如果不是,需要设置环境变量.
 51                     否则PLSQL客户端使用的编码和服务器端编码不一致,插入中文时就会出现乱码.
 52                     3.设置环境变量
 53                     计算机->属性->高级系统设置->环境变量->新建
 54                     设置变量名:NLS_LANG,变量值:第1步查到的值, 我的是  AMERICAN_AMERICA.ZHS16GBK
 55                     4.重新启动PLSQL,插入数据正常
 56                   */
 57
 58
 59 --序列
 60 create sequence s_person;                   --序列不属于任何一张表,但是可以和一张表做逻辑的绑定
 61                                             --序列:默认是从1开始,主要给主键进行赋值操作
 62 select s_person.nextval from dual;          --dual:虚表,只是为了补全语法
 63                                             --nextval:取得序列的下一个内容
 64                                             --currval:取得序列当前的内容
 65 --使用序列
 66 insert into person (pid, pname) values (s_person.nextval, ‘小明‘);    --添加一条纪录
 67 commit;
 68 select * from person;
 69
 70 select * from emp
 71
 72
 73 --切换到scott用户,EMP雇员表,DEPT部门表,SALGRADE工资等级表,BONUS奖金表
 74 --字符函数
 75 select upper(‘hello‘) from dual;          --小写转换大写
 76 select lower(‘HELLO‘) from dual;          --大写转换小写
 77 --数值函数
 78 select round(12.04,1) from dual;          --四舍五入
 79 select round(12.05,1) from dual;          --向后取一位
 80 --日期函数,Oracle日期可以加减
 81         /*
 82         日期 – 数字 = 日期
 83         日期 + 数字 = 日期
 84         日期 – 日期 = 数字
 85         */
 86 select hiredate from emp                                            --查询雇员进入公司的周数
 87 select ename,round((sysdate-hiredate)/7) from emp                   --sysdate:当前系统时间-hiredate员工入职时间/7
 88 --获得两个时间段中的月数:MONTHS_BETWEEN()
 89 select ename, round(months_between(sysdate,hiredate)) from emp      --查询所有雇员进入公司的月数
 90 --转换函数
 91 --to_char():字符串转换函数
 92 select ename,                                         --查询所有的雇员将将年月日分开
 93 to_char(hiredate,‘yyyy‘) 年,
 94 to_char(hiredate,‘mm‘) 月,
 95 to_char(hiredate,‘dd‘) 日
 96 from emp
 97
 98 select ename,to_char(hiredate,‘yyyy-mm-dd‘)           --查询年月日
 99 from emp
100
101 --使用fm去掉前导零
102 select ename,to_char(hiredate,‘fmyyyy-mm-dd‘)         --查询年月日
103 from emp
104
105 --to_date日期转换函数:可以将数字类型转换为日期类型
106 select to_date(‘1997-12-15‘,‘yyyy-mm-dd‘)
107 from emp
108
109 --通用函数:
110
111 select ename 姓名, sal 每月工资, comm 奖金, sal*12+nvl(comm,0)--空值处理nvl:null和任何值计算,都为null
112 from emp
113
114 select * from emp
115
116 --decode函数:类似 if...eles if...else
117 select ename,
118        decode(
119               job,                  --job
120               ‘CLERK‘,‘业务员‘,        --if
121               ‘SALESMAN‘,‘销售员‘,     --if else
122               ‘无业‘                   --else
123        )
124 from emp
125 --case when函数
126 select t.empno,
127     t.ename,
128     case
129         when t.job = ‘CLERK‘         then    ‘业务员‘
130         when t.job = ‘MANAGER‘      then     ‘经理‘
131         when t.job = ‘ANALYST‘         then    ‘分析员‘
132         when t.job = ‘PRESIDENT‘     then    ‘总裁‘
133         when t.job = ‘SALESMAN‘     then    ‘销售‘
134         when t.job = ‘SALESMAN‘     then    ‘销售‘
135         else    ‘无业‘
136     end
137 from emp t;
138
139
140 --多行函数(聚合函数)
141 select count(ename) from emp                          --查询总数
142 select min(sal) from emp                              --查询最小工资
143 select max(sal) from emp                              --查询最高工资
144 select avg(sal) from emp                              --查询平均工资
145 select sum(sal) from emp                              --查询全部工资总和
146 --分组查询group by
147 select deptno,
148        count(ename),                            --查询每个部门有多少人数
149        sum(sal),                                --每个部门的总工资
150        avg(sal)                                 --每个部门的平均工资
151 from emp
152 group by deptno
153 --按部门分组,查询出部门名称和部门的员工数量
154 select d.dname,d.deptno,count(ename)
155 from dept d,emp e
156 where d.deptno = e.deptno
157 group by d.deptno, d.dname
158
159 --查询出部门人数大于 5 人的部门
160 select d.deptno, e.deptno, count(ename)
161 from dept d, emp e
162 where d.deptno = e.deptno
163 group by d.deptno, e.deptno
164 having count(ename)>4
165
166 --多表查询
167 select * from dept d,emp e where d.deptno = e.deptno
168
169 --自关联查询
170 --查询出每个员工的上级领导
171 --emp 表中的 mgr字段是当前雇员的上级领导的编号,所以该字段对 emp表产生了自身关联,可以使用 mgr字段和 empno来关联
172 select e1.empno, e1.ename, e2.empno, e2.ename
173 from emp e1, emp e2
174 where e1.mgr = e2.empno
175
176 --在上一个例子的基础上查询该员工的部门名称
177 --只要在上一个例子基础上再加一张表的关联,使用deptno 来做关联字段即可
178 select e1.empno, e1.ename, e2.empno, e2.ename,d.dname
179 from emp e1, emp e2, dept d
180 where e1.mgr = e2.empno
181 and e1.deptno = d.deptno
182
183 --查询出每个员工编号,姓名,部门名称,工资等级和他的上级领导的姓名,工资等级
184 select  e.empno,
185         e.ename,
186         decode(s.grade,
187         1,‘一级‘,
188         2,‘二级‘,
189         3,‘三级‘,
190         4,‘四级‘,
191         5,‘五级‘) grade,
192         d.dname,
193         e1.empno,
194         e1.ename,
195         decode(s1.grade,
196         1,‘一级‘,
197         2,‘二级‘,
198         3,‘三级‘,
199         4,‘四级‘,
200         5,‘五级‘) grade
201 from emp e, emp e1, dept d, salgrade s, salgrade s1
202 where e.mgr = e1.empno
203     and e.deptno = d.deptno
204     and e.sal between s.losal and s.hisal
205     and e1.sal between s1.losal and s1.hisal
206
207 --外连接查询
208 --左右外连接查询
209
210 --Rownum与分页查询
211 --ROWNUM:表示行号,实际上此是一个列,但是这个列是一个伪列,此列可以在每张表中出现。
212 --查询 emp 表带有 rownum 列
213 select rownum, t.* from emp t
214 --rownum 来取结果集的前几行,比如前 5 行
215 select rownum, e.* from emp e where rownum<6
216 --但是我们不能取到中间几行,因为rownum不支持大于号,只支持小于号,如果想 实现我们的需求怎么办呢?答案是使用子查询,也正是oracle分页的做法。
217
218 --第一种写法:
219 select *
220 from (select rownum rm, a.* from (select * from emp) a where rownum < 11) b
221 where b.rm >5
222 --第二种写法:
223 select *
224 from (select rownum r ,emp.* from emp) b
225 where b.r >5 and b.r <11

原文地址:https://www.cnblogs.com/Mykebai/p/10996295.html

时间: 2024-10-10 04:32:22

Oracle基本的增删改查语句--本人使用scott用户中的表的相关文章

使用C#书写SQLite数据库增删改查语句(以及插入byte[]时遇到的问题总结)

在没有使用SQLite这种轻量级的数据库之前,只使用过Sqlserver2008进行数据的增删改查,公司使用的是大型的ORACLE数据库,还没有真正的会使用它.那时候觉得数据库很庞大,然而遇到SQLite以后,发现有这么个迷你的小数据库,就像女生的包包随身携带的小镜子一样,放在哪里都能使用. 废话少说,SQLite提供了如何连接.关闭等数据库操作,但真正的增.删.改.查等语句同Sqlserver.ORACLE是一样的. 首先,是创建SQLite数据库文件(写了一个方法): Public stat

数据库基本查询语句(SQL常用增删改查语句 简单复习 mark)

SQL常用增删改查语句 1增 1.1[插入单行]insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) values ('开心朋朋','男','1980/6/15') 1.2[将现有表数据添加到一个已有表]insert into <已有的新表> (列名) select <原表列名> from <原表名>例:insert into tongxunlu ('姓名','地址','

SQL Server快速生成SQL增删改查语句

你还在手敲代码生成SQL语句吗?你还在为因为马虎出错的SQL语句而感到无语吗?你还在为不知怎样表达复杂的SQL语句而纠结吗?如果你的回答为"是",那你就OUT啦,快来试试应用SQL Server资源管理器快速生成SQL语句吧. 首先,打开SQL Server2008,在菜单栏"查询"下拉菜单中找到"在编辑器中设计查询",如下图: 在打开的查询设计器窗口中添加要进行操作的数据库表. 在添加的表内下方空白部分右键单击鼠标,在弹出菜单中单击"

四种简单的sql语句(增删改查语句)

四种简单的sql语句(增删改查语句) 一.插入语句 insert into [table] ([column],[column],[column]) values(?,?,?) 二.删除语句 delete from [table] where column = ? 三.修改语句 update [table] set column = ? where column = ? 四.查询语句 1)查询单条记录的所有字段 select * from [table] where [column] = ? 2

MYSQL的常用命令和增删改查语句和数据类型

连接命令:<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库" target='_blank' style='color:#df3434; font-weight:bold;'>MySQL</a> -h[主机地址] -u[用户名] -p[用户密码] 创建<a href="http://lib.csdn.net/base/my

mysql数据库的增删改查语句

连接命令:mysql -h[主机地址] -u[用户名] -p[用户密码] 创建数据库:create database [库名] 显示所有数据库: show databases; 打开数据库:use [库名] 当前选择的库状态:SELECT DATABASE(); 创建数据表:CREATE TABLE [表名]([字段名] [字段类型]([字段要求]) [字段参数], ......); 显示数据表字段:describe 表名; 当前库数据表结构:show tables; =============

MYSQL的常用命令和增删改查语句

连接命令:mysql -h[主机地址] -u[用户名] -p[用户密码] 创建数据库:create database [库名] 显示所有数据库: show databases; 打开数据库:use [库名] 当前选择的库状态:SELECT DATABASE(); 创建数据表:CREATE TABLE [表名]([字段名] [字段类型]([字段要求]) [字段参数], ......); 显示数据表字段:describe 表名; 当前库数据表结构:show tables; 更改表格 ALTER TA

sql server连接oracle并实现增删改查

需要一个软件ODAC112040Xcopy_64bit 我连接的oracle是11g r2  sqlserver 是 2016 软件下载 https://pan.baidu.com/s/1OpYmpReEJcPg4wNESWy61Q 服务器先安装.net 2.0和3.5 安装好以后 解压ODAC112040Xcopy_64bit 最好是放到磁盘跟目录,不要有带中文目录名 打开cmd 进入解压目录 运行命令 install.bat all c:\oracle odac 安装好以后c盘会有一个ora

oracle的增删改查语句

创建一个表: cteate table 表名(列1 类型, 列2 类型);查看表结构 desc表名添加一个字段 alter table 表名 add(列类型);修改字段类型 alter table 表名 modify(列类型);删除一个字段 alter table 表名 drop column列名;修改表的名字 rename student to stu删除表 drop table 表名插入数据:1. create table test( id number, name varchar2(20)