1. SELECT ename,dname FROM emp,dept WHERE emp.deptno=dept.deptno;
  2.  
  3. SELECT dname,loc FROM dept;
  4.  
  5. SELECT JOB,ename FROM emp;
  6.  
  7. SELECT ename,dname FROM emp,dept WHERE emp.deptno=dept.deptno;
  8.  
  9. 注意:
  10. 批量执行SQL语句时,写成一个SQL脚本,使用SQLPLUS命令 @路径/A.SQL
  11.  
  12. 2、交集运算:
  13. INTERSECT: 查询两个查询语句中重复的部分
  14.  
  15. SELECT * FROM EMP WHERE deptno=30
  16. INTERSECT
  17. SELECT * FROM emp WHERE upper(JOB)='MANAGER';
  18.  
  19. 3、差运算:
  20. minus:第一个查询语句的结果减去交集
  21.  
  22. SELECT * FROM EMP WHERE deptno=30
  23. minus
  24. SELECT * FROM emp WHERE upper(JOB)='MANAGER';
  25.  
  26. SELECT * FROM emp WHERE upper(JOB)='MANAGER'
  27. MINUS
  28. SELECT * FROM EMP WHERE deptno=30;
  29.  
  30. select avg(sal) from emp where deptno=30;
  31.  
  32. 二、相关子查询
  33. ---查询员工姓名,部门名称
  34. SELECT ename,dname
  35. FROM emp,dept
  36. WHERE emp.deptno=dept.deptno;
  37.  
  38. SELECT ename,(SELECT dname FROM dept where deptno=emp.deptno)
  39. FROM emp;
  40.  
  41. ---查询员工的姓名,职务,要比员工所在职务的平均薪水高的。
  42. SELECT ename,JOB
  43. FROM EMP A
  44. WHERE sal>(SELECT avg(sal) FROM emp WHERE JOB=A.JOB);
  45.  
  46. --2.查询工资为其部门最低工资的员工编号,姓名,工资
  47. SELECT empno,ename,sal
  48. FROM emp e
  49. WHERE sal=(SELECT MIN(sal) FROM emp WHERE deptno=e.deptno);
  50.  
  51. 2exists:
  52. 查询哪些人是经理?
  53. SELECT empno,ename,sal
  54. FROM emp
  55. WHERE empno in(select mgr from emp where mgr is not null);
  56.  
  57. SELECT empno,ename,sal
  58. FROM emp m
  59. WHERE EXISTS (SELECT empno FROM emp WHERE mgr=m.empno);
  60.  
  61. 1.列出至少有一个雇员的所有部门名称。
  62. SELECT dname
  63. FROM dept
  64. WHERE exists(SELECT empno FROM emp WHERE deptno=dept.deptno);
  65. 2.列出一个雇员都没有的所有部门名称。
  66. SELECT dname
  67. FROM dept
  68. WHERE NOT EXISTS(SELECT empno FROM emp WHERE deptno=dept.deptno);
  69.  
  70. 1.查询薪水多于他所在部门平均薪水的雇员名字,部门号。
  71. SELECT ename,deptno
  72. FROM emp e
  73. WHERE sal>(select avg(sal) from emp where deptno=e.deptno);
  74. 2.查询员工姓名和直接上级的名字。
  75. SELECT ename,(SELECT ename FROM emp WHERE empno=e.mgr)
  76. FROM emp e;
  77. 3.查询每个部门工资最高的员工姓名,工资。
  78. SELECT ename,sal
  79. FROM emp e
  80. WHERE sal = (select max(sal) from emp where deptno=e.deptno);
  81. 4.查询每个部门工资前两名高的员工姓名,工资
  82. SELECT ename,sal
  83. FROM emp e
  84. WHERE (select count(empno) from emp where deptno=e.deptno and sal>e.sal) <=1;
  85.  
  86. 三、层次查询
  87. LEVEL:等级
  88.  
  89. SELECT
  90. FROM
  91. WHERE
  92. START WITH 起始条件
  93. CONNECT BY PRIOR 条件
  94.  
  95. 从顶向下查询:
  96. SELECT level,empno,ename,mgr,sal
  97. FROM emp
  98. START WITH empno=7788
  99. CONNECT BY PRIOR mgr = empno;
  100.  
  101. 从底向上查询:
  102. SELECT level,empno,ename,mgr,sal
  103. FROM emp
  104. START WITH upper(ename)='SMITH'
  105. CONNECT BY PRIOR empno = mgr;
  106.  
  107. 四、
  108. 1、创建数据库实例或删除实例,修改实例
  109. 配置移置工具---》database configuration assistant 相当于执行oracle安装目录下bin目录中的dbca.bat
  110.  
  111. 一个数据库实例包含三类文件:数据文件(.dbf)、控制文件(.ctl)、日志文件(.log
  112.  
  113. 2、配置监听
  114. 配置移置工具---》net configuration assistant 相当于执行Oralce安装目录bin目录中的netca.bat
  115.  
  116. 3、连接数据库:
  117. sqlplus 用户名/密码@数据库服务器IP:监听端口/实例名
  118.  
  119. sqlplus 用户名/密码@本地服务名
  120.  
  121. sqlplus 用户名/密码 ---连接的是默认数据库,如果有多个实例存在,将不清楚自己连接的到底是哪一个实例
  122.  
  123. sqlplus /@数据库服务器IP:监听端口/实例名 as sysdba;
  124.  
  125. sqlplus登录数据库成功后,切换用户
  126. conn 用户名/密码@数据库服务器IP:监听端口/实例名
  127.  
  128. conn 用户名/密码@本地服务名
  129.  
  130. conn /@数据库服务器IP:监听端口/实例名 as sysdba;
  131.  
  132. 四、数据的增删改
  133. 1、备份表
  134. 01)全表备份
  135. CREATE TABLE 新表名 AS 子查询;
  136.  
  137. ---将emp表全表备份
  138. CREATE TABLE emp_bak AS SELECT * FROM emp;
  139.  
  140. SELECT * FROM emp_bak;
  141.  
  142. (02)只备份表结构,不备份数据
  143. CREATE TABLE 新表名 AS 子查询 WHERE 1=2;
  144. CREATE TABLE emp_bak1 AS SELECT * FROM emp where 1=2;
  145.  
  146. select * from emp_bak1;
  147.  
  148. (03)在备表的同时,修改列名
  149. CREATE TABLE 新表名(新列名,新列名....) AS SELECT 列名,列名.... FROM 表名 WHERE 条件;
  150.  
  151. CREATE TABLE emp_bak2(pno,ename,work,salary) AS SELECT empno,ename,job,sal from emp;
  152.  
  153. SELECT * FROM emp_bak2;
  154.  
  155. 2、新增表数据
  156. 01)复制表数据
  157. INSERT INTO 表名(列名,列名....) 子查询;
  158.  
  159. ---将dept表的数据复制到emp表中
  160. INSERT INTO emp(empno,ename,JOB) SELECT * FROM dept;
  161.  
  162. select * from emp;
  163.  
  164. (02)插入数据
  165. INSERT INTO 表名[(列名,列名....)] VALUES(值1,值2....);
  166.  
  167. ---不写列名,给表中的所有列赋值
  168. INSERT INTO emp VALUES(8888,'zhangsan','java dev',7788,to_date('2018-07-11','yyyy-mm-dd'),4000,500,40);
  169.  
  170. INSERT INTO emp VALUES(8889,'zhangsan',DEFAULT,7788,to_date('2018-07-11','yyyy-mm-dd'),4000,500,40);
  171. 注意:当插入数据时,表没有指定列名,如果列想要插入null或是默认值,值不可以不写,要写成nulldefault
  172.  
  173. SELECT * FROM EMP;
  174. desc EMP;
  175. ALTER TABLE emp MODIFY(JOB DEFAULT 'clerk');
  176.  
  177. ---写列名,对于没有指定的列,如果有默认值直接赋默认值,如果没有默认值,给null
  178. INSERT INTO emp(empno,ename,sal) VALUES(6666,'JACK',1000);
  179.  
  180. select * from emp;
  181.  
  182. INSERT INTO emp(ename,JOB,sal,comm,deptno) VALUES('lily','salesman',2000,200,10); ---出错
  183.  
  184. ---使用子查询插入数据
  185. ---往emp表中给SALES部门新增一名员工
  186. INSERT INTO emp(empno,ename,JOB,sal,deptno)
  187. VALUES(9999,'wangwu','salesman',2000,(SELECT deptno FROM dept WHERE upper(dname)='SALES'));
  188.  
  189. 3、修改表数据
  190. UPDATE 表名 SET 列名=新值,列名=新值,... [WHERE 条件];
  191.  
  192. --修改emp表中职务为CLERK的员工的薪水,都增加20%;
  193. UPDATE emp SET sal=sal*1.2 WHERE upper(job)='CLERK';
  194.  
  195. SELECT * FROM emp;
  196.  
  197. UPDATE emp set ename='aaa',job='test',mgr=7788,sal=sal*1.3,comm=500 WHERE empno=10;
  198.  
  199. SELECT * FROM EMP WHERE EMPNO=10;
  200.  
  201. ---全表修改
  202. UPDATE emp SET sal=sal*0.8,comm=100;
  203.  
  204. ---使用子查询
  205. UPDATE EMP SET sal=sal+500,comm=200 WHERE deptno=(SELECT deptno FROM dept WHERE UPPER(dname)='SALES');
  206.  
  207. 4、删除表数据
  208. 01DELETE [FROM] 表名 [WHERE 条件];
  209.  
  210. DELETE FROM emp WHERE deptno=10;
  211.  
  212. DELETE emp WHERE deptno=20;
  213.  
  214. DELETE * FROM emp; ---错误的
  215.  
  216. DELETE emp;
  217.  
  218. select * from emp;
  219.  
  220. INSERT INTO emp SELECT * FROM emp_bak;
  221.  
  222. (02)截断表:删除全表数据
  223. TRUNCATE TABLE 表名;
  224.  
  225. truncate table emp;
  226.  
  227. DELETE TRUNCATE的区别:
  228. DELETE 可以删除部分数据,truncate只能删除全表数据
  229. DELETE 删除的数据可以回滚,truncate不允许回滚
  230. DELETE删除的速度比truncate慢,因为delete要写日志
  231.  
  232. 5、事务:TPL
  233.  
  234. DQL:数据查询语言 SELECT
  235. DML:数据操作语言 INSERT DELETE UPDATE
  236. DDL:数据定义语言 CREATE ALTER DROP
  237. DCL:数据控制语言 GRANT REVOKE
  238. TPL:事务语言 COMMIT,ROLLBACK,SAVEPOINT
  239.  
  240. 1commit:提交
  241. 2ROLLBACK; 回滚
  242. 3SAVEPOINT 保存点名; 设置事务保存点
  243. 4rollback TO 事务保存点; --回滚至事务保存点
  244.  
  245. select * from emp;
  246.  
  247. INSERT INTO emp VALUES(8888,'zhangsan','java dev',7788,to_date('2018-07-11','yyyy-mm-dd'),4000,500,40);
  248.  
  249. INSERT INTO emp VALUES(8889,'zhangsan',DEFAULT,7788,to_date('2018-07-11','yyyy-mm-dd'),4000,500,40);
  250. savepoint aa;
  251. INSERT INTO emp(empno,ename,sal) VALUES(6666,'JACK',1000);
  252.  
  253. insert into emp select * from emp_bak;
  254.  
  255. ROLLBACK TO aa;
  256.  
  257. rollback;
  258.  
  259. INSERT INTO emp VALUES(8888,'zhangsan','java dev',7788,to_date('2018-07-11','yyyy-mm-dd'),4000,500,40);
  260.  
  261. INSERT INTO emp VALUES(8889,'zhangsan',DEFAULT,7788,to_date('2018-07-11','yyyy-mm-dd'),4000,500,40);
  262. commit;
  263. INSERT INTO emp(empno,ename,sal) VALUES(6666,'JACK',1000);
  264.  
  265. INSERT INTO emp SELECT * FROM emp_bak;
  266.  
  267. CREATE TABLE dept_bak AS SELECT * FROM dept;
  268.  
  269. select * from emp;
  270.  
  271. ROLLBACK;
  272.  
  273. 五、新增表:
  274. 1、查询表结构: sqlplus命令
  275. DESC 表名;
  276.  
  277. 2、创建表:
  278. CREATE TABLE 表名(
  279. 列名 数据类型 [DEFAULT 默认值 约束],
  280. 列名 数据类型 [DEFAULT 默认值 约束],
  281. ...
  282. 列名 数据类型 [DEFAULT 默认值 约束]
  283. );
  284.  
  285. 3、数据类型:
  286. 数值型: NUMBER
  287. 字符串类型: VARCHAR2
  288. 日期型 DATE
  289. 大对象类型: clob,blob
  290.  
  291. (01)数值 NUMBER(p,s) p有效位数,s精度
  292. s=0:NUMBER(p)
  293. s>0:小数点右边的位数为s,小数点左边的有效位数为p-s
  294. s<0:小数点左边的有效位数为:p+|s|位
  295.  
  296. CREATE TABLE A(
  297. id1 NUMBER(5),
  298. id2 NUMBER(5,2),
  299. id3 NUMBER(5,-2)
  300. );
  301.  
  302. select * from a;
  303. INSERT INTO A(id1) VALUES(455.55);
  304. INSERT INTO A(id1) VALUES(45555.55);
  305. INSERT INTO A(id1) VALUES(455555); ---插入失败
  306.  
  307. INSERT INTO A(id2) VALUES(455.55);
  308. INSERT INTO A(id2) VALUES(455.55555);
  309. INSERT INTO A(id2) VALUES(455);
  310.  
  311. INSERT INTO A(id3) VALUES(455.55);
  312. INSERT INTO A(id3) VALUES(45555);
  313. INSERT INTO A(id3) VALUES(4555555);
  314. INSERT INTO A(id3) VALUES(45555555);---插入失败
  315.  
  316. (02)字符串类型
  317. CHAR(n):固长字符串,无论字符串的长度是否为N,结果都为n,不足的补空格
  318. VARCHAR2(n):变长字符串,字符串有几位占用几位
  319.  
  320. drop table a;
  321.  
  322. CREATE TABLE A(
  323. name1 CHAR(10) references emp(ename),
  324. name2 VARCHAR2(10)
  325. );
  326.  
  327. INSERT INTO A VALUES('aaa','aaa');
  328. INSERT INTO A VALUES('aaabbbccca','aaa');
  329. SELECT name1,LENGTH(name1),name2,LENGTH(name2)
  330. FROM A;
  331.  
  332. (03)日期型:
  333. 默认日期:日-月-年
  334. DROP TABLE A;
  335.  
  336. CREATE TABLE A(
  337. birthday DATE
  338. );
  339.  
  340. INSERT INTO A VALUES('10-10月-2018');
  341. insert into a values(to_date('','yyyymmdd'));
  342.  
  343. SELECT * FROM A;
  344.  
  345. (04)对象(4G以内):
  346. CLOB:文件对象
  347. blob:二进制对象
  348.  
  349. drop table a;
  350.  
  351. CREATE TABLE A(
  352. obj CLOB,
  353. obj2 BLOB
  354. );
  355.  
  356. insert into a values('fdcvgsjkmadqwjkrwerghejwklfdsnmkasdfbwekrqwetrwerqwere','');
  357.  
  358. select * from a;
  359.  
  360. 六. 修改表
  361. 1.添加列
  362. ALTER TABLE 表名 ADD(列名 数据类型 [DEFAULT 默认值 约束],列名 数据类型 [DEFAULT 默认值 约束]...);
  363. 2.修改列的属性:修改数据类型,长度,默认值,约束
  364. alter table 表名 modify(列名 数据类型 [DEFAULT 默认值 约束]...);
  365. 3.修改列名
  366. alter table 表名 rename column 旧的列名 to 新的列名;
  367. 4.删除列
  368. alter table 表名 drop column 列名;
  369. 5.修改表名
  370. rename 旧的表名 to 新的表名;
  371.  
  372. 七.删除表
  373. drop table 表名 [cascade constraints];
  374.  
  375. CASCADE CONSTRAINTS:---当主键记录被外键引用时,可以添加此选项删除表的同时删除相关约束.

