oracle学习记录一

数据库  ---> 数据库实例  --->  表空间(逻辑单位)(用户)  ---> 数据文件(物理单位)

通常情况下,ORacle数据库只会有一个实例ORCL,

新建一个项目:
     MYSQL : 创建一个数据库,创建相应的表

     Oracle: 创建一个表空间,创建用户,用户去创建表

Oracle和MYSQL的差别

Oracle是多用户的, MYSQL是多数据库的


查询语句的结构:

select [列名] [*] from 表名 [where 条件] [group by 分组条件] [having 过滤] [order by 排序]


一.oracle的常用语句
1.dual:  oracle中的虚表 ,伪表, 主要是用来补齐语法结构
select sysdate from dual;
2.统计

-- 统计,直接写一个常量比*号要高效
select count ( 1 ) from emp;
select count (*) from emp;

3.别名查询

-- 别名查询: 使用as 关键字, 可以省略
-- 别名中不能有特殊字符或者关键字, 如果有就加双引号
select ename as "姓    名" from emp;

4.字符串拼接
在Oracle 中 ,双引号主要是别名的时候使用, 单引号是使用的值, 是字符
-- 字符串拼接  || oracle特有的拼接字符串
select '姓名' || ename from emp;

5.去重

--单列去除重复
select distinct job from emp;
--多列去除重复的
select distinct job,deptno from emp;

6.排序
-- 查询员工信息,按奖金由高到低排序 ,排序注意null的问题  nulls: 默认first 和 last
select * from emp order by comm desc nulls last ;

--同时排列多列, 用逗号隔开
--查询部门编号和按照工资 , 按照部门升序排序, 工资降序排序
select deptno, sal from emp order by deptno asc , sal desc ;

7.条件查询 : [where后面的写法]   

        关系运算符: >  >=  =  <  <=  !=  <>
        逻辑运算符: and or 
        其它运算符:
               like 模糊查询
               in(set) 在某个集合内
               between..and.. 在某个区间内
               is null  判断为空
               is not null 判断不为空


8.排序 : order by 
          升序: asc    ascend
          降序: desc   descend
          
          排序注意null问题 : nulls first | last
          同时排列多列, 用逗号隔开

9.group by 分组

select name,password, count(name) from my_test group by name

提示错误是NOT A GROUP BY EXPRESSION

必须这样写才行

select name,password, count(name) from my_test group by name,password

注意:oracle中,group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面

讨论:mysql和oracle对group by的解析是不一样的!

mysql:

SELECT s.SName, sc.COUNT(CID) c
FROM SC sc JOIN S s ON sc.SID = s. SID
GROUP BY s.SID
HAVING c = ( SELECT COUNT(*) FROM C )

oracle:

SELECT s.SID, s.SName, sc.COUNT(CID) c
FROM   SC sc JOIN S s ON sc.SID = s.SID
GROUP BY s.SID, s.SName
HAVING c = ( SELECT COUNT(*) FROM C )

大家可以看到区别了,mysql对group by子句的限制有所放宽,除了集合函数之外的被查询字段也可以不参与分组。相反oracle则是严格要求,所以感觉mysql似乎更灵活一些。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值