数据库 ---> 数据库实例 ---> 表空间(逻辑单位)(用户) ---> 数据文件(物理单位)
通常情况下,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.统计
3.别名查询
4.字符串拼接
在Oracle 中 ,双引号主要是别名的时候使用, 单引号是使用的值, 是字符5.去重
6.排序
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
讨论: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似乎更灵活一些。