oracle数据库实验整理
一门0.5学分的选修课,学一学另一种著名的关系型数据库oracle的一些基本操作。
- TNS数据库监听端口1521
- MTS端口2258 ‘Oracle Services for Microsoft Transaction Server’ 的端口
- HTTP监听端口9090
千万别用8080!会和burp冲突,当时打比赛的时候直接一键删除了oracle,结果重装的时候差点被吓死。
https://blog.csdn.net/weixin_43620238/article/details/84497520
用管理员身份在cmd里删除注册表后才叫彻底删除。
重装后参考了这篇博客https://blog.csdn.net/qq_40391559/article/details/88854961,把http端口改成了9090。
1 | sc delete OracleServiceXE |
创建用户
1 | create user root identified by root; |
无用户名登录
1 | sqlplus / as sysdba; |
登录
1 | sqlplus username/pwd@ip:port/orcl as sysdba |
dba:Database Administrator数据库管理员
1 | select name,dbid from v$database;查看数据库名 |
developer图形化界面连接数据库:
将主机名修改为localhost即可。
oracle不会像mysql一样每一条都执行,需要在最后手动执行commit;
指令进行提交。(叫提交修改)
oracle表空间
从逻辑的角度来看,一个数据库(database)下面可以分多个表空间(tablespace);一个表空间下面又可以分多个段(segment);一个数据表要占一个段(segment),一个索引也要占一个段(segment )。 一个段(segment)由多个 区间(extent)组成,那么一个区间又由一组连续的数据块(data block)组成。这连续的数据块是在逻辑上是连续的,有可能在物理磁盘上是分散。
那么从物理的角度上看,一个表空间由多个数据文件组成,数据文件是实实在在存在的磁盘上的文件。这些文件是由oracle数据库操作系统的block 组成的。
查看表空间:
1 | select * from v$tablespace; |
可以发现是能对应上的。
查看每个表空间有哪些数据文件:
1 | desc dba_data_files; |
查看详细数据文件:
1 | select file_name,tablespace_name from dba_data_files; |
新建表空间
https://blog.csdn.net/starnight_cbj/article/details/6792364
修改字符集
查看当前字符集
1 | select userenv('language') from dual; |
实验要求要修改为ZHS16GBK,不知道为啥要往小了变。
create表
创建一个外键约束
1 | CREATE TABLE child_table ( |
ON DELETE CASCADE:如果父表中的一行被删除,那么子表中引用被删除行的所有行都将被删除。
ON DELETE SET NULL:如果父表中的一行被删除,那么对于外键列,子表中引用被删除行的所有行将被设置为NULL。
一个表可以有多个外键约束
drop表
1 | drop table countries; |
删表所有内容
1 | delete from abc; |
查询当前用户所有表:
1 | select * from all_tables where owner='OT' |
insert的时候前后加上
REM INSERTING into database1.”Users”
SET DEFINE OFF;
的原因:默认情况下,sql Plus处理’&’作为开始替换字符串的特殊字符。这可能会导致运行脚本的问题,而这些脚本恰好包含’&’由于其他原因:
如果您知道您的脚本包含(或可能包含)包含“&”的数据字符,并且您不想像上述那样执行替换行为,然后在运行脚本时使用set define off关闭该行为:
oracle tips
在Oracle里,表的别名不能用as,列的别名可以用as
oracle与mysql,sql server的区别
oracle多了一个实例的概念,他是物理内存里的数据结构,它由操作系统的多个后台进程和一个共享的内存池所组成。
如果我们想存取数据库上的数据,需要通过oracle实例。
oracle安全部分
安全和最小权限原则