Oracle使用笔记(二)
一、表空间
1、创建表空间
create tablespace db_test --表空间名
datafile 'D:\oracle\product\11.2.0\dbhome_1\oradata\orcl\test.dbf' --物理文件 表空间数据文件存放路径
size 50m --大小初始值
autoextend on --自动扩展
next 50m maxsize 20480m --每次扩展50m,最大为20480m(不能超过32G)
extent management local;
2、表空间扩容
(1).先查询表空间在物理磁盘上存放的位置
SELECT tablespace_name, file_id, file_name, round(bytes / (1024 * 1024), 0) total_space
FROM dba_data_files where tablespace_name='USERS' ORDER BY tablespace_name ;
查询所有表空间存放的物理路径(以sys的用户身份登录):
select name from v$datafile;
(2)改变数据文件的大小
alter database datafile '/oracle/app/oradata/mytablespace/my_01.dbf' resize 256M;
①方法一:手动改变已存在数据文件的大小
ALTER TABLESPACE app_data ADD DATAFILE
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP03.DBF' SIZE 20480M;
②方法二:允许已存在的数据文件自动增长
ALTER DATABASE DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP03.DBF'
AUTOEXTEND ON NEXT 100M MAXSIZE 32767M;
(3)验证
select bytes/1024/1024, tablespace_name from dba_data_files where tablespace_name='USERS';
当数据库表空间A已经到达最大值时32G时,可以新建表空间B接上,使得表空间A满时进入表空间B:
新建表空间SDE_TBS_2:
create tablespace SDE_TBS_2
datafile 'C:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\SDE_TBS_2.dbf'
size 50m
autoextend on
next 50m maxsize 32767m
extent management local; 表空间SDE_TBS_2接上SDE_TBS:
alter tablespace SDE_TBS
add datafile 'C:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\SDE_TBS_2.dbf' size 50m
autoextend on next 50m maxsize 32767m;
二、用户
1、创建用户——create user 用户名 identified by 口令[即密码];
create user tgb identified by test;
创建用户并关联表空间 —— create user 用户名 identified by 密码 default tablespace 表空间表;
create user study identified by study default tablespace data_test;
2、更改用户—— alter user 用户名 identified by 口令[改变的口令];
alter user tgb identified by 123456;
3、删除用户—— drop user 用户名;
drop user tgb;
若用户拥有对象,则不能直接删除,否则将返回一个错误值。指定关键字cascade,可删除用户所有的对象,然后再删除用户。—— drop user 用户名 cascade;
drop user tgb cascade;
4、用户角色
一般提供三种标准角色(role):connect/resource和dba.
①connect role(连接角色)
②resource role(资源角色)
③dba role(数据库管理员角色)
(1)授予用户角色—— grant connect, resource to 用户名;
grant connect, resource to tgb; ————授予用户连接角色和资源角色
(2)删除用户角色—— revoke connect, resource from 用户名;
revoke connect, resource from tgb; ————删除用户连接角色和资源角色
(3)创建自定义角色—— revoke connect, resource from 用户名;
①创建角色—— create role 角色名;
create role testRole;
②删除角色—— drop role 角色名;
drop role testRole;
③自定义角色授权—— grant select on class to 角色名;
grant select on class to testRole;
三、表
1、创建表
create table 表名(
字段名1 字段类型(长度) 是否为空,
字段名2 字段类型 是否为空 );
创建学生表:
create table t_stu(
stuid number(10) primary key,
stuname varchar2(20) not null,
stusex varchar2(2) default '男' check(stusex in('男','女'))
);
创建成绩表:
create table t_score(
scoreid number(10) primary key,
stuid number(10) references t_stu(stuid),
couseid number(10),
constraint fk_couseid foreign key(couseid)
references t_couse(couseid)
on delete cascade
);
创建表及约束:
create table INFOS( STUID varchar2(7) not null, --学号 学号=‘S’+班号+2位序号 STUNAME varchar2(10) not null, --姓名 GENDER varchar2(2) not null, --性别 AGE number(2) not null, --年龄 SEAT number(2) not null, --座号 ENROLLDATE date, --入学时间 STUADDRESS varchar2(50) default '地址不详', --住址 CLASSNO varchar2(4) not null, --班号 班号=学期序号+班级序号 ); / ① alter table INFOS add constraint pk_INFOS primary key(STUID) ② / alter table INFOS add constraint ck_INFOS_gender check(GENDER = '男' or GENDER = '女') ③ / alter table INFOS add constraint ck_INFOS_SEAT check(SEAT >=0 and SEAT <=50) ④ / alter table INFOS add constraint ck_INFOS_AGE check(AGE >=0 and AGE<=100) ⑤ / alter table INFOS add constraint ck_INFOS_CLASSNO check((CLASSNO >='' and CLASSNO<='') or (CLASSNO >='' and CLASSNO<='')) ⑥ / alter table INFOS add constraint un_STUNAME unique(STUNAME) ⑦ /
代码解析:
① 在Oracle代码中,“/”执行缓存区中的语句,由于缓冲区中只存储一条刚刚保存过语句,由于每条语句没有用分号结尾,只是保存在缓冲区,因此每条语句后面都有单独一行“/”。
② 创建一个主键约束。
③ 与 ④ ⑤ ⑥ ⑦一起创建各种check约束。其中⑦是唯一约束,表示该列值是唯一的,列中的值不能重复。
例子:
--建表
--student表+注释
create table student(
sno varchar2(3) not null,
sname varchar2(9) not null,
ssex varchar2(3) not null,
sbirthday date,
sclass varchar2(5),
constraint pk_student primary key(sno)
);
添加表注释:
COMMENT ON table student IS '学生信息表';
添加字段注释:
comment on column student.sno is '学号(主键)';
comment on column student.sname is '学生姓名';
comment on column student.ssex is '学生性别';
comment on column student.sbirthday is '学生出生年月日';
comment on column student.sclass is '学生所在班级';
--course表+注释
create table course(
cno varchar2(5) not null,
cname varchar2(15) not null,
tno varchar2(3) not null,
constraint pk_course primary key(cno)
);
comment on column course.cno is '课程编号(主键)';
comment on column course.cname is '课程名称';
comment on column course.tno is '教工编号(外键)';
--score表+注释
create table score(
sno varchar2(3) not null,
cno varchar2(5) not null,
degree number(4,1),
constraint pk_score primary key(sno,cno)
);
comment on column score.sno is '学号(主键)';
comment on column score.cno is '课程编号(主键)';
comment on column score.degree is '成绩';
--teacher表+注释
create table teacher(
tno varchar2(3) not null,
tname varchar2(9) not null,
tsex varchar2(3) not null,
tbirthday date,
prof varchar2(9),
depart varchar2(15) not null,
constraint pk_teacher primary key(tno)
);
comment on column teacher.tno is '教工编号(主键)';
comment on column teacher.tname is '教工姓名';
comment on column teacher.tsex is '教工性别';
comment on column teacher.tbirthday is '教工出生年月';
comment on column teacher.prof is '职称';
comment on column teacher.depart is '教工所在单位';
--添加外键
alter table course add constraint fk_tno foreign key(tno) references teacher(tno);
alter table score add constraint fk_sno foreign key(sno) references student(sno);
alter table score add constraint fk_cno foreign key(cno) references course(cno);
--添加数据
--Student表
insert into student(sno,sname,ssex,sbirthday,sclass) values(108,'曾华','男',to_date('1977-09-01','yyyy-mm-dd'),95033);
insert into student(sno,sname,ssex,sbirthday,sclass) values(105,'匡明','男',to_date('1975-10-02','yyyy-mm-dd'),95031);
insert into student(sno,sname,ssex,sbirthday,sclass) values(107,'王丽','女',to_date('1976-01-23','yyyy-mm-dd'),95033);
insert into student(sno,sname,ssex,sbirthday,sclass) values(101,'李军','男',to_date('1976-02-20','yyyy-mm-dd'),95033);
insert into student(sno,sname,ssex,sbirthday,sclass) values(109,'王芳','女',to_date('1975-02-10','yyyy-mm-dd'),95031);
insert into student(sno,sname,ssex,sbirthday,sclass) values(103,'陆君','男',to_date('1974-06-03','yyyy-mm-dd'),95031);
--teacher表
insert into teacher(tno,tname,tsex,tbirthday,prof,depart) values(804,'李诚','男',to_date('1958/12/02','yyyy-mm-dd'),'副教授','计算机系');
insert into teacher(tno,tname,tsex,tbirthday,prof,depart) values(856,'张旭','男',to_date('1969/03/12','yyyy-mm-dd'),'讲师','电子工程系');
insert into teacher(tno,tname,tsex,tbirthday,prof,depart) values(825,'王萍','女',to_date('1972/05/05','yyyy-mm-dd'),'助教','计算机系');
insert into teacher(tno,tname,tsex,tbirthday,prof,depart) values(831,'刘冰','女',to_date('1977/08/14','yyyy-mm-dd'),'助教','电子工程系');
--course表(添加外键后要先填teacher表中数据去满足外键约束)
insert into course(cno,cname,tno) values('3-105','计算机导论',825);
insert into course(cno,cname,tno) values('3-245','操作系统',804);
insert into course(cno,cname,tno) values('6-166','数字电路',856);
insert into course(cno,cname,tno) values('9-888','高等数学',831);
--score表(添加外键后要先填Student,course表中数据去满足外键约束)
insert into score(sno,cno,degree) values(103,'3-245',86);
insert into score(sno,cno,degree) values(105,'3-245',75);
insert into score(sno,cno,degree) values(109,'3-245',68);
insert into score(sno,cno,degree) values(103,'3-105',92);
insert into score(sno,cno,degree) values(105,'3-105',88);
insert into score(sno,cno,degree) values(109,'3-105',76);
insert into score(sno,cno,degree) values(101,'3-105',64);
insert into score(sno,cno,degree) values(107,'3-105',91);
insert into score(sno,cno,degree) values(108,'3-105',78);
insert into score(sno,cno,degree) values(101,'6-166',85);
insert into score(sno,cno,degree) values(107,'6-166',79);
insert into score(sno,cno,degree) values(108,'6-166',81);
2、创建主键与外键:
-增加主键
alter table 表名 add constraint 主键名 primary key (字段名1);
-增加外键:
alter table 表名 add constraint 外键名 foreign key (字段名1) references 关联表 (字段名2);
在建立表格时就指定主键和外键:
create table T_SCORE( EXAM_SCORE number(5,2), EXAM_DATE date, AUTOID number(10) not null, STU_ID char(5), SUB_ID char(3), constraint PK_T_SCORE primary key (AUTOID), constraint FK_T_SCORE_REFE foreign key (STU_ID) references T_STU (STU_ID));
3、查询某表是否存在
select count(*) from user_tables where table_name =upper('表名') //表名是区分大小写的,一定要与upper结合使用
其中:
dba_tables : 系统里所有的表的信息,需要DBA权限才能查询
all_tables : 当前用户有权限的表的信息(只要对某个表有任何权限,即可在此视图中看到表的相关信息)
user_tables: 当前用户名下的表的信息
所以以上3个视图中,user_tables的范围最小,all_tables看到的东西稍多一些,而dba_tables看到最多的信息
四、视图
视图是通过表生成的,当视图来源表中数据发生变化时,视图中的数据也会相应改变。
CREATE OR REPLACE VIEW 视图名称 查询条件
CREATE OR REPLACE VIEW public.a_rk AS
SELECT xzqhlist.ms,
xzqhlist.qx,
xzqhlist.sm,
xzqhlist.gc,
xzqhlist.al,
COALESCE(xzqh_hs.hs, 0::bigint) AS xzqh_hs,
COALESCE(xzqh_rks.rks, 0::bigint) AS xzqh_rks,
COALESCE(xzqh_rks_nan.rks_nan, 0::bigint) AS xzqh_rks_nan,
COALESCE(xzqh_rks_nv.rks_nv, 0::bigint) AS xzqh_rks_nv
FROM xzqhlist
LEFT JOIN xzqh_hs ON xzqhlist.al = xzqh_hs.al
LEFT JOIN xzqh_rks ON xzqhlist.al = xzqh_rks.al
LEFT JOIN xzqh_rks_nan ON xzqhlist.al = xzqh_rks_nan.al
LEFT JOIN xzqh_rks_nv ON xzqhlist.al = xzqh_rks_nv.al
ORDER BY xzqhlist.al;
Oracle使用笔记(二)的更多相关文章
- Oracle 学习笔记(二)
一.索引 表的数据是无序的,所以叫堆表(heap table),意思为随机存储数据.因为数据是随机存储的,所以在查询的时候需要全表扫描.索引就是将无序的数据有序化,这样就可以在查询数据的时候 减少数据 ...
- Oracle 学习笔记二
一.oracle通用函数vnl(a,b) 用于任何类型,如果a的值不为null返回a的值否则返回b的值 条件判断oracle中可以使用 case 字段 when 条件1 then 表达式1 when ...
- Oracle学习笔记二 初识Oracle(二)
Windows 中的 Oracle 服务 Oracle 9i的每个实例在Windows中都作为一项服务启动 服务是在 Windows 注册表中注册的可执行进程,由 Windows 操作系统管理 “服务 ...
- oracle学习笔记(二)
1. Oracle字符串操作 1.1. 字符串类型 1.1.1. CHAR和VARCHAR2类型 CHAR和VARCHAR2类型都是用来表示字符串数据类型,用来在表中存放字符串信息, 比如姓名.职业. ...
- Oracle学习笔记二
多表查询: 笛卡尔积: 实际上是两张表的乘积,但是在实际开发中没有太大意义 格式: select * from 表1,表2 select * from emp; select * from dept; ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
- Oracle学习笔记—数据字典和常用命令(转载)
转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...
- MyBatis笔记二:配置
MyBatis笔记二:配置 1.全局配置 1.properites 这个配置主要是引入我们的 properites 配置文件的: <properties resource="db.pr ...
- 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子
1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...
随机推荐
- JS设计模式(13)状态模式
什么是状态模式? 定义:将事物内部的每个状态分别封装成类,内部状态改变会产生不同行为. 主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为. 何时使用:代码中包含大 ...
- zabbix/自动发现规则
对于zabbix 我们并不陌生 他是开源的监控系统,现在的一部分企业都在用zabbix,今天给大家分享的是企业级监控zabbix的自动发现规则,有了它我们自定义健康的时候根据宏值可以让他自动发现对 ...
- 利用jQuery实现用户名片小动画
我爱撸码,撸码使我感到快乐!大家好,我是Counter.下面给大家介绍利用jQuery实现的小动画,非常的简便,如果有原生js操作的话,那么就不止这么多行了.至于CSS,个人觉得,这边CSS布局也蛮重 ...
- HDU 4010 Query on The Trees(动态树)
题意 给定一棵 \(n\) 个节点的树,每个点有点权.完成 \(m\) 个操作,操作四两种,连接 \((x,y)\) :提 \(x\) 为根,并断 \(y\) 与它的父节点:增加路径 \((x,y)\ ...
- CSS【03】:CSS 基础选择器与三种引入方式
基础选择器 选择器:css 选择 html 标签的一个工具,是将 css 与 html 建立起联系,那么 css 就可以控制 html 样式 选择器其实就是给 html 标签起名字 标签选择器 作用: ...
- cocos2d-js 小知识
由于自己是小白,决定把零碎的cocos2d-js知识记下来. 1. 列表容器listView,去掉滚动条 _listView.setScrollBarEnabled(false); 2. escap ...
- 安装xampp出错,windows找不到-n ?
安装xampp出错,windows找不到-n ? https://www.zhihu.com/question/47248695/answer/105042516 尝试解决步骤 1.安装Microso ...
- 关于ExpressionChangedAfterItHasBeenCheckedError
最近在stackoverflow上似乎每天都有一些关于angular报错‘ExpressionChangedAfterItHasBeenCheckedError’的问题.发生这些问题通常是由于angu ...
- async await与promise
1.async 的返回值一定是一个promise.,即使你的函数里没有return. // 测试async的返回值 async function testAsync() { } let result ...
- (转)决定系数R2
有些讲得太烂了,我来通俗的梳理一下R2. Calculating R-squared 在线性回归的模型下,我们可以计算SE(line), SE(y均值). The statistic R2descri ...