流云追风 2020-07-04
本部分介绍大型数据库和云计算相关概念,了解云数据库关系型数据库的基本常识
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///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;