Oracle.数据的增删改、表操作(创建,修改,删除)、数据类型的更多相关文章

  1. SQLAlchemy02 /SQLAlchemy对数据的增删改查操作、属性常用数据类型详解

    SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 目录 SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 1.用se ...

  2. SQLAlchemy(二):SQLAlchemy对数据的增删改查操作、属性常用数据类型详解

    SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 目录 SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 1.用se ...

  3. Python教程:连接数据库,对数据进行增删改查操作

    各位志同道合的同仁可以点击上方关注↑↑↑↑↑↑ 本教程致力于程序员快速掌握Python语言编程. 本文章内容是基于上次课程Python教程:操作数据库,MySql的安装详解 和python基础知识之上 ...

  4. MySQL进阶11--DDL数据库定义语言--库创建/修改/删除--表的创建/修改/删除/复制

    /*进阶 11 DDL 数据库定义语言 库和表的管理 一:库的管理:创建/修改/删除 二:表的管理:创建/修改/删除 创建: CREATE DATABASE [IF NOT EXISTS] 库名; 修 ...

  5. 对oracle数据库进行增删改更新操作,executeUpdate()执行卡住了

    原因是:oracle数据库更新数据后需要commit,不然会堵塞,就会卡住 那么每次调用executeUpdate()完后,数据库要自动commit才可以. 我的基类加了一下,注意红色字体部分代码: ...

  6. 关于oracle的基础增删改查操作总结

    ① 进入数据库: sqlplus“/as sysdba” 或者sqlplus / as sysdba 注:完整格式:  sqlplus“用户名/密码@数据库名as sysdba” 注:请注意,sqlp ...

  7. oracle--二维表的操作创建修改删除

    oracle学习内容 oracle的管理系统学习 oracle的数据管理学习 oracle的用户管理 oracle二维表管理 创建表和字段讲解 --创建表学习 1. 创建表的基本语句:create t ...

  8. EF5 通用数据层 增删改查操作,泛型类(转)

    using System; using System.Collections.Generic; using System.Data.Entity.Infrastructure; using Syste ...

  9. 封装MySQL的单例,连接数据库并对数据进行增删改查操作

    单例: 一个类只能有一个对象 应用场景:多次请求数据库只需要一个连接对象. 实现:三私一公 1.私有的静态属性用来保存对象的单例2.私有的构造方法用来阻止在类的外部实例化3.私有的__clone阻止在 ...

随机推荐

  1. PHP直接将文件流转换为字符串

    有时候不需要图片直接输出到浏览器,需要如下处理! 输出到浏览器 $qrCode = new QrCode(); $qrCode ->setText('Life is too short to b ...

  2. jsp技术和el表达式和jstl技术

    注:本文参考黑马视频的讲义 jsp技术 1.jsp脚本 )<%java代码%> ----- 内部的java代码翻译到service方法的内部 )<%=java变量或表达式> - ...

  3. MVC后台获取数据和插入数据的三种方式【二】

    MVC模式下,从前端获取数据返回后台,总共有三种形式.下面的代码示例将演示如何将数据返回到后端. 一.首先我们看看表单代码,注意input标签中name的值. <html> <hea ...

  4. ASP.net 网站开发知识点总结

    一.常用技术概括及介绍 1. SQL server:处理数据库的设计 2. asp.net  3. html            :前端网页 4. css :网页的布局设计 5. JavaScrip ...

  5. JNI手动释放内存(避免内存泄露)

    . 哪些需要手动释放? 不要手动释放(基本类型): jint , jlong , jchar 需要手动释放(引用类型,数组家族): jstring,jobject ,jobjectArray,jint ...

  6. ZOJ 4053 Couleur

    4053 思路: 主席树 先分别求前缀和后缀的逆序数 然后要求某一段的逆序数,就可以根据前缀或着后缀根据容斥求出答案, 这样需要枚举这一段中的数,求之前或者之后有多少个比他大或比他小的数, 这个可以通 ...

  7. css设置字体单行,多行超出省略号显示

    单行: overflow: hidden; text-overflow:ellipsis; white-space: nowrap; 多行 display: -webkit-box; -webkit- ...

  8. sql server auto increment - trace flag 272

    从 sql 2012 开始, 微软为了让 insert 时 auto increment 快一些,做了一个 cache 的机制. 这个机制虽然好,但是也有麻烦的情况,如果你的 sql 突然 resta ...

  9. 编写脚本,出现 TypeError: exceptions must be old-style classes or derived from BaseException, not unicode怎样解决?

    小编使用robot framework,在编写安卓自动化脚本时,出现这样的情况: 在网上搜了好久,发现都是python的解决方法,到底怎样解决robot里面的问题呢?最终发现: (1)代码中我是这样写 ...

  10. 【转载】LINUX下安装wget命令(SFTP实现法)

    如何安装wget命令. 方法一:通过yum 命令行为:yum install wget 完成.此操作很简单,但是我安装的linux是centos的最小版本,运行上述命令时会出现无法连接到源网站(大概是 ...