Oracle.数据的增删改、表操作(创建,修改,删除)、数据类型
SELECT ename,dname FROM emp,dept WHERE emp.deptno=dept.deptno; SELECT dname,loc FROM dept; SELECT JOB,ename FROM emp; SELECT ename,dname FROM emp,dept WHERE emp.deptno=dept.deptno; 注意:
批量执行SQL语句时,写成一个SQL脚本,使用SQLPLUS命令 @路径/A.SQL 2、交集运算:
INTERSECT: 查询两个查询语句中重复的部分 SELECT * FROM EMP WHERE deptno=30
INTERSECT
SELECT * FROM emp WHERE upper(JOB)='MANAGER'; 3、差运算:
minus:第一个查询语句的结果减去交集 SELECT * FROM EMP WHERE deptno=30
minus
SELECT * FROM emp WHERE upper(JOB)='MANAGER'; SELECT * FROM emp WHERE upper(JOB)='MANAGER'
MINUS
SELECT * FROM EMP WHERE deptno=30; select avg(sal) from emp where deptno=30; 二、相关子查询
---查询员工姓名,部门名称
SELECT ename,dname
FROM emp,dept
WHERE emp.deptno=dept.deptno; SELECT ename,(SELECT dname FROM dept where deptno=emp.deptno)
FROM emp; ---查询员工的姓名,职务,要比员工所在职务的平均薪水高的。
SELECT ename,JOB
FROM EMP A
WHERE sal>(SELECT avg(sal) FROM emp WHERE JOB=A.JOB); --2.查询工资为其部门最低工资的员工编号,姓名,工资
SELECT empno,ename,sal
FROM emp e
WHERE sal=(SELECT MIN(sal) FROM emp WHERE deptno=e.deptno); 2、exists:
查询哪些人是经理?
SELECT empno,ename,sal
FROM emp
WHERE empno in(select mgr from emp where mgr is not null); SELECT empno,ename,sal
FROM emp m
WHERE EXISTS (SELECT empno FROM emp WHERE mgr=m.empno); 1.列出至少有一个雇员的所有部门名称。
SELECT dname
FROM dept
WHERE exists(SELECT empno FROM emp WHERE deptno=dept.deptno);
2.列出一个雇员都没有的所有部门名称。
SELECT dname
FROM dept
WHERE NOT EXISTS(SELECT empno FROM emp WHERE deptno=dept.deptno); 1.查询薪水多于他所在部门平均薪水的雇员名字,部门号。
SELECT ename,deptno
FROM emp e
WHERE sal>(select avg(sal) from emp where deptno=e.deptno);
2.查询员工姓名和直接上级的名字。
SELECT ename,(SELECT ename FROM emp WHERE empno=e.mgr)
FROM emp e;
3.查询每个部门工资最高的员工姓名,工资。
SELECT ename,sal
FROM emp e
WHERE sal = (select max(sal) from emp where deptno=e.deptno);
4.查询每个部门工资前两名高的员工姓名,工资
SELECT ename,sal
FROM emp e
WHERE (select count(empno) from emp where deptno=e.deptno and sal>e.sal) <=1; 三、层次查询
LEVEL:等级 SELECT
FROM
WHERE
START WITH 起始条件
CONNECT BY PRIOR 条件 从顶向下查询:
SELECT level,empno,ename,mgr,sal
FROM emp
START WITH empno=7788
CONNECT BY PRIOR mgr = empno; 从底向上查询:
SELECT level,empno,ename,mgr,sal
FROM emp
START WITH upper(ename)='SMITH'
CONNECT BY PRIOR empno = mgr; 四、
1、创建数据库实例或删除实例,修改实例
配置移置工具---》database configuration assistant 相当于执行oracle安装目录下bin目录中的dbca.bat 一个数据库实例包含三类文件:数据文件(.dbf)、控制文件(.ctl)、日志文件(.log) 2、配置监听
配置移置工具---》net configuration assistant 相当于执行Oralce安装目录bin目录中的netca.bat 3、连接数据库:
sqlplus 用户名/密码@数据库服务器IP:监听端口/实例名 sqlplus 用户名/密码@本地服务名 sqlplus 用户名/密码 ---连接的是默认数据库,如果有多个实例存在,将不清楚自己连接的到底是哪一个实例 sqlplus /@数据库服务器IP:监听端口/实例名 as sysdba; sqlplus登录数据库成功后,切换用户
conn 用户名/密码@数据库服务器IP:监听端口/实例名 conn 用户名/密码@本地服务名 conn /@数据库服务器IP:监听端口/实例名 as sysdba; 四、数据的增删改
1、备份表
(01)全表备份
CREATE TABLE 新表名 AS 子查询; ---将emp表全表备份
CREATE TABLE emp_bak AS SELECT * FROM emp; SELECT * FROM emp_bak; (02)只备份表结构,不备份数据
CREATE TABLE 新表名 AS 子查询 WHERE 1=2;
CREATE TABLE emp_bak1 AS SELECT * FROM emp where 1=2; select * from emp_bak1; (03)在备表的同时,修改列名
CREATE TABLE 新表名(新列名,新列名....) AS SELECT 列名,列名.... FROM 表名 WHERE 条件; CREATE TABLE emp_bak2(pno,ename,work,salary) AS SELECT empno,ename,job,sal from emp; SELECT * FROM emp_bak2; 2、新增表数据
(01)复制表数据
INSERT INTO 表名(列名,列名....) 子查询; ---将dept表的数据复制到emp表中
INSERT INTO emp(empno,ename,JOB) SELECT * FROM dept; select * from emp; (02)插入数据
INSERT INTO 表名[(列名,列名....)] VALUES(值1,值2....); ---不写列名,给表中的所有列赋值
INSERT INTO emp VALUES(8888,'zhangsan','java dev',7788,to_date('2018-07-11','yyyy-mm-dd'),4000,500,40); INSERT INTO emp VALUES(8889,'zhangsan',DEFAULT,7788,to_date('2018-07-11','yyyy-mm-dd'),4000,500,40);
注意:当插入数据时,表没有指定列名,如果列想要插入null或是默认值,值不可以不写,要写成null或default SELECT * FROM EMP;
desc EMP;
ALTER TABLE emp MODIFY(JOB DEFAULT 'clerk'); ---写列名,对于没有指定的列,如果有默认值直接赋默认值,如果没有默认值,给null
INSERT INTO emp(empno,ename,sal) VALUES(6666,'JACK',1000); select * from emp; INSERT INTO emp(ename,JOB,sal,comm,deptno) VALUES('lily','salesman',2000,200,10); ---出错 ---使用子查询插入数据
---往emp表中给SALES部门新增一名员工
INSERT INTO emp(empno,ename,JOB,sal,deptno)
VALUES(9999,'wangwu','salesman',2000,(SELECT deptno FROM dept WHERE upper(dname)='SALES')); 3、修改表数据
UPDATE 表名 SET 列名=新值,列名=新值,... [WHERE 条件]; --修改emp表中职务为CLERK的员工的薪水,都增加20%;
UPDATE emp SET sal=sal*1.2 WHERE upper(job)='CLERK'; SELECT * FROM emp; UPDATE emp set ename='aaa',job='test',mgr=7788,sal=sal*1.3,comm=500 WHERE empno=10; SELECT * FROM EMP WHERE EMPNO=10; ---全表修改
UPDATE emp SET sal=sal*0.8,comm=100; ---使用子查询
UPDATE EMP SET sal=sal+500,comm=200 WHERE deptno=(SELECT deptno FROM dept WHERE UPPER(dname)='SALES'); 4、删除表数据
(01)DELETE [FROM] 表名 [WHERE 条件]; DELETE FROM emp WHERE deptno=10; DELETE emp WHERE deptno=20; DELETE * FROM emp; ---错误的 DELETE emp; select * from emp; INSERT INTO emp SELECT * FROM emp_bak; (02)截断表:删除全表数据
TRUNCATE TABLE 表名; truncate table emp; DELETE 和TRUNCATE的区别:
DELETE 可以删除部分数据,truncate只能删除全表数据
DELETE 删除的数据可以回滚,truncate不允许回滚
DELETE删除的速度比truncate慢,因为delete要写日志 5、事务:TPL DQL:数据查询语言 SELECT
DML:数据操作语言 INSERT DELETE UPDATE
DDL:数据定义语言 CREATE ALTER DROP
DCL:数据控制语言 GRANT REVOKE
TPL:事务语言 COMMIT,ROLLBACK,SAVEPOINT 1、commit:提交
2、ROLLBACK; 回滚
3、SAVEPOINT 保存点名; 设置事务保存点
4、rollback TO 事务保存点; --回滚至事务保存点 select * from emp; INSERT INTO emp VALUES(8888,'zhangsan','java dev',7788,to_date('2018-07-11','yyyy-mm-dd'),4000,500,40); INSERT INTO emp VALUES(8889,'zhangsan',DEFAULT,7788,to_date('2018-07-11','yyyy-mm-dd'),4000,500,40);
savepoint aa;
INSERT INTO emp(empno,ename,sal) VALUES(6666,'JACK',1000); insert into emp select * from emp_bak; ROLLBACK TO aa; rollback; INSERT INTO emp VALUES(8888,'zhangsan','java dev',7788,to_date('2018-07-11','yyyy-mm-dd'),4000,500,40); INSERT INTO emp VALUES(8889,'zhangsan',DEFAULT,7788,to_date('2018-07-11','yyyy-mm-dd'),4000,500,40);
commit;
INSERT INTO emp(empno,ename,sal) VALUES(6666,'JACK',1000); INSERT INTO emp SELECT * FROM emp_bak; CREATE TABLE dept_bak AS SELECT * FROM dept; select * from emp; ROLLBACK; 五、新增表:
1、查询表结构: sqlplus命令
DESC 表名; 2、创建表:
CREATE TABLE 表名(
列名 数据类型 [DEFAULT 默认值 约束],
列名 数据类型 [DEFAULT 默认值 约束],
...
列名 数据类型 [DEFAULT 默认值 约束]
); 3、数据类型:
数值型: NUMBER
字符串类型: VARCHAR2
日期型 : DATE
大对象类型: clob,blob (01)数值 NUMBER(p,s) p有效位数,s精度
s=0:NUMBER(p)
s>0:小数点右边的位数为s,小数点左边的有效位数为p-s位
s<0:小数点左边的有效位数为:p+|s|位 CREATE TABLE A(
id1 NUMBER(5),
id2 NUMBER(5,2),
id3 NUMBER(5,-2)
); select * from a;
INSERT INTO A(id1) VALUES(455.55);
INSERT INTO A(id1) VALUES(45555.55);
INSERT INTO A(id1) VALUES(455555); ---插入失败 INSERT INTO A(id2) VALUES(455.55);
INSERT INTO A(id2) VALUES(455.55555);
INSERT INTO A(id2) VALUES(455); INSERT INTO A(id3) VALUES(455.55);
INSERT INTO A(id3) VALUES(45555);
INSERT INTO A(id3) VALUES(4555555);
INSERT INTO A(id3) VALUES(45555555);---插入失败 (02)字符串类型
CHAR(n):固长字符串,无论字符串的长度是否为N,结果都为n,不足的补空格
VARCHAR2(n):变长字符串,字符串有几位占用几位 drop table a; CREATE TABLE A(
name1 CHAR(10) references emp(ename),
name2 VARCHAR2(10)
); INSERT INTO A VALUES('aaa','aaa');
INSERT INTO A VALUES('aaabbbccca','aaa');
SELECT name1,LENGTH(name1),name2,LENGTH(name2)
FROM A; (03)日期型:
默认日期:日-月-年
DROP TABLE A; CREATE TABLE A(
birthday DATE
); INSERT INTO A VALUES('10-10月-2018');
insert into a values(to_date('','yyyymmdd')); SELECT * FROM A; (04)对象(4G以内):
CLOB:文件对象
blob:二进制对象 drop table a; CREATE TABLE A(
obj CLOB,
obj2 BLOB
); insert into a values('fdcvgsjkmadqwjkrwerghejwklfdsnmkasdfbwekrqwetrwerqwere',''); select * from a; 六. 修改表
1.添加列
ALTER TABLE 表名 ADD(列名 数据类型 [DEFAULT 默认值 约束],列名 数据类型 [DEFAULT 默认值 约束]...);
2.修改列的属性:修改数据类型,长度,默认值,约束
alter table 表名 modify(列名 数据类型 [DEFAULT 默认值 约束]...);
3.修改列名
alter table 表名 rename column 旧的列名 to 新的列名;
4.删除列
alter table 表名 drop column 列名;
5.修改表名
rename 旧的表名 to 新的表名; 七.删除表
drop table 表名 [cascade constraints]; CASCADE CONSTRAINTS:---当主键记录被外键引用时,可以添加此选项删除表的同时删除相关约束.
Oracle.数据的增删改、表操作(创建,修改,删除)、数据类型的更多相关文章
- SQLAlchemy02 /SQLAlchemy对数据的增删改查操作、属性常用数据类型详解
		
SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 目录 SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 1.用se ...
 - SQLAlchemy(二):SQLAlchemy对数据的增删改查操作、属性常用数据类型详解
		
SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 目录 SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 1.用se ...
 - Python教程:连接数据库,对数据进行增删改查操作
		
各位志同道合的同仁可以点击上方关注↑↑↑↑↑↑ 本教程致力于程序员快速掌握Python语言编程. 本文章内容是基于上次课程Python教程:操作数据库,MySql的安装详解 和python基础知识之上 ...
 - MySQL进阶11--DDL数据库定义语言--库创建/修改/删除--表的创建/修改/删除/复制
		
/*进阶 11 DDL 数据库定义语言 库和表的管理 一:库的管理:创建/修改/删除 二:表的管理:创建/修改/删除 创建: CREATE DATABASE [IF NOT EXISTS] 库名; 修 ...
 - 对oracle数据库进行增删改更新操作,executeUpdate()执行卡住了
		
原因是:oracle数据库更新数据后需要commit,不然会堵塞,就会卡住 那么每次调用executeUpdate()完后,数据库要自动commit才可以. 我的基类加了一下,注意红色字体部分代码: ...
 - 关于oracle的基础增删改查操作总结
		
① 进入数据库: sqlplus“/as sysdba” 或者sqlplus / as sysdba 注:完整格式: sqlplus“用户名/密码@数据库名as sysdba” 注:请注意,sqlp ...
 - oracle--二维表的操作创建修改删除
		
oracle学习内容 oracle的管理系统学习 oracle的数据管理学习 oracle的用户管理 oracle二维表管理 创建表和字段讲解 --创建表学习 1. 创建表的基本语句:create t ...
 - EF5 通用数据层 增删改查操作,泛型类(转)
		
using System; using System.Collections.Generic; using System.Data.Entity.Infrastructure; using Syste ...
 - 封装MySQL的单例,连接数据库并对数据进行增删改查操作
		
单例: 一个类只能有一个对象 应用场景:多次请求数据库只需要一个连接对象. 实现:三私一公 1.私有的静态属性用来保存对象的单例2.私有的构造方法用来阻止在类的外部实例化3.私有的__clone阻止在 ...
 
随机推荐
- label和span的区别
			
label标签主要用于绑定一个表单元素,当点击label标签的时候,被绑定的表单元素就会获得输入焦点. <div class="form-group col-lg-12"&g ...
 - MySQL 的 DISTINCT 应用于2列时
			
SELECT DISTINCT vend_id告诉MySQL只返回不同(唯一)的 vend_id行,也就是在vend_id 有重复的行中,只保留一行,其他的不作输出.比如我创建了如下的student表 ...
 - kotlin - 空安全
			
空安全设计的操作符号 操作符 作用 ? 可空操作符,声明该值可为空 ?. 安全调用操作符 b?.length 如果b非空,就返回b.length,否则返回 null !! 非空断言运算符, ...
 - 关于table动态添加数据 单元格合并 数组合并
			
var newArr = [ {"BranchID":1,"BranchName":"城二","BranchFullName&qu ...
 - caffe在solverstate的基础上继续训练模型
			
以mnist数据集为例: bat训练脚本: Build\x64\Release\caffe.exe train --solver=examples/mnist/lenet_solver.prototx ...
 - pip3 install requests Cannot open D:\Python35\Scripts\pip3-script.py
			
1.问题描述: 使用pip(或pip3)指令安装模块时,出现了Cannot open D:\Python35\Scripts\pip3-script.py的报错信息 2.原因分析: pip安装出错 3 ...
 - LeetCode--012--整数转罗马数字(java)
			
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并 ...
 - 在项目中使用react
			
1. 运行 ’cnpm i react react-dom -S' 安装包 react:专门用于创建组件和虚拟DOM,同时组件的生命周期都在这个包中 react-dom:专门进行DOM操作,主要应用场 ...
 - mysql 8.0.12 修改root密码
			
use mysql: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; FLUSH PRIVI ...
 - python-flask-Flask-SQLAlchemy与Flask-Migrate联合进行数据化迁移
			
使用步骤: 1. 引入Flask-SQLAlchemy from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() 2. 注册 Flask-SQ ...