时间:2021-07-01 10:21:17 帮助过:39人阅读
本部分介绍大型数据库和云计算相关概念,了解云数据库关系型数据库的基本常识
create tablespace test1 datafile ‘/u01/app/oracle/test1.dbf‘ size 200M;
drop tablespace test1 including contents and datafiles;
一个完整的Oracle数据库包括两个部分:数据库和数据库实例
??数据库是存储数据的多个物理文件的集合,如控制文件,数据文件,参数文件,日志文件,临时文件等 ,它是静态的、永久的,只要文件存在它就存在。数据库名(db_name)就是对数据库的标识。
??Oracle实例是一个进程。就是由内存空间和工作进程两部分组成。我们只能通过实例操作数据库,同一时间,一个实例只能打开一个数据库,也就是一个实例只能操作或管理一个数据库,但一个数据库可以被多个是实例打开。
??容器数据库是Oracle 12c引入的新特性,允许容器数据库(Container Database)中创建并维护多个数据库,这样的数据库被称为PDB(Pluggable Database)
??基本使用
# 以DBA连接
sqlplus sys/oracle@//localhost:1521/orcl as sysdba
# 查看当前数据库
show con_name
# 查看数据文件,日志文件,控制文件
select * from v$logfile;
select * from v$tablespace;
select * from v$controlfile;
# 切换数据库
alter session set container=pdb;
# 创建pdb
create pluggable database pdb1;
# 打开关闭指定的pdb
alter pluggable database pdb1 open;
# 切换pdb
select status from v$instance;
lsnrctl status 查看运行状态
lsnrctl stop 停止监听
lsnrctl start 启动监听
打开图形化工具,进行点着修改
数据对象:而单独的一张表就称为数据对象
数据字典:数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述
数据库存储结构:
	逻辑结构:
		1、数据库集群-Database cluster
    2、数据库-Database
    3、表空间-tablespace
  物理结构:
  	一个tablespace对应一个目录,存储在文件内,并建立索引
#创建用户
create user steveyu identified by "Root123.." default tablespace test;
#给用户授予权限
grant create session to steveyu;
grant connect,resource to steveyu;
grant dba to steveyu;
grant resource to steveyu;
#删除用户
drop user steveyu cascade;
1.创建表
create table A(
  id int,
  name varchar2(10),
  money number(7, 2),
  birth date,
  birthtime timestamp
)
2.删除表
drop table A;
3.查看表结构
desc A;
4.增加数据
insert into A values(1, ‘hi‘)
5.修改数据
update A set id=2 where name=‘hi‘;
6.查询数据
select * from A;
7.删除数据
delete from A where id=2;
8.约束
create table money(
	amount int primary key
);
create table people(
	id int not null,
	name varchar2(10),
	identity varchar2(20) unique,
	constraint pri_id primary key(id)
)
9.函数
字符函数
 --cancat  连接字符串
 select concat(‘hello‘,‘oracele‘) from dual;
 或者
 select ‘hello‘||‘oracele‘ from dual;
 --lpad() 左填充
 select lpad(‘abc‘,5,‘*‘) from dual;
 --rpad() 右填充
 select rpad(‘abc‘,5,‘*‘) from dual;
 --lower() 小写字母
 select lower(ename) from emp;
 --upper() 大写字母
 select upper(ename) from emp;
 --initcap() 首字母大写,其余小写
 select initcap(ename) from emp;
 --length() 字符串的长度
 select length(ename) from emp;
 --substr(字符串,开始位置,长度) 截取字符串
 select sunstr(ename,0,2) from emp;
 --instr(字符串,字符) 查看字符是否在字符串中存在,不存在返回0;存在则返回字符所在的的位置
 select instr(‘abc‘,‘a‘) from dual;
 --TRIM(字符 FROM 字符串)  去掉字符串首尾的字符
 select ename,trim(‘S‘ from ename) from emp;
 --to_char() 将其他类型转成字符类型
 select  to_char(hiredate,‘yyyy-mm-dd hh24:mi:ss‘) from emp;
 --查看是否有人今天过生日
 select * from emp where to_char(hiredate,‘mmdd‘)=to_char(sysdate,‘mmdd‘);
 --to_date() 把其他类型转换为日期类型
 update emp set hiredate=to_date(‘2009-10-1‘,‘yyyy-mm-dd‘) where empno=9000;
 --replace(字符串,字符串1,字符串2)  将字符串中的字符1替换成字符2;
 select replace(ename,‘S‘,‘*‘) from emp;
 --translate(字符串,字符串1,字符串2)  按位逐个替换
 select translate(ename,‘abc‘,‘123‘) ename from emp;
 --ASCII(char) 求字符的ascii码 
 select ascii(‘A‘) from dual;
日期函数
--ADD_MONTHS(日期,数字) 在已有的日期上加一定的月份;
select add_months(sysdate,1),sysdate from dual;  
--把天数加一
select sysdate,sysdate+1 from dual;
--用系统时间减去一个日期
select sysdate-to_date(‘2018-7-8‘,‘yyyy-mm-dd‘) from dual;
--LAST_DAY(日期) 求出该日期的最后一天.
select last_day(sysdate) from dual;
--MONTHS_BETWEEN(日期1,日期2) 求出两个月之间的天数(注意返回的天数为小数)
select months_between(sysdate,‘8-7月-2020‘) from dual;
--NEXT_DAY(d,char) 返回d指定的日期之后并满足char指定条件的第一个日期 
select next_day(sysdate,‘星期一‘) from dual;
--NVL(字符串,替换字符) 如果字符串为空则替换,否则不替换 
select ename,nvl(comm,0) from emp;
--如果不为空,就显示第一个数据,为空时显示第二个数据
select ename,nvl2(comm,0,100) from emp;
1.插入一条记录并显示
DECLARE
   Row_id UROWID;
   info    VARCHAR2(40);
BEGIN
       INSERT INTO dept VALUES (90, ‘SERVICE’, ‘BEIJING’)
         RETURNING rowid, dname||’:’||to_char(deptno)||’:’||loc
                     INTO row_id, info;
       DBMS_OUTPUT.PUT_LINE(‘ROWID:’||row_id);
       DBMS_OUTPUT.PUT_LINE(info);
END;


Oracle期末复习
标签:var logfile lazy app plsql tar status and 今天