oracle(三)
/****************************表空间 start****************************/ --表空间的作用
/**
1.决定数据库实体的空间分配
2.设置数据库用户的空间份额
3.控制我们数据库部分数据的可用性
4.备份和恢复数据
**/
-- 如何创建表空间 对应的数据库的文件
/*create tablespace 表空间名称
datafile 路径名称
size 大小(默认值)
autoextend on next 大小 (递增的大小)
maxsize 大小(最大值)*/
/****创建一个表空间 jame_tablespace***/
create tablespace jame--数据库的名称
datafile 'E:\oracle\oradata\orcl\jame01.DBF' --路径名称 针对项目的数据库单独放一个路径
SIZE 20M; /***创建一个用户并且指定表空间 Array ***/
create user u_array
identified by u_array
default tablespace jame; /**将 connect resource 角色授权给u_array**/
grant connect,resource to u_array;
/*注意:在工作中,设计数据库的时候,表一定要跟用户放到一个表空间*/ /***查看表空间的名称及大小***/
/**
dba_tablespaces 表空间的信息视图
dba_data_files 表空间对应的文件信息
关系型数据库
**/
select t1.TABLESPACE_NAME,t2.BYTES
from dba_tablespaces t1, dba_data_files t2
where t1.TABLESPACE_NAME = t2.tablespace_name; /***查看物理文件的名称及大小***/
select * from dba_data_files /***查看表空间的使用情况***/
select * from dba_free_space; /**调整表空间**/
alter tablespace jame
add datafile 'E:\oracle\oradata\orcl\jame02.DBF'
size 20m
autoextend on next 2m
maxsize 50m;
--修改数据文件的大小
alter database datafile 'E:\oracle\oradata\orcl\jame02.DBF'
resize 50m; --删除数据文件
alter tablespace jame
drop datafile 'E:\oracle\oradata\orcl\jame02.DBF';
/****************************表空间 end****************************/
/****************************约束 start****************************/
--实现自动化部署自动化上线 自动化升级
/***
约束类型
1.主键约束(Primary)
2.唯一约束(unique)
3.检查约束(check)
4.非空约束(not null) --属于检查约束
5.外键约束(foreign key) ***/
create table t_student_con(
f_id int,
f_name varchar2(30),
f_sex char(2),
f_age int,
f_birth date default sysdate
);
--添加一个字段
alter table t_student_con
add f_email varchar2(30); --添加一个主键约束 不能为null 会自动添加唯一约束
alter table t_student_con
add constraint pk_std_id primary key (f_id); insert into t_student_con values(1,'Jaydy','M',23,to_date('1992-06-01','yyyy-mm-dd'),'jaydy@qq.com') insert into t_student_con values(1,'Jaydy','M',23,to_date('1992-06-01','yyyy-mm-dd'),'jaydy@qq.com')
--添加一个唯一约束
alter table t_student_con
add constraint uq_std_name unique(f_name);
insert into t_student_con values(2,'Jaydy','M',23,to_date('1992-06-01','yyyy-mm-dd'),'jaydy@qq.com')
--添加检查约束 可以自定义数据的完整性,保证字段的数据不存在约束条件之外的数据
alter table t_student_con
add constraint ck_std_sex check(f_sex='M' or f_sex='F') insert into t_student_con values(2,'Jaydy','S',23,to_date('1992-06-01','yyyy-mm-dd'),'jaydy@qq.com') --添加非空约束
/*不是很常用
alter table t_student_con add constraint nnull_std_email check( f_email is not null);
*/
--判断字段是否为null is null 判断是否不为null is not null
alter table t_student_con modify(f_email varchar2(30));
insert into t_student_con values(3,'思程','M',23,to_date('1992-06-01','yyyy-mm-dd'),null) ---外键约束
--考试信息表 100.00 95 95.5 95.55
create table t_student_exam(
e_id int,--主键
e_subject varchar2(30),--科目
e_score number(5,2),--分数
f_id int--学员信息的外键
);
--添加主键
alter table t_student_exam add constraint pk_exam_id primary key(e_id);
--添加外键
alter table t_student_exam add constraint fk_exam_student_id foreign key (f_id)
references t_student_con(f_id)
on delete cascade --在删除学生信息的时候,级联删除从表的成绩信息
; insert into t_student_exam values(2,'JavaSe',100,1);
select * from t_student_exam
--
delete t_student_con where f_id=1 --删除约束
alter table t_student_exam drop constraint fk_exam_student_id; /**在建表时同步加上**/
drop table t_student_con1;
create table t_student_con1(
f_id int primary key,
f_name varchar2(30),
f_sex char(2) check(f_sex='M' OR f_SEX='F'),
f_age int,
f_birth date default sysdate,
constraint ck_std_age check(f_age>=1 and f_age<=60)
);
DROP TABLE T_STUDENT_EXAM1;
create table t_student_exam1(
e_id int,--主键
e_subject varchar2(30),--科目
e_score number(5,2),--分数
f_id int REFERENCES T_STUDENT_CON(F_ID) ON DELETE CASCADE--学员信息的外键
); /****************************约束 end****************************/
alter user scott account unlock; /*简单查询 start*/
--1.查询姓名为SMITH的员工信息
--注意:在Oracle中内容区分大小写。 关键字、表名、字段名不区分大小写
select * from EMP WHERE ENAME='SMITH';
--2.查询20部门的所有员工信息
select * from emp where deptno=20
--3.查询所有JOB为CLERK的员工的员工号、员工姓名和部门号。
select empno,ename,deptno from emp where job='CLERK';
--4.查询奖金(COMM)高于工资(SAL)的员工信息。
select * from emp where comm>sal
--5.查询奖金高于工资的20%的员工信息。
select * from emp where comm>sal*0.2
--6.查询10号部门中JOB为MANAGER和 20部门中JOB为CLERK的员工的信息。
-- 组合条件
select * from emp where (job='MANAGER' and deptno=10) or (job='CLERK' AND DEPTNO=20)
--7.查询所有工种(job)不是MANAGER和CLERK且工资大于或等于2000的员工详细信息。
SELECT * FROM EMP WHERE JOB!='MANAGER' AND JOB!='CLERK' AND SAL>=2000
SELECT * FROM EMP WHERE JOB NOT IN ('MANAGER','CLERK') AND SAL>=2000
--8.查询所有工种(job)是MANAGER和CLERK且工资大于或等于2000的员工的详细信息。
SELECT * FROM EMP WHERE JOB IN ('MANAGER','CLERK') AND SAL>=2000
--10.查询员工名字中包含字母"S"的员工。
SELECT * FROM EMP WHERE ENAME LIKE '%S%';
--11.查询员工名字中不包含字母"S"的员工。
select * from emp where ename not like '%S%';
--12.查询员工姓名的第二字母为"M"的员工信息。
--%代表匹配任何数量的任何字符
--_代表任意单个字符
select * from emp where ename like '_M%'
--13.接收用户输入的员工姓名并且根据姓名查询该员工信息。
select * from emp where ename ='&员工姓名' AND SAL='&工资';
--统计表中所有的job类型
select distinct job from emp
--14.查询员工的姓名和薪水,并且按照薪水从高到低排序 order by 字段名 [desc|asc]
select ename,sal from emp order by sal desc
--15.查询员工的姓名和入职日期,并按入职日期从先到后进行排序。
select ename,hiredate from emp order by hiredate asc
--16.显示所有员工的姓名,工种,工资,和奖金按JOB降序排序,若JOB相同则按工资升序排序。
select ename,job,sal,comm from emp order by job desc,sal asc
/*使用的是scott用户下的emp 和dept表进行操作
1.查询姓名为SMITH的员工信息(注意大小写)
2.查询20部门的所有员工信息
3.查询所有JOB为CLERK的员工的员工号、员工姓名和部门号。
4.查询奖金(COMM)高于工资(SAL)的员工信息。
5.查询奖金高于工资的20%的员工信息。
6.查询10号部门中JOB为MANAGER和 20部门中JOB为CLERK的员工的信息。
7.查询所有工种(job)不是MANAGER和CLERK且工资大于或等于2000的员工详细信息。
8.查询所有工种(job)是MANAGER和CLERK且工资大于或等于2000的员工的详细信息。
9.查询有奖金的员工的不同工种(job)。
10.查询员工名字中包含字母"S"的员工。
11.查询员工名字中不包含字母"S"的员工。
12.查询员工姓名的第二字母为"M"的员工信息。
13.接收用户输入的员工姓名并且根据姓名查询该员工信息。
14.查询员工的姓名和薪水,并且按照薪水从高到低排序
15.查询员工的姓名和入职日期,并按入职日期从先到后进行排序。
16.显示所有员工的姓名,工种,工资,和奖金按JOB降序排序,若JOB相同则按工资升序排序。
*/
/*简单查询 end*/
oracle(三)的更多相关文章
- qlserver、Mysql、Oracle三种数据库的优缺点总结
这篇文章主要介绍了sqlserver.Mysql.Oracle三种数据库的优缺点总结,需要的朋友可以参考下 一.sqlserver优点:易用性.适合分布式组织的可伸缩性.用于决策支持的数据仓库功能 ...
- MySQL、SqlServer、Oracle 三种数据库的优缺点
MySQL.SqlServer.Oracle 三种数据库的优缺点 一.MySQL 优点: 缺点: 二.SqlServer 优点: 缺点: 三.Oracle 优点: 缺点: 一.MySQL 优点: 体积 ...
- Java JDBC Thin Driver 连接 Oracle 三种方法说明(转载)
一.JDBC 连接Oracle 说明 JDBC 的应用连接Oracle 遇到问题,错误如下: ORA-12505,TNS:listener does not currently know of SID ...
- Oracle三组难缠的hint no_unnest/unnest,push_subq,push_pred--平展化(转)
经常有人把这三个hint搞混,主如果因为对三种重写道理不清楚.特总结如下.(实验景象为10204)1. no_unnest, unnestunnest我们称为对子查询展开,顾名思义,就是别让子查询孤单 ...
- [转载]sqlserver、Mysql、Oracle三种数据库的优缺点总结
一.sqlserver优点:易用性.适合分布式组织的可伸缩性.用于决策支持的数据仓库功能.与许多其他服务器软件紧密关联的集成性.良好的性价比等:为数据管理与分析带来了灵活性,允许单位在快速变化的环境中 ...
- Oracle三个配置文件详解
先说转自https://www.2cto.com/database/201305/211705.html ORACLE的三个配置文件介绍 在oracle安装目录$HOME/network/admin下 ...
- Oracle 三种连接方式 NESTED LOOP HASH JOIN SORT MERGE JOIN
NESTED LOOP: 对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择.在嵌套循环中,内表被外表驱动,外表返回的每一行都要在内表中检索找到与它匹配的行,因此整个查询返回的结果集不能太大( ...
- oracle三个网络配置文件(listener.ora、tnsname.ora、sqlnet.ora)的作用
oracle网络配置 三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora ,都是放在$ORACLE_HOME\network\admin目录下. 1. sqlne ...
- oracle三个连接配置文件 listener.ora、sqlnet.ora、tnsnames.ora
关于PLSQL连接ORACLE配置字符串 首先要讲一下下面的一些知识 1.ORACLE_SID:(ORACLE SYSTEM IDENTIFIER) Oracle实例是由SGA和一组后台进程组成的,实 ...
- MySql、SqlServer、Oracle 三种数据库查询分页方式
SQL Server关于分页 SQL 的资料许多,有的使用存储过程,有的使用游标.本人不喜欢使用游标,我觉得它耗资.效率低:使用存储过程是个不错的选择,因为存储过程是颠末预编译的,执行效率高,也更灵活 ...
随机推荐
- Linux下eclipse及mysql安装,c++访问mysql数据库
这两天在学习linux下用c++访问mysql,碰到一堆问题,记录一下. 1.mysql安装: 公司的电脑是64位的,安装的是64为的RHEL4,安装如下三个包: MySQL-client-5.1.4 ...
- java多线程编程核心技术——第四章总结
第一节使用ReentrantLock类 1.1使用ReentrantLock实现同步:测试1 1.2使用ReentrantLock实现同步:测试2 1.3使用Condition实现等待/同步错误用法与 ...
- 机器学习:scikit-learn中算法的调用、封装并使用自己所写的算法
一.scikit-learn库中的kNN算法 scikit-learn库中,所有机器学习算法都是以面向对象的形式进行包装的: 所有scikit-learn库中机器学习算法的使用过程:调用.实例化.fi ...
- 杂项:BI(商业智能)
ylbtech-杂项:BI(商业智能) 商业智能(BI,Business Intelligence). BI(Business Intelligence)即商务智能,它是一套完整的解决方案,用来将企业 ...
- Weblogic反序列化漏洞(CVE-2017-10271)复现
通过POST发送xml数据对WebLogic Server组件的WLS Security子组件造成任意代码执行漏洞 影响版本:10.3.6.0.0,12.1.3.0.0,12.2.1.1.0,12.2 ...
- Ubuntu Linux 使用桂电校园网 上网
2016年9月1日 星期四 桂电校园网今天升级新的出校器,旧的出校器已经不能使用,所以本篇博客已经过期,下面的方法已经不能让Ubuntu使用桂电校园网上外网了.详细的原因,请到这个网站查看:校园网计费 ...
- linux中历史命令的一点发现
在LINUX中的终端中输入命令之后,这些命令会被存储到一个文件中,在终端中按下 键盘上的向上的箭头就会显示出以前敲击过的命令,最关键的是重起电脑之后依然有效的,这点和 windows上的CMD有着很大 ...
- HTML基础:
HTML是英文HyperText Markup Language的缩写,即超级文本标记语言,是用于描述网页文档的一种标记语言.HTMl是目前网络上应用最为广泛的语言,也是构成网页文档的主要语言.HTM ...
- Linux 静态库(.a)转换为动态库(.so)
Linux 静态库转换为动态库 参考 http://blog.csdn.net/moxuansheng/article/details/5812410 首先将.a文件转为.so文件是可以实现的 原因是 ...
- vim加亮和自动缩进
修改/etc/vimrc 添加 set cindent syntax on