首页 > 数据库技术 > 详细

oracle基础(CRUD)

时间:2018-08-15 23:57:46      阅读:251      评论:0      收藏:0      [点我收藏+]

--oracle
--关系数据库中有三种方式:一对一,一对多, 多对多
--SQL语句分类:
--DQL(数据查询语言):select
--DML(数据操作语言):insert/update/delete/merge
--DDL(数据定义语言):create/alert/drop/truncate
--DCL(数据控制语言):grant/revoke
--约束:保持数据的完整性,数据的精确性和可靠性
--主键约束:primary key
--外键约束:foreign key
--非空约束:not null
--默认约束:default
--唯一约束:unique
--检查约束:check
--简单操作
--创建表
create table userinfo(
USERNAME varchar2(50) ,
PASSWORD number,
birth date);
--查询语句(以emp,dept为例)
select * from emp;--查询所有数据
select empno,ename,job from emp; --查询指定数据
select distinct mgr from emp;--去除重复数据
select sal as"工资" from emp;--给sal重命名(类别名添加双引号)
select * from emp where sal>2500;--带有限制条件where
select * from emp where hiredate>‘01-1月-1981‘;--1981年1月1日后的日期,注意时间的格式,默认格式‘01-1月-1981‘
--特殊比较运算符
select * from emp where sal between 2000 and 3000;--between...and ...确定范围,两个值之间,包括比较值
select * from emp where sal in (3000,5000);--in确定集合(是3000和5000的sal)
select * from emp where ename like ‘_O%‘--like字符串匹配查询 _:代替一个字符 %:代替任意长度字符
select * from emp where ename like ‘_\O%‘ escape ‘\‘;--escape转义符“\”可以选择数据中含有_的数据
select * from emp where mgr is null; --is null(判断空值)
--逻辑运算符(and,or,not)
select * from emp where sal>=4200 and sal<=6000;--and
select * from emp where sal>4500 or hiredate>‘01-1月-1981‘;--a或b
--order...by...
select * from emp order by sal asc;--排序asc(升序,可不写),desc(降序)
--删除表
drop table userinfo;
--dual
select * from dual;
select * from userinfo;
--更新
update userinfo set username=‘hello‘ where username=‘haha‘;
--插入
insert into userinfo values(‘haha‘,‘haha123‘,‘123@qq.com‘);
insert into userinfo values(‘hehe‘,‘hehe111‘,‘111@qq.com‘);
insert into userinfo(username)select ename from emp;--将emp表中的ename放在userinfo中
--删除
delete userinfo where username=‘hello‘;
delete userinfo where password is null;
--多表连接
select * from emp e,dept d where e.deptno=d.deptno;--等值连接
--外连接--(+)放在没有与之相匹配的表的那一端
select ename,loc from emp e left outer join dept d on e.deptno=d.deptno;--左外连接
select e.* from emp e right outer join dept d on e.deptno=d.deptno where sal>2000;--右外连接
select * from emp e full outer join dept d on e.deptno=d.deptno;--全连接
--内连接(等值连接)
select ename,loc from emp e join dept d on e.deptno=d.deptno;
--自连接(查询员工姓名和所对应的经理的姓名)
select w.ename 员工姓名,m.ename 经理姓名 from emp w,emp m where w.mgr=m.empno;
--交叉连接(笛卡尔积)
select * from emp cross join dept;
select * from emp;
select * from dept;
--自然连接
select * from emp natural join dept;
--usering子句
select * from emp join dept using(deptno);
--on子句
select * from emp e join dept d on e.deptno=d.deptno;
--分组函数
--min max sum avg count
--group by ... having ...
--无关子查询:先执行子查询,再执行父查询
--相关子查询:先用父查询得到一行数据,利用其中的数据进行判断。
--查询入职最早的前5名员工姓名
select ename from emp e where (select count(*) from emp where hiredate<e.hiredate)<5;
--查询不是经理的员工姓名(is not null 有空值时使用)
select ename from emp where empno not in(select mgr from emp where mgr is not null);
--分页查询
select * from (select rownum r,e.* from emp e where rownum<=5)where r>0;
select * from (select rownum r,emp.* from emp)where r>0 and r<=5;

--关键字:select...from...where...group by...having...order by...
--优先级:from>where>group by>having>select>order by

 

oracle基础(CRUD)

原文:https://www.cnblogs.com/sunda847882651/p/9484278.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!