首页 > 代码库 > 8.26 课堂自由笔记 还有考皮的老师笔录
8.26 课堂自由笔记 还有考皮的老师笔录
1数据库表文件
表空间
解析:一个数据库下可以开N个表空间,一个表空间可以包含N个数据文件.表空间是逻辑概念。
1.2.全局数据库名
全局数据库名是为了保证你的数据库系统中每个数据库名称都是唯一的,由数据库域名加上数据库名构成;
全局数据库名=数据库名+数据库域名,如福建节点的全局数据库名是:oradb.fj.jtyz
1.3.模式和用户可以看成对等的关系。从A模式下切换到B模式。
2. 关于listener.ora位置
修改该界面上的数据,会影响指定路径的监听配置文件
H:\app\happy\product\11.2.0\dbhome_1\NETWORK\ADMIN
3.端口号
sql server 1433
mysql 3306
oracle 1521
4.数据库和实例的关系
数据库是:物理系统中文件的集合.
实例: 当数据挂载成功在,内存中的内容.
5.千万不要在Oracle中创建自己的数据库
1.在磁盘上占用至少一个G的空间
2.会在服务中挂载多个服务器
结论:只能在Oracle中创建表 不能创建数据库
5.角色和权限
权限管理
系统:公安厅长登录
小警察 登录
用户(1) 角色(n) 权限
1个角色可以有n个角色,一个角色可以隶属n个用户
1个角色可以有n个权限
Oracle包括两大类权限(Privileges),一种是系统权限,另外一种是对象权限。
CONNECT角色: --是授予最终用户的典型权利,最基本的
CREATE SESSION --建立会话
RESOURCE角色: --是授予开发人员的
CREATE CLUSTER --建立聚簇
CREATE PROCEDURE --建立过程
CREATE SEQUENCE --建立序列
CREATE TABLE --建表
CREATE TRIGGER --建立触发器
CREATE TYPE --建立类型
CREATE OPERATOR --创建操作者
CREATE INDEXTYPE --创建索引类型
DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。
6.分页代码
select * from
(
Select emp.*,rownum as rn
from
(
select * from emp
)emp
where rownum<=9
)
where rn>=7
注解(自我记忆法):rownum是不现实>=的所以在双重括号中 应用rownum显示<=的特性 筛选出<=条件
用as得到rn rn可以显示>= 的到范围
需要在2括号中应用emp 否则报错
7.Oracle数据库忘记密码解决方案:
01.
02.alter user system identified by 新密码;
解锁用户
alter user scott account unlock;
切换用户
SQL>conn scott/新密码
8. 启动、关闭数据库
OracleService<SID>:数据库服务
OracleOraDb11g_home1TNSListener :数据库监听服务
OracleDBConsole<SID>:企业管理器服务
在Oracle11G中通过如下网址访问企业管理服务
https://localhost.localdomain:1158/em/console/logon/logon
09.配置网络服务
查找listener.ora文件和tnsnames.ora路径
解析:C:\app\Happy\product\11.2.0\dbhome_1\NETWORK\ADMIN
这两个文本配置文件直接受到如下图的管理
PLSQL Developer:
1.在没有安装Oracle服务的Pc上使用,必须使用OCI(注册机组件!)
2.copy tnsnames配置到对应的目录。
配置完成后要保存网络配置。
可以通过Net Manager工具配置
10.常用数据类型
Oracle CHAR,VARCHAR,VARCHAR2类型的区别与使用
区别:
1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR
(20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2
(20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。
2.CHAR的效率比VARCHAR2的效率稍高。
3.目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以
后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储
空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。
何时该用CHAR,何时该用varchar2?
CHAR与VARCHAR2是一对矛盾的统一体,两者是互补的关系.
VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。
VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’
(Row
Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。
11.Oracle中伪列
伪列:Oracle 中伪列就像一个表列(表中的列),但是它并没有存储在表中,伪列可以从表中查询,但不能插入、更新和删除它们的值
常用的伪列有ROWID和ROWNUM
01.ROWID
ROWID的使用——快速删除重复的记录
解析:ROWID是数据的详细地址,通过rowid,oracle可以快速的定位某行具体的数据的位置。
ROWID可以分为物理rowid和逻辑rowid两种。普通的表中的rowid是物理rowid,索引组织表(IOT)的rowid是逻辑rowid。
当表中有大量重复数据时,可以使用ROWID快速删除重复的记录。
如何查询stuInfo表中自然排序的第3条记录?
解析:rownum只能对=1和<n进行判定,不能对>m进行判定,只能对<m进行判定,所以这时需要通过子查询解决问题。
select * from
(
select nauthor,rownum rn from news
)temp
where rn=3
ROWNUM
ROWNUM 是查询返回的结果集中行的序号,可以使用它来限制查询返回的行数
通过测试可知,Rownum只能对=1和<N进行筛选,如果>M不能筛选,如何规避。
通过子查询构建临时表,让伪列Rownun称为临时表中的列,然后限定条件使用伪列的
别名。
03.获取前N条数据的案例
问题:获取教师表中薪水排名第5的教师信息?
解析:
SELECT *
FROM (SELECT *
FROM teacher
ORDER BY sal DESC)
WHERE rownum<6;
04.获取教师表中薪水排名第5的教师信息?
按照sal降序排列
05.获取薪水从高到低排序的第5-9条记录?
Oracle分页
获取news表中第二页的数据(4-6条)
代码:select * from
(
select temp.*,rownum rn from
(
select emp.* from emp
order by sal desc
) temp
where rownum<=9
)
where rn>=5
Between and写法
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
)
WHERE RN BETWEEN 21 AND 40
结论:第一种分页效率高。原因:会将第二层查询的where直接推入最内层查询,而不能讲最外层的第三层查询推入最内容,这一切都要归结于Oracle优化机制CBO。
8.26 课堂自由笔记 还有考皮的老师笔